summaryrefslogtreecommitdiff
path: root/sys
Commit message (Collapse)AuthorAgeFilesLines
* doc: add the msdk elementsYinhang Liu2021-06-0315-1/+230
| | | | | | | | | Supported elements: msdkav1dec, msdkh264dec, msdkh264enc, msdkh265dec, msdkh265enc, msdkmjpegdec, msdkmjpegenc, msdkmpeg2dec, msdkmpeg2enc, msdkvc1dec, msdkvp8dec, msdkvp9dec, msdkvp9enc, msdkvpp. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2296>
* v4l2codecs: gstv4l2codecsvp8dec: implement a render delayDaniel Almeida2021-05-311-1/+25
| | | | | | | | The v4l2 backend support delayed output for performance reasons. It is then possible to use render delays to queue multiple requests simultaneously, thus increasing performance. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2150>
* d3d11: Suppress some warning logsSeungha Yang2021-05-291-1/+26
| | | | | | | | We uses gst_d3d11_device_new() for enumerating device which can fail for some reason. Don't print warning log for the case. And decoding capability check is the same case as well. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2286>
* d3d11compositor: Reuse converter on alpha updateSeungha Yang2021-05-281-2/+12
| | | | | | ... instead of creating converter object Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2276>
* d3d11converter: Introduce config to be extensibleSeungha Yang2021-05-289-66/+278
| | | | | | | Add a config argument like that of GstVideoConverter so that we can add more options without modifying existing methods Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2276>
* d3d11shader: Don't hold state object in GstD3D11QuadSeungha Yang2021-05-285-48/+32
| | | | | | We might want to update state object Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2276>
* v4lcodecs: Validate src formatsNicolas Dufresne2021-05-275-8/+49
| | | | | | | | | This add src format validation, this avoid registering element for drivers we don't support any of their src formats. This also special case the AlphaDecodeBin wrapper, as we know that alphacombine element only support I420 and NV12 for now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2272>
* v4l2codecs: add wrappers for alpha decodeDaniel Almeida2021-05-277-11/+357
| | | | | | | | | | | | | | | | | | codecalpha is a new plugin introduced to support VP8/VP9 alpha as defined in the WebM and Matroska specifications. It splits the stream into two streams, one for the alpha and one for the actual content, then it decodes them separately with vpxdec and finally combine the results as A420 or AV12 (i.e. YUV + an extra alpha plane). The workflow above is setup by means of a bin, gstcodecalphabin. This patch simulates the same workflow into the v4l2codecs namespace, thus using the new v4l2 stateless decoders for hardware acceleration. This is so we can register the new alpha decode elements only if the hardware produces formats we support, i.e. I420 or NV12 for now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2272>
* d3d11compositor: Fix caps update handlingSeungha Yang2021-05-261-25/+7
| | | | | | | | New caps is applied only when previous buffer is consumed if any. So, the lastest given caps might not be corresponding to the current buffer to be handled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2284>
* va: h265dec: Add current picture into reference list for SCC.He Junyan2021-05-251-0/+14
| | | | | | | The current picture is not in the DPB, so we need to add it manually to the reference list when SCC is enabled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
* va: h265dec: Set Screen Content extension (SCC) for picture parameters.He Junyan2021-05-251-4/+71
| | | | | | | | | | We already declare the support of HEVC screen content extension profiles in the profile mapping list, but we fail to generate the correct VA picture parameters buffers. This may cause the GPU hang. We need to fill the buffer of VAPictureParameterBufferHEVCExtension correctly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
* va: h265dec: Use get_profile_from_sps() to recognize the profile.He Junyan2021-05-251-2/+1
| | | | | | | | | | | The function of gst_h265_get_profile_from_sps() is better than the function gst_h265_profile_tier_level_get_profile() when we recognize the profile of the stream, becaue it considers the compatibility. It is also used by h265parse to recognize the profile. So it is better to keep the same behaviour with the parse and other decoders. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
* va: h265dec: Set range extension for picture and slice parameters.He Junyan2021-05-251-2/+96
| | | | | | | | | | | We already declare the support of HEVC range extension profiles in the profile mapping list, but we fail to generate the correct VA picture and slice parameters buffers. This may cause the GPU hang. We need to fill the buffer of VAPictureParameterBufferHEVCExtension and VASliceParameterBufferHEVCExtension correctly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
* va: h265dec: Use picture and slide extension parameters.Víctor Manuel Jáquez Leal2021-05-251-36/+41
| | | | | | | This is transitional commit to later implement extended and screen profiles. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
* dxgiscreencapsrc: renegotiate caps on resolution changeJakub Adam2021-05-213-32/+75
| | | | | | | When desktop gets resized, recreate the textures and renegotiate the source caps with the updated video dimensions. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2249>
* va: h265dec: Set LastSliceOfPic for multi sliced frames.He Junyan2021-05-211-33/+119
| | | | | | | | | | | | | | | | VA-API HEVC decoding needs to known which is the last slice of a picture, but slices are processed sequencially, so we know the last slice until all the slices are already pushed into the VABuffer array. In order to mark the last slice, they are pushed into the VABuffer array with a delay of one slice: the first slice is hold, and when the second slice come, the first one is pushed while holding the second, and so on. Finally, at end_picture(), the last slice is marked and pushed into the array. Co-author: Victor Jaquez <vjaquez@igalia.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2246>
* d3d11desktopdupsrc: Add support for desktop size/rotation mode changeSeungha Yang2021-05-204-104/+139
| | | | | | | Re-negotiates with updated size on desktop size (i.e., resolution, scaling factor), and rotation mode change Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2268>
* d3d11compositor: Fix missing D3D11 prefixSeungha Yang2021-05-203-4/+4
| | | | | | Fix typo, no functional change Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2262>
* libs: va: display_wrapper: Use gpointer for VADisplay.Víctor Manuel Jáquez Leal2021-05-181-1/+1
| | | | | | In order to be coherent along all the implementation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
* libs: va: Move the VA common logic as a lib.He Junyan2021-05-1820-861/+176
| | | | | | | | | The VA acceleration now has more usages in linux-like platforms, such as the MSDK. The different plugins based on the VA acceleration need to share some common logic and types. We now move the display related functions and types into a common va lib. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
* msdk: add profile main-still-picture for hevc encodermkba2021-05-181-1/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2253>
* msdk: use MFXJoinSession() to join the parent and child sessionsHaihao Xiang2021-05-171-16/+65
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
* msdk: use a new method to create mfx session when using oneVPL dispatcherHaihao Xiang2021-05-173-29/+205
| | | | | | | | | In oneVPL, MFXLoad() and MFXCreateSession() are required to create a workable mfx session[1] [1] https://spec.oneapi.com/versions/latest/elements/oneVPL/source/programming_guide/VPL_prg_session.html#onevpl-dispatcher Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
* msdk: allow user build this plugin against MFX version 2.2+ (oneVPL)Haihao Xiang2021-05-171-24/+50
| | | | | | | | | | | | | | Intel oneVPL SDK (oneVPL) is a successor to Intel Media SDK (MSDK)[1]. User may use -Dmfx_api=MSDK or -Dmfx_api=oneVPL to specify the required SDK when building this plugin. If the SDK is not specified, meson will try MSDK firstly, then oneVPL if MSDK is not available Version 2.2+ is required in this patch because pkg-config file was not provided officially before version 2.2 [1]https://spec.oneapi.com/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
* msdkvp9dec: do not include mfxvp9.hHaihao Xiang2021-05-171-2/+0
| | | | | | | | | | | The VP9 related definitions in mfxvp9.h are available under the condition of 'MFX_VERSION >= MFX_VERSION_NEXT', which implies that these definitions are never used in a public release. This is in preparation for oneVPL support because mfxvp9.h was removed from oneVPL Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
* msdk: don't load user plugins for MFX version 2.0+Haihao Xiang2021-05-172-0/+14
| | | | | | | | | | | | MFX version 2.0+ no longer supports user plugins, please refer to the links for details https://spec.oneapi.com/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals https://github.com/oneapi-src/oneVPL This is in preparation for oneVPL support Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
* msdk: exclude the audio code for MFX version 2.0+Haihao Xiang2021-05-171-0/+4
| | | | | | | | | | | | MFX version 2.0+ no longer supports audio functions, please refer to the links below for details https://spec.oneapi.com/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals https://github.com/oneapi-src/oneVPL This is in preparation for oneVPL support Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
* va: Do not use a common parent_class in vabasedec.He Junyan2021-05-108-40/+32
| | | | | | | | | | | | | | | | | | | We have only one copy of gst_va_base_dec_parent_class inside the vabasedec, so it can not handle the case when there are multi va decoders inside one pipeline. The pipeline: gst-launch-1.0 filesrc location=xxx.h264 ! h264parse \ ! vah264dec ! msdkh265enc ! vah265dec ! fakesink generates a assertion of "invalid cast from 'GstVaH264Dec' to 'GstH265Decoder" and gets a crash. We should keep the parent_class for each decoder type. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2231>
* va: av1dec: Avoid structure overwrite.Víctor Manuel Jáquez Leal2021-05-071-12/+11
| | | | | | | | | | | | VADecPictureParameterBufferAV1.mode_control_fields.bits were filled twice, overwriting to zeros the first assignation. This patch unifies both assignations. Also it makes explicit an enum casting between libva and gstreamer; it removes the assignation to zero a deprecated parameter; and use an appropriate assertion. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2223>
* wasapi2: Propagate HRESULT error code everywhereSeungha Yang2021-05-065-157/+237
| | | | | | | ... instead of boolean value which cannot notify the reason of the operation failure. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2219>
* decklinkvideosrc: Fix crash when mode is not specifiedSeungha Yang2021-05-061-2/+4
| | | | | | | In that case, we will get "VideoInputFrameArrived" callback without "VideoInputFormatChanged" Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2218>
* Use gst_element_request_pad_simple...François Laignel2021-05-052-3/+3
| | | | | | Instead of the deprecated gst_element_get_request_pad. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2180>
* d3d11desktopdup: Don't ignore error DXGI_ERROR_UNSUPPORTEDSeungha Yang2021-04-303-7/+56
| | | | | | | | | | | | | | Although Microsoft's DXGIDesktopDuplication example is considering the DXGI_ERROR_UNSUPPORTED as an expected error (See https://github.com/microsoft/Windows-classic-samples/tree/master/Samples/DXGIDesktopDuplication) it might not be recoverable error if application is run against a discrete GPU (See https://docs.microsoft.com/en-US/troubleshoot/windows-client/shell-experience/error-when-dda-capable-app-is-against-gpu) Do early error out if the error happens while opening device, instead of retrying it forever. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2208>
* d3d11desktopdup: Support desktop switchesJakub Adam2021-04-301-0/+11
| | | | | | | | | | | | | | | | | Before creating output duplication interface, call SetThreadDesktop() with HDESK of the current input desktop in case a desktop switch has occurred. This allows d3d11desktopdupsrc to capture Windows User Account Control (UAC) prompts, which appear on a separate secure desktop. Otherwise IDXGIOutput1::DuplicateOutput() will return E_ACCESSDENIED and the element won't produce any frames as long as the UAC screen is active. Note that in order to access secure desktop the application still has to run at LOCAL_SYSTEM privileges. For GStreamer applications running with regular user privileges this change has no effect. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2209>
* dxgicapture: reinitialize duplication interface on ERROR_ACCESS_LOSTJakub Adam2021-04-301-13/+63
| | | | | | | | | | | | | | | | | | IDXGIOutputDuplication can become invalid for example when there's desktop switch, resolution change or Windows User Account Control prompt appears on screen. When that happens, try to re-create the duplication interface for the changed output. Note that in the case of UAC prompt this operation will fail if the GStreamer process doesn't run at LOCAL_SYSTEM privileges. In such situation the source element won't create any frames as long as the output is occupied by UAC screen. In order to enable UAC access to sufficiently privileged GStreamer processes, call SetThreadDesktop() with the desktop handle that currently receives user input before creating our output duplication. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2204>
* msdk: set correct parameters for BGRx frameHaihao Xiang2021-04-302-0/+2
| | | | | | | Otherwise when mapping BGRx frame onto CPU's memory, CPU will get wrong data for B, G, R components Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2205>
* va: allocator: Disable derived for Gallium if RGB and reading.Víctor Manuel Jáquez Leal2021-04-281-0/+6
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2127>
* va: allocator: Disable derived for i965 if YUV and writing.Víctor Manuel Jáquez Leal2021-04-281-5/+19
| | | | | | | | | | | The problem is for uploading YUV frames using derived images, is that derived images imply tiling, so frames are wrongly uploaded. Though derived for reading might work we cannot know the Intel graphics generation to validate the caching. Overall, it's safer to disable derived images for i965. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2127>
* va: display: Fix typo.Víctor Manuel Jáquez Leal2021-04-282-3/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2127>
* va: allocator: Hack for i965 to get linear RGB DMABufs.Víctor Manuel Jáquez Leal2021-04-281-2/+20
| | | | | | | i965 driver has a hack to provide linear dmabufs, which is required for RGB formats, since they are directly uploaded by glupload, ignoring tiled modifiers. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2127>
* va: postproc: Remove unused parameter.Víctor Manuel Jáquez Leal2021-04-281-4/+4
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2127>
* va: postproc: Set usage hint generic if DMABuf.Víctor Manuel Jáquez Leal2021-04-281-0/+3
| | | | | | | | | | iHD driver sets a tiled DRM modifier if surface's usage hint is set to VPP_WRITE. This result in a garbled rendering when using glimagesink. This patch changes the usage hint to generic if the caps feature is DMABuf. Either way only iHD driver, so far, uses the usage hint flag. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2127>
* va: postproc: Get info from caps in decide_allocation()Víctor Manuel Jáquez Leal2021-04-281-9/+9
| | | | | | | | decide_allocation() occurs before set_caps(), where out_info is set, thus setting srcpad_info with zeros or old values. Instead of it, the caps, from the allocation query, are converted and used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2127>
* msdkh265dec: Add support for error report tooHaihao Xiang2021-04-281-0/+31
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/909>
* msdkh264dec: report error to userHaihao Xiang2021-04-285-0/+136
| | | | | | | | | | | | Sometimes user want to know what the error is when decoding a stream, This commit adds a property of report-error to msdkh264dec. When report-error is TRUE, msdkh264dec may catch bitstream error and frame corruption, then report the error to application by using GST_ELEMENT_ERROR Refer to the code in https://github.com/Intel-Media-SDK/MediaSDK/tree/master/samples Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/909>
* msdkdec: allow sub class to add extra parameters for additional configurationHaihao Xiang2021-04-282-0/+24
| | | | | | | MSDK allows user add extended buffers to a bitstream for additional configuration. This commit is to support this feature in this plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/909>
* d3d11: Handle device changeSeungha Yang2021-04-284-8/+310
| | | | | | | | If incoming buffer holds other d3d11 device, and user wants any device (i.e., adapter index wasn't specified explicitly) update our device with that of buffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2191>
* d3d11videosink: Delay window setup as much as possibleSeungha Yang2021-04-281-6/+37
| | | | | | | ... so that videosink can handle device update with d3d11 device of the first buffer Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2191>
* d3d11: Don't accept buffer pool which holds different deviceSeungha Yang2021-04-285-21/+59
| | | | | | | At the moment, d3d11 plugin doesn't support texture sharing between different device Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2191>
* d3d11decoder: Run gst-indentSeungha Yang2021-04-281-3/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2191>