RidgeRun / gst-interpipe

GStreamer plug-in for interpipeline communication
Other
143 stars 64 forks source link

gst-interpipe with v4l2src and io-mode=5 #156

Closed TallGuy74 closed 6 months ago

TallGuy74 commented 6 months ago

Hi,

I am trying to use interpipesink and interpipesrc in a gstreamer application without using gstd. The pipeline I would like to recreate in two parts is the following:

gst-launch-1.0 -v -e v4l2src device=/dev/video3 io-mode=dmabuf-import do-timestamp=true \ 
        ! video/x-bayer, width=2592, height=1944, framerate=30/1, format=grbg \
        ! tiovxisp sink_0::device=/dev/v4l-subdev2 sensor-name="SENSOR_ONSEMI_AR0521_VM017" \
                dcc-isp-file=/opt/imaging/ar0521/linear/dcc_viss.bin \
                sink_0::dcc-2a-file=/opt/imaging/ar0521/linear/dcc_2a.bin format-msb=7 \
        ! video/x-raw, format=NV12, width=2592, height=1944, framerate=30/1 \
        ! queue max-size-buffers=1 leaky=0 \
        ! tiperfoverlay title="Camera 1" \
        ! v4l2h265enc \
        ! "video/x-h265, profile=(string)main, level=(string)5.1" \
        ! rtph265pay config-interval=1 pt=96 \
        ! udpsink host=224.1.1.1 auto-multicast=true port=5000

I would like to split the pipeline into two parts with interpipesink and interpipesrc between tiovxisp and the queue.

The following pipeline kinda works:

gst-launch-1.0 -v -e v4l2src device=/dev/video3 io-mode=dmabuf-import do-timestamp=true \
        ! video/x-bayer, width=2592, height=1944, framerate=30/1, format=grbg \
        ! tiovxisp sink_0::device=/dev/v4l-subdev2 sensor-name="SENSOR_ONSEMI_AR0521_VM017" \
                dcc-isp-file=/opt/imaging/ar0521/linear/dcc_viss.bin \
                sink_0::dcc-2a-file=/opt/imaging/ar0521/linear/dcc_2a.bin format-msb=7 \
        ! video/x-raw, format=NV12, width=2592, height=1944, framerate=30/1 \
        ! interpipesink name=camera \
        interpipesrc listen-to=camera \
        ! queue max-size-buffers=1 leaky=0 \
        ! tiperfoverlay title="Camera 1" \
        ! v4l2h265enc \
        ! "video/x-h265, profile=(string)main, level=(string)5.1" \
        ! rtph265pay config-interval=1 pt=96 \
        ! udpsink host=224.1.1.1 auto-multicast=true port=5000

I get the following error messages:

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.049: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.050: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.051: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.051: gst_segment_to_running_time: assertion 'segment->format ==
format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.052: gst_segment_to_running_time: assertion 'segment->format ==
format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.052: gst_segment_to_running_time: assertion 'segment->format == format' failed
0:00:00.3 / 99:99:99.
(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.386: gst_segment_to_running_time: assertion 'segment->format == format' failed

When I implement this pipeline in C, with two separate pipelines, I get the following error message:

Error: No downstream pool to import from.

Any idea how to do this properly? Any help or pointers would be appreciated. I would like to be able to start/stop the streaming pipeline independently from the video capture pipeline.

Regards,

Bas Vermeulen

michaelgruner commented 6 months ago

Hi, try setting format=time in the interpipesrc

On 26 Mar 2024, at 03:08, TallGuy74 @.***> wrote:

Hi,

I am trying to use interpipesink and interpipesrc in a gstreamer application without using gstd. The pipeline I would like to recreate in two parts is the following:

gst-launch-1.0 -v -e v4l2src device=/dev/video3 io-mode=dmabuf-import do-timestamp=true \ ! video/x-bayer, width=2592, height=1944, framerate=30/1, format=grbg \ ! tiovxisp sink_0::device=/dev/v4l-subdev2 sensor-name="SENSOR_ONSEMI_AR0521_VM017" \ dcc-isp-file=/opt/imaging/ar0521/linear/dcc_viss.bin \ sink_0::dcc-2a-file=/opt/imaging/ar0521/linear/dcc_2a.bin format-msb=7 \ ! video/x-raw, format=NV12, width=2592, height=1944, framerate=30/1 \ ! queue max-size-buffers=1 leaky=0 \ ! tiperfoverlay title="Camera 1" \ ! v4l2h265enc \ ! "video/x-h265, profile=(string)main, level=(string)5.1" \ ! rtph265pay config-interval=1 pt=96 \ ! udpsink host=224.1.1.1 auto-multicast=true port=5000 I would like to split the pipeline into two parts with interpipesink and interpipesrc between tiovxisp and the queue.

The following pipeline kinda works:

gst-launch-1.0 -v -e v4l2src device=/dev/video3 io-mode=dmabuf-import do-timestamp=true \ ! video/x-bayer, width=2592, height=1944, framerate=30/1, format=grbg \ ! tiovxisp sink_0::device=/dev/v4l-subdev2 sensor-name="SENSOR_ONSEMI_AR0521_VM017" \ dcc-isp-file=/opt/imaging/ar0521/linear/dcc_viss.bin \ sink_0::dcc-2a-file=/opt/imaging/ar0521/linear/dcc_2a.bin format-msb=7 \ ! video/x-raw, format=NV12, width=2592, height=1944, framerate=30/1 \ ! interpipesink name=camera \ interpipesrc listen-to=camera \ ! queue max-size-buffers=1 leaky=0 \ ! tiperfoverlay title="Camera 1" \ ! v4l2h265enc \ ! "video/x-h265, profile=(string)main, level=(string)5.1" \ ! rtph265pay config-interval=1 pt=96 \ ! udpsink host=224.1.1.1 auto-multicast=true port=5000 I get the following error messages:

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.049: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.050: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.051: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.051: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL **: 09:59:34.052: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:57234): GStreamer-CRITICAL : 09:59:34.052: gst_segment_to_running_time: assertion 'segment->format == format' failed 0:00:00.3 / 99:99:99. (gst-launch-1.0:57234): GStreamer-CRITICAL : 09:59:34.386: gst_segment_to_running_time: assertion 'segment->format == format' failed When I implement this pipeline in C, with two separate pipelines, I get the following error message:

Error: No downstream pool to import from. Any idea how to do this properly? Any help or pointers would be appreciated. I would like to be able to start/stop the streaming pipeline independently from the video capture pipeline.

Regards,

Bas Vermeulen

— Reply to this email directly, view it on GitHub https://github.com/RidgeRun/gst-interpipe/issues/156, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFPIOF2LF45HZSCX4VDB3DY2EUGXAVCNFSM6AAAAABFIQHVZGVHI2DSMVQWIX3LMV43ASLTON2WKOZSGIYDONRUHEYTKOA. You are receiving this because you are subscribed to this thread.

TallGuy74 commented 6 months ago

I had an error in my other plugins, that caused this to go wrong.