Gstreamer strange issue with multiple video sources

Hello

We are experiencing a strange issue with gstreamer 1.0: We have a custom board where is plugged the Apalis imx6Q. On this custom board, we have 2 video sources capabilities: one HD-SDI input (gs1661) and one analog input (adv7280).

After flashing the whole images (run update from uboot) on the apalis with the device tree reflecting these 2 video inputs, we can’t launch a gstreamer capture on any of our video source: the message *(gst-plugin-scanner:634): GStreamer-CRITICAL *: passed ‘0’ as denominator for `GstFraction’ is looping. Even if we launch gst-inspect this message is looping!

The workaround is to reboot with a device tree with only one video source (video source choices no matters). Then we can launch correctly a video capture. Then we boot again with the device tree with the 2 video source and everything work fine: we can capture the 2 video sources

hi @axel

Could you provide the version of the hardware and software of your module?

the message (gst-plugin-scanner:634): GStreamer-CRITICAL : passed ‘0’ as denominator for `GstFraction’ is looping. Even if we launch gst-inspect this message is looping!

Which commands did you use exactly?

The workaround is to reboot with a device tree with only one video source (video source choices no matters). Then we can launch correctly a video capture. Then we boot again with the device tree with the 2 video source and everything work fine: we can capture the 2 video sources

Did you do a soft reboot or powercycle?
Can you share a dmesg log when doing power cycle and soft reboot?

Best regards, Jaski

hello jaski

Our module is the Apalis imx6Q 2GB IT V1.1B

We build our software based on angstrom-lxde-image. The issue is observed on both 2.7b4 and the last release 2.8b5

The issue occurs after flashing our whole image with a device tree describing our 2 video source capabilities:

 v4l2_cap_0 { //adv7280
        compatible = "fsl,imx6q-v4l2-capture";
        ipu_id = <0>;
        csi_id = <0>;
        mclk_source = <0>;
        status = "okay";
    };
    v4l2_cap_1 { // gs1661a
        compatible = "fsl,imx6q-v4l2-capture";
        ipu_id = <1>;
        csi_id = <1>;
        mclk_source = <0>;
        status = "okay";
    };

In this case, we can’t launch any gstreamer commands, even commands which do not involved our video inputs. For example we can’t display a picture:
gst-launch-1.0 filesrc location=/home/root/NoHDSDI.jpg ! jpegdec ! imagefreeze ! imxg2dvideosink -e
And as I said we can’t even launch gst-inspect

The only workaround we found at this time is to build a new device tree with only one video source described (no matter which one)

v4l2_cap_0 { //adv7280
        compatible = "fsl,imx6q-v4l2-capture";
        ipu_id = <0>;
        csi_id = <0>; 
        mclk_source = <0>;
        status = "disabled";
    };
    v4l2_cap_1 { // gs1661a
        compatible = "fsl,imx6q-v4l2-capture";
        ipu_id = <1>;
        csi_id = <1>;
        mclk_source = <0>;
        status = "okay";
    };

This new dtb is directly paste into embedded flash (/media/mmcblk0p1/) from linux.

We reboot with Linux reboot command (no hard reboot) and then gstreamer works fine.

We paste then the original dtb with our 2 video inputs and after a Linux reboot gstreamer works fine

The dmesg log before workaround and after shows only that one input source is missing

This is very strange. Could you provide the changes to the devicetree files and the dmesg log?

What is the output of v4l2-ctl --list-devices?
And what is the output of v4l2-ctl -d /dev/video* where for * you put the number which got from the list devices command?