gst-plugins-bad issueshttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues2021-09-24T14:36:08Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/666ksvideosrc: Device Monitor shows "video/x-raw,format=(string)H264" caps inste...2021-09-24T14:36:08ZBugzilla Migration Userksvideosrc: Device Monitor shows "video/x-raw,format=(string)H264" caps instead of "video/x-h264" for Logitech C920## Submitted by Marcos Kintschner
**[Link to original bug (#793939)](https://bugzilla.gnome.org/show_bug.cgi?id=793939)**
## Description
I'm using a webcam (Logitech C920) on Windows 10. Device monitor shows some caps containing "vi...## Submitted by Marcos Kintschner
**[Link to original bug (#793939)](https://bugzilla.gnome.org/show_bug.cgi?id=793939)**
## Description
I'm using a webcam (Logitech C920) on Windows 10. Device monitor shows some caps containing "video/x-raw, format(string)=H264", which AFAIK is not valid (it should be "video/x-h264").
Here are the full caps I got from device monitor:
___
gst-device-monitor-1.0.exe
Probing devices...
Device found:
name : HD Pro Webcam C920
class : Video/Source
caps : video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)160, height=(int)90, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)160, height=(int)120, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)176, height=(int)144, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)12/11;
video/x-raw, format=(string)YUY2, width=(int)320, height=(int)180, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)320, height=(int)240, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)352, height=(int)288, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)12/11;
video/x-raw, format=(string)YUY2, width=(int)432, height=(int)240, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)640, height=(int)360, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)800, height=(int)448, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)800, height=(int)600, framerate=(fraction)[ 5/1, 24/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)864, height=(int)480, framerate=(fraction)[ 5/1, 24/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)960, height=(int)720, framerate=(fraction)[ 5/1, 15/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)1024, height=(int)576, framerate=(fraction)[ 5/1, 15/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, framerate=(fraction)[ 5/1, 10/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)1600, height=(int)896, framerate=(fraction)[ 5/1, 15/2 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, framerate=(fraction)5/1, pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)2304, height=(int)1296, framerate=(fraction)2/1, pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YUY2, width=(int)2304, height=(int)1536, framerate=(fraction)2/1, pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)640, height=(int)480, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)160, height=(int)90, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)160, height=(int)120, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)176, height=(int)144, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)12/11;
video/x-raw, format=(string)H264, width=(int)320, height=(int)180, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)320, height=(int)240, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)352, height=(int)288, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)12/11;
video/x-raw, format=(string)H264, width=(int)432, height=(int)240, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)640, height=(int)360, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)800, height=(int)448, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)800, height=(int)600, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)864, height=(int)480, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)960, height=(int)720, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)1024, height=(int)576, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)1280, height=(int)720, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)1600, height=(int)896, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)H264, width=(int)1920, height=(int)1080, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)640, height=(int)480, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)160, height=(int)90, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)160, height=(int)120, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)176, height=(int)144, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)12/11;
image/jpeg, width=(int)320, height=(int)180, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)320, height=(int)240, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)352, height=(int)288, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)12/11;
image/jpeg, width=(int)432, height=(int)240, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)640, height=(int)360, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)800, height=(int)448, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)800, height=(int)600, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)864, height=(int)480, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)960, height=(int)720, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)1024, height=(int)576, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)1600, height=(int)896, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
image/jpeg, width=(int)1920, height=(int)1080, framerate=(fraction)[ 5/1, 30/1 ], pixel-aspect-ratio=(fraction)1/1;
gst-launch-1.0 ksvideosrc device-path="\\\\\?\\usb\#vid_046d\&pid_082d\&mi_00\#7\&38a25b45\&0\&0000\#\{6994ad05-93ef-11d0-a3cc-00a0c9223196\}\\global" ! ...
Version: 1.xhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1213d3d11decoder: Support DXGI_FORMAT_420_OPAQUE format2021-09-24T14:38:07ZSeungha Yangseungha@centricular.comd3d11decoder: Support DXGI_FORMAT_420_OPAQUE formatSee the ffmpeg commit https://github.com/FFmpeg/FFmpeg/commit/8d7fdba7b8670db9dd5023dde6fe3a06674933c4
I tested the `DXGI_FORMAT_420_OPAQUE` format on Intel platform, then there seems to be no benefit in terms of performance or resource...See the ffmpeg commit https://github.com/FFmpeg/FFmpeg/commit/8d7fdba7b8670db9dd5023dde6fe3a06674933c4
I tested the `DXGI_FORMAT_420_OPAQUE` format on Intel platform, then there seems to be no benefit in terms of performance or resources in the desktop environment with `d3d11videoprocessor`/`d3d11videosink`. I had a hopeful guess that it could be more h/w friendly memory layout than NV12 but I didn't see any benefit of `DXGI_FORMAT_420_OPAQUE` format. However, supporting the format may be valuable in terms of extending the coverage of gstd3d11decoder.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1218d3d11decoder: Support interop with ANGLE for zero-copying2021-09-24T14:38:08ZSeungha Yangseungha@centricular.comd3d11decoder: Support interop with ANGLE for zero-copyingThe implementation is already in chromium and we can get a lot of ideas from it.The implementation is already in chromium and we can get a lot of ideas from it.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1320wasapisrc: fails to negotiate stream when applying a mix matrix2021-09-24T14:38:26ZJeff Sipkowasapisrc: fails to negotiate stream when applying a mix matrix**Summary:** When using the wasapisrc plugin, I am able to successfully set up a pipeline as follows:
`wasapisrc ! queue ! audioconvert ! audioresample ! opusenc ! fakesink`
However, when adding the mix-matrix parameter to audioconve...**Summary:** When using the wasapisrc plugin, I am able to successfully set up a pipeline as follows:
`wasapisrc ! queue ! audioconvert ! audioresample ! opusenc ! fakesink`
However, when adding the mix-matrix parameter to audioconvert, as in
`wasapisrc ! queue ! audioconvert mix-matrix="<<(float)1, (float)0>, <(float)0, (float)1>>" ! audioresample ! opusenc ! fakesink`
The pipeline fails with the output
```
ERROR: from element /GstPipeline:pipeline0/GstWasapiSrc:wasapisrc0: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstWasapiSrc:wasapisrc0:
streaming stopped, reason not-negotiated (-4)
```
Full log attached
[mix_matrix.log](/uploads/ea00140487b1af5919fb8806ff5f8bac/mix_matrix.log)
**Environment:** Windows 10https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1336mfvideoenc: Add support for ROI videometa2021-09-24T14:38:31ZSeungha Yangseungha@centricular.commfvideoenc: Add support for ROI videometaSimilar to ROI + delta-qp implementation in msdk and vaapi, `mediafoundation` video encoder can support delta-qp for ROI.
See https://docs.microsoft.com/en-us/windows/win32/medfound/codecapi-avencvideoroienabled and https://docs.microso...Similar to ROI + delta-qp implementation in msdk and vaapi, `mediafoundation` video encoder can support delta-qp for ROI.
See https://docs.microsoft.com/en-us/windows/win32/medfound/codecapi-avencvideoroienabled and https://docs.microsoft.com/en-us/windows/win32/medfound/mfsampleextension-roirectanglehttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1337d3d11desktopdupsrc: Expose dirty-rect area via ROI video meta2021-09-24T14:38:32ZSeungha Yangseungha@centricular.comd3d11desktopdupsrc: Expose dirty-rect area via ROI video metaThe dirty-rect concept in dxgiscreencapsrc (Desktop Duplication API) can be shared with d3d11videosink (both are based on DXGI!!). Note that d3d11videosink is utilizing the direty-rect concept in a very limited way while swapchaining. Bu...The dirty-rect concept in dxgiscreencapsrc (Desktop Duplication API) can be shared with d3d11videosink (both are based on DXGI!!). Note that d3d11videosink is utilizing the direty-rect concept in a very limited way while swapchaining. But if the capture side dirty-rect information can be forwarded to d3d11videosink, we might be able to save more GPU resource while swapchaining.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1359mediafoundation: Implement generic URI source2021-09-24T14:38:35ZSeungha Yangseungha@centricular.commediafoundation: Implement generic URI source`GstMFSourceReader` was introduced for an internal of `mfvideosrc` element to to read data from video capture device.
We can extend the usage of `GstMFSourceReader` to read data from any URI (http, file or so) if it's supported by Media...`GstMFSourceReader` was introduced for an internal of `mfvideosrc` element to to read data from video capture device.
We can extend the usage of `GstMFSourceReader` to read data from any URI (http, file or so) if it's supported by MediaFoundation.
Moreover, `GstMFSourceReader` can be enhanced to be able to read data from UWP file object which would be a more generic
approach than https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1001
See also https://docs.microsoft.com/en-us/windows/win32/api/mfreadwrite/nn-mfreadwrite-imfsourcereaderhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1423wasapi2src: Could not open resource for reading2021-09-24T14:38:47ZRoman Shpuntovwasapi2src: Could not open resource for readingI tried to capture audio from device, but when I provide `device` property for `wasapi2src` I have:
```
Could not open resource for reading., debugging information: ../sys/wasapi2/gstwasapi2src.c(351): gst_wasapi2_src_open (): /GstPipeli...I tried to capture audio from device, but when I provide `device` property for `wasapi2src` I have:
```
Could not open resource for reading., debugging information: ../sys/wasapi2/gstwasapi2src.c(351): gst_wasapi2_src_open (): /GstPipeline:pipeline/GstWasapi2Src:audio_source_capture:
Failed to open
```
I have device id (field `device.id`) value extracted from (`GstStructure`) properties on enum devices:
```
"\\\\\?\\SWD\#MMDEVAPI\#\{0.0.1.00000000\}.\{dfac857a-c87d-4e0a-84b1-03c250a88014\}\#\{2eef81be-33fa-4800-9670-1cd474972c3f\}"
```
I tried also:
```
"{0.0.1.00000000}.{dfac857a-c87d-4e0a-84b1-03c250a88014}"
```
and
```
"{dfac857a-c87d-4e0a-84b1-03c250a88014}"
```
and
```
"\\\?\SWD#MMDEVAPI#{0.0.1.00000000}.{dfac857a-c87d-4e0a-84b1-03c250a88014}#{2eef81be-33fa-4800-9670-1cd474972c3f}"
```
but every time I have `Could not open resource for reading`. With default device (not set `device` property) everything is fine.
Tested on desktop UWP app, gstreamer 1.18.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1440Capturing the screen on an extended dual/triple monitor2021-09-24T14:38:52ZDavide PeriniCapturing the screen on an extended dual/triple monitorHi all,
is it possible to capture the screen using gstreamer on a dual/triple extended monitor like if it is a single monitor?
I'm using this command:
> /gst-launch-1.0 dxgiscreencapsrc ! videoscale method=0 ! videoconvert ! autovideosi...Hi all,
is it possible to capture the screen using gstreamer on a dual/triple extended monitor like if it is a single monitor?
I'm using this command:
> /gst-launch-1.0 dxgiscreencapsrc ! videoscale method=0 ! videoconvert ! autovideosink sync=false
but it captures only one screen.
Any way to fix?
Thanks,
Davide