<https://www.amazon.fr/gp/product/B08CGVSRQV/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1>

My system:

gopro3 => microHDMI to HDMI => HDMI to USB3 (my purchase above) => my computer.

with:

```
gst-launch-1.0 -v v4l2src! video/x-raw, framerate=30/1 ! xvimagesink

```

Terminal:

```
...
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, framerate=(fraction)30/1, format=(string)YUY2, width=(int)720, height=(int)480, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)2:4:5:1, interlace-mode=(string)progressive
...

```

=> **width=(int)720, height=(int)480**

My gopro gives me 1920/1080/60, and by just changing fps capture, resolution is automatically adapted.

If, for example, I force resolution:

```
gst-launch-1.0 -v v4l2src! video/x-raw, framerate=30/1,width=1920,height=1080! xvimagesink

```

gst-launch or opencv always crash:

```
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.000049118
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

```

except for 1920/1080/**5fps** or 1280/720/**10fps** or 800/600/**20fps** or 720/480/**30fps**, 60 fps is impossible. But my gopro3 black sends me 1920/1080/60fps, any explanation ?? I really don't understand what happen. gopro is able to do this, cable is able to do this, capture card is able to do this, my computer is able to do this.....

Morover, in 1080p, about 1 second latency and 5 fps, in 720p about 0.5 second latency, for 800/600 latency is ok, and 480p latency is about 0.2 seconds (perfect for me).

For opencv, that works as bad as gst-streamer:

```
cv::VideoCapture video_capture(0, cv::CAP_V4L2);

```

displays 480p, very fluent
and

```
cv::VideoCapture video_capture(0, cv::CAP_GSTREAMER);

```

displays 1080p with strong latency

where am I doing a mistake? I don't understand.
Is my capture card just bad ?
Are my parameters in gst-launch-1.0 bad ? (That's sure i've got a poor understood of gstreamer)