Workaround
Signed-off-by: Vasiliy Doylov <nekocwd@mainlining.org>
This commit is contained in:
parent
be1177bd5f
commit
4763aea337
2 changed files with 14 additions and 10 deletions
15
src/gst.vala
15
src/gst.vala
|
@ -83,7 +83,9 @@ public class EyeNeko.Gstreamer : Object {
|
||||||
foreach (var device in pwprovider.get_devices ()) {
|
foreach (var device in pwprovider.get_devices ()) {
|
||||||
if (device.has_classes ("Video/Source")) {
|
if (device.has_classes ("Video/Source")) {
|
||||||
cameras += new Camera (device);
|
cameras += new Camera (device);
|
||||||
message ("Camera appended %s:", device.display_name);
|
var id = Value (typeof (string));
|
||||||
|
device.get_property ("serial", ref id);
|
||||||
|
message ("Camera appended %s:", id.get_string ());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -127,7 +129,7 @@ public class EyeNeko.Gstreamer : Object {
|
||||||
|
|
||||||
public void start_stream_from (Camera camera) {
|
public void start_stream_from (Camera camera) {
|
||||||
camerabin.set_state (Gst.State.NULL);
|
camerabin.set_state (Gst.State.NULL);
|
||||||
|
message ("Stream start");
|
||||||
current_camera = camera;
|
current_camera = camera;
|
||||||
camerasrc_wrapper.set_property
|
camerasrc_wrapper.set_property
|
||||||
("video-source",
|
("video-source",
|
||||||
|
@ -163,9 +165,11 @@ public class EyeNeko.Gstreamer : Object {
|
||||||
Gst.ElementFactory.make ("glupload"),
|
Gst.ElementFactory.make ("glupload"),
|
||||||
color_correction_matrix,
|
color_correction_matrix,
|
||||||
downscale,
|
downscale,
|
||||||
Gst.ElementFactory.make ("gldownload")
|
Gst.ElementFactory.make ("gldownload"),
|
||||||
|
Gst.ElementFactory.make ("videoconvert")
|
||||||
));
|
));
|
||||||
camerabin.set_property ("image-filter", Gst.ElementFactory.make ("queue"));
|
camerabin.set_property ("viewfinder-filter", Gst.ElementFactory.make ("videoconvert"));
|
||||||
|
camerabin.set_property ("image-filter", Gst.ElementFactory.make ("videoconvert"));
|
||||||
|
|
||||||
|
|
||||||
camerabin.set_property ("video-filter",
|
camerabin.set_property ("video-filter",
|
||||||
|
@ -185,7 +189,8 @@ public class EyeNeko.Gstreamer : Object {
|
||||||
|
|
||||||
notify["camerabin-mode"].connect (() => {
|
notify["camerabin-mode"].connect (() => {
|
||||||
downscale.max_size = camerabin_mode == CameraBinMode.VIDEO ? downscale_video_to : downscale_photo_to;
|
downscale.max_size = camerabin_mode == CameraBinMode.VIDEO ? downscale_video_to : downscale_photo_to;
|
||||||
start_stream_from (current_camera);
|
if (current_camera != null)
|
||||||
|
start_stream_from (current_camera);
|
||||||
});
|
});
|
||||||
|
|
||||||
camerabin.bus.add_watch (0, bus_callback);
|
camerabin.bus.add_watch (0, bus_callback);
|
||||||
|
|
|
@ -48,7 +48,7 @@ public class EyeNeko.Window : Adw.ApplicationWindow {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (Gstreamer.Camera.get_all ().length > 0)
|
if (Gstreamer.Camera.get_all ().length > 0)
|
||||||
camera_path = Gstreamer.Camera.get_all ()[0].device.get_path_string ();
|
camera_path = Gstreamer.Camera.get_all ()[int.parse (Env.get_variable_or ("CAM_N", "0"))].device.get_path_string ();
|
||||||
|
|
||||||
var change_video_source_action = new PropertyAction ("change-video-source", this, "camera-path");
|
var change_video_source_action = new PropertyAction ("change-video-source", this, "camera-path");
|
||||||
add_action (change_video_source_action);
|
add_action (change_video_source_action);
|
||||||
|
@ -77,13 +77,9 @@ public class EyeNeko.Window : Adw.ApplicationWindow {
|
||||||
overlay.add_overlay (toolbar);
|
overlay.add_overlay (toolbar);
|
||||||
|
|
||||||
|
|
||||||
setup_video_source_changer ();
|
|
||||||
|
|
||||||
viewfinder.set_paintable (Gstreamer.instance.viewfinder_paintable);
|
viewfinder.set_paintable (Gstreamer.instance.viewfinder_paintable);
|
||||||
Gstreamer.instance.start_stream_from (Gstreamer.Camera.get_all ()[0]);
|
|
||||||
|
|
||||||
capture_btn.clicked.connect (() => {
|
capture_btn.clicked.connect (() => {
|
||||||
message ("%d %d", Gstreamer.instance.camerabin_mode, (int) Gstreamer.instance.ready);
|
|
||||||
if (Gstreamer.instance.camerabin_mode == Gstreamer.CameraBinMode.VIDEO && !Gstreamer.instance.ready) {
|
if (Gstreamer.instance.camerabin_mode == Gstreamer.CameraBinMode.VIDEO && !Gstreamer.instance.ready) {
|
||||||
Gstreamer.instance.stop_capture ();
|
Gstreamer.instance.stop_capture ();
|
||||||
} else {
|
} else {
|
||||||
|
@ -103,5 +99,8 @@ public class EyeNeko.Window : Adw.ApplicationWindow {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
camera_mode.active_name = Env.get_variable_or ("CAM_M", "photo");
|
||||||
|
|
||||||
|
setup_video_source_changer ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue