Skip to content

Commit

Permalink
Added I420 button
Browse files Browse the repository at this point in the history
  • Loading branch information
niknah committed Sep 23, 2021
1 parent 9779fe3 commit 7889b8a
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 9 deletions.
33 changes: 33 additions & 0 deletions data/ui/preferences.ui
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,39 @@ audio-volume-medium</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label33">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Use I420 color:</property>
<property name="justify">right</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="switch_i420">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="has_tooltip">True</property>
<property name="tooltip_markup" translatable="yes">Toggle I420 (Firefox compatibility)</property>
<property name="tooltip_text" translatable="yes">Toggle I420 (Firefox compatibility)</property>
<property name="halign">start</property>
<property name="valign">center</property>
<signal name="notify::active" handler="cb_switch_i420" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
Expand Down
1 change: 1 addition & 0 deletions kazam/backend/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class KazamConfig(object):
"capture_borders_pic": "True",
"framerate": "15",
"countdown_splash": "True",
"i420": "False",
"last_x": "60",
"last_y": "25",
"advanced": "0",
Expand Down
26 changes: 17 additions & 9 deletions kazam/backend/gstreamer.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,9 +249,10 @@ def setup_video_source(self):
#
# Broadcasting forces H264 codec
#
self.video_convert_caps = Gst.caps_from_string("video/x-raw, format=(string)I420")
self.f_video_convert_caps = Gst.ElementFactory.make("capsfilter", "vid_convert_caps")
self.f_video_convert_caps.set_property("caps", self.video_convert_caps)
if prefs.i420 == True:
self.video_convert_caps = Gst.caps_from_string("video/x-raw, format=(string)I420")
self.f_video_convert_caps = Gst.ElementFactory.make("capsfilter", "vid_convert_caps")
self.f_video_convert_caps.set_property("caps", self.video_convert_caps)
if self.mode == MODE_BROADCAST:

self.video_bitrate = 5800
Expand Down Expand Up @@ -441,7 +442,7 @@ def setup_pipeline(self):
if prefs.codec is not CODEC_RAW or self.mode == MODE_BROADCAST:
self.pipeline.add(self.video_enc)

if self.mode == MODE_SCREENCAST:
if prefs.i420 == True:
self.pipeline.add(self.f_video_convert_caps)
if self.mode == MODE_BROADCAST:
self.pipeline.add(self.f_video_convert_caps)
Expand Down Expand Up @@ -536,18 +537,25 @@ def setup_links(self):
else:
logger.debug("Linking Video")
if self.mode == MODE_BROADCAST:
ret = self.video_convert.link(self.f_video_convert_caps)
logger.debug("Link video_convert f_video_convert_caps {}".format(ret))
ret = self.f_video_convert_caps.link(self.video_enc)
logger.debug("Link f_video_convert_caps -> video_enc {}".format(ret))
if prefs.i420 == True:
# make H264 use I420 because the default 444 it can't be viewed in firefox
# https://github.com/hzbd/kazam/issues/22
ret = self.video_convert.link(self.f_video_convert_caps)
logger.debug("Link video_convert f_video_convert_caps {}".format(ret))
ret = self.f_video_convert_caps.link(self.video_enc)
logger.debug("Link f_video_convert_caps -> video_enc {}".format(ret))
else:
ret = self.video_convert.link(self.f_video_enc)
logger.debug("Link video_convert -> video_enc {}".format(ret))

ret = self.video_enc.link(self.video_parse)
logger.debug("Link video_enc -> video_parse {}".format(ret))
ret = self.video_parse.link(self.f_video_parse_caps)
logger.debug("Link video_parse -> f_video_parse_caps {}".format(ret))
ret = self.f_video_parse_caps.link(self.q_video_out)
logger.debug("Link f_video_parse_caps -> q_video_out {}".format(ret))
else:
if self.mode == MODE_SCREENCAST:
if prefs.i420 == True:
ret = self.video_convert.link(self.f_video_convert_caps)
logger.debug("Link video_convert f_video_convert_caps {}".format(ret))
ret = self.f_video_convert_caps.link(self.video_enc)
Expand Down
3 changes: 3 additions & 0 deletions kazam/backend/prefs.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ def __init__(self):
self.microphone_volume = 0

self.countdown_splash = True
self.i420 = False
self.silent_start = False

self.capture_keys = False
Expand Down Expand Up @@ -256,6 +257,7 @@ def read_config(self):
self.capture_borders_pic = self.config.getboolean("main", "capture_borders_pic")

self.countdown_splash = self.config.getboolean("main", "countdown_splash")
self.i420 = self.config.getboolean("main", "i420")

self.autosave_video = self.config.getboolean("main", "autosave_video")
self.autosave_video_dir = self.config.get("main", "autosave_video_dir")
Expand Down Expand Up @@ -335,6 +337,7 @@ def save_config(self):
self.config.set("main", "webcam_source", self.webcam_source)

self.config.set("main", "countdown_splash", self.countdown_splash)
self.config.set("main", "i420", self.i420)
self.config.set("main", "counter", self.countdown_timer)
self.config.set("main", "codec", self.codec)
self.config.set("main", "framerate", self.framerate)
Expand Down
9 changes: 9 additions & 0 deletions kazam/frontend/preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,11 @@ def restore_UI(self):
else:
self.switch_countdown_splash.set_active(False)

if prefs.i420:
self.switch_i420.set_active(True)
else:
self.switch_i420.set_active(False)

self.spinbutton_framerate.set_value(prefs.framerate)

if prefs.autosave_video:
Expand Down Expand Up @@ -264,6 +269,10 @@ def cb_switch_countdown_splash(self, widget, user_data):
prefs.countdown_splash = widget.get_active()
logger.debug("Countdown splash: {0}.".format(prefs.countdown_splash))

def cb_switch_i420(self, widget, user_data):
prefs.i420 = widget.get_active()
logger.debug("I420: {0}.".format(prefs.i420))

def cb_audio_changed(self, widget):
logger.debug("Audio Changed.")
prefs.audio_source = self.combobox_audio.get_active()
Expand Down

0 comments on commit 7889b8a

Please sign in to comment.