Skip to content

Commit cdceba4

Browse files
committed
fix(v4l2): activate idle sink source on startup
1 parent c16235f commit cdceba4

2 files changed

Lines changed: 6 additions & 5 deletions

File tree

‎README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ options:
398398
--v4l2sink-format V4L2SINK_FORMAT
399399
V4L2 sink output format (default: YUY2)
400400
--v4l2sink-io-mode V4L2SINK_IO_MODE
401-
V4L2 sink I/O mode (default: 1/rw; use 0 for auto)
401+
V4L2 sink I/O mode (default: 0/auto; use 1 for rw)
402402
--debug Show added debug information from Gsteamer and other aspects of the app
403403
--buffer BUFFER The jitter buffer latency in milliseconds; default is 200ms, minimum is 10ms. (gst +v1.18)
404404
--password [PASSWORD]
@@ -808,7 +808,7 @@ Notes:
808808
- `--v4l2sink` accepts a numeric index (`0`) or a full path (`/dev/video2`).
809809
- If the specified device is not writable, the first writable `/dev/video*` is used.
810810
- When no remote video is available, a blue frame is output to keep the device alive.
811-
- The V4L2 sink path drops upstream allocation queries before `v4l2sink` and defaults to read/write I/O mode (`--v4l2sink-io-mode 1`) to avoid buffer-pool issues with some `v4l2loopback` versions. Use `--v4l2sink-io-mode 0` to restore GStreamer's auto mode.
811+
- The V4L2 sink path drops upstream allocation queries before `v4l2sink` to avoid buffer-pool issues with some `v4l2loopback` versions. The default V4L2 sink I/O mode is GStreamer's auto mode (`--v4l2sink-io-mode 0`); use `--v4l2sink-io-mode 1` to force read/write mode.
812812
- This is output-only; `--v4l2` is input capture.
813813

814814
## Hardware options

‎publish.py‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2963,7 +2963,7 @@ def __init__(self, params):
29632963
self.v4l2sink_height = clamp_int(getattr(params, "v4l2sink_height", 720), 16, 4320)
29642964
self.v4l2sink_fps = clamp_int(getattr(params, "v4l2sink_fps", 30), 1, 120)
29652965
self.v4l2sink_format = (getattr(params, "v4l2sink_format", "YUY2") or "YUY2").upper()
2966-
self.v4l2sink_io_mode = clamp_int(getattr(params, "v4l2sink_io_mode", 1), 0, 5)
2966+
self.v4l2sink_io_mode = clamp_int(getattr(params, "v4l2sink_io_mode", 0), 0, 5)
29672967
self.v4l2sink_device = resolve_v4l2sink_device(self.v4l2sink) if self.v4l2sink else None
29682968
self.v4l2sink_selector = None
29692969
self.v4l2sink_sink_bin = None
@@ -4646,7 +4646,7 @@ def _prime_viewer_display(self):
46464646
printwarn("V4L2 sink enabled but no writable device detected.")
46474647
else:
46484648
self._ensure_v4l2sink_chain()
4649-
if not self.v4l2sink_sources and self.v4l2sink_state != "idle":
4649+
if self.v4l2sink_state != "idle":
46504650
self._set_v4l2sink_mode("idle")
46514651
else:
46524652
self._ensure_display_chain()
@@ -4902,6 +4902,7 @@ def _ensure_v4l2sink_chain(self):
49024902
self._v4l2sink_chain_unavailable_reason = None
49034903

49044904
self._ensure_v4l2sink_splash_sources()
4905+
self._set_v4l2sink_mode("idle")
49054906
return self._v4l2sink_chain_config
49064907

49074908
def _ensure_v4l2sink_splash_sources(self):
@@ -12300,7 +12301,7 @@ async def main():
1230012301
parser.add_argument('--v4l2sink-height', type=int, default=720, help='V4L2 sink output height (default: 720)')
1230112302
parser.add_argument('--v4l2sink-fps', type=int, default=30, help='V4L2 sink output framerate (default: 30)')
1230212303
parser.add_argument('--v4l2sink-format', type=str, default='YUY2', help='V4L2 sink output format (default: YUY2)')
12303-
parser.add_argument('--v4l2sink-io-mode', type=int, default=1, help='V4L2 sink I/O mode (default: 1/rw; use 0 for auto)')
12304+
parser.add_argument('--v4l2sink-io-mode', type=int, default=0, help='V4L2 sink I/O mode (default: 0/auto; use 1 for rw)')
1230412305
parser.add_argument('--debug', action='store_true', help='Show added debug information from Gsteamer and other aspects of the app')
1230512306
parser.add_argument('--buffer', type=int, default=200, help='The jitter buffer latency in milliseconds; default is 200ms, minimum is 10ms. (gst +v1.18)')
1230612307
parser.add_argument('--auto-view-buffer', action='store_true', help='Viewer mode: dynamically raise jitter buffer latency when packet loss is detected (opt-in).')

0 commit comments

Comments
 (0)