summaryrefslogtreecommitdiff
path: root/sys
Commit message (Collapse)AuthorAgeFilesLines
* decklinkvideosink: Use correct numerator for 29.97fpsSebastian Dröge2021-02-261-1/+1
| | | | | | It's not 0.2997fps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2042>
* decklinksrc: Use a more accurate capture timeEdward Hervey2021-02-261-0/+35
| | | | | | | | | Use the hardware reference clock time when the frame was finished being captured instead of a time much further down the road. This improves the stability/accuracy of buffer times. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2040>
* va: allocator: No need of fourcc to create surface.Víctor Manuel Jáquez Leal2021-02-251-2/+2
| | | | | | | | | | | In commits 430aa327 and a119a940 there are a regression since it is possible to create surfaces without fourcc, only chroma (rtformat) is required. This regression is shown on radeonsi driver with certain color formats. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2035>
* va: vpp: implement GstColorBalance interfaceVíctor Manuel Jáquez Leal2021-02-253-3/+182
| | | | | | And modify multiple-vpp example to use it with -r parameter. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2033>
* va: filter: add controllable and mutable playing to GParamFlagsVíctor Manuel Jáquez Leal2021-02-251-5/+4
| | | | | | | | Add controllable and mutable playgin to common GParamFlags. Also use this common flags to video-direction Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2033>
* msdk: allow user specify a drm device via an env variableHaihao Xiang2021-02-242-2/+29
| | | | | | | | | | User may specify the required device via GST_MSDK_DRM_DEVICE Example: GST_MSDK_DRM_DEVICE=/dev/dri/card0 gst-launch-1.0 videotestsrc ! msdkh264enc ! fakesink Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1953>
* VA: Add the vaav1dec element as the av1 decoder.He Junyan2021-02-236-2/+1062
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1636>
* VA: Add the aux surface for gst buffer used by decoder.He Junyan2021-02-234-3/+144
| | | | | | | | | | | | The AV1 codec needs to support the film grain feature. When the film grain feature is enabled, we need two surfaces as the output of the decoded picture, one without film grain effect and the other one with it. The first one acts as the reference and is needed for later pictures' reconstruction, and the second one is the real display output. So we need to attach another aux surface to the gst buffer/mem and make that aux surface as the target of vaBeginPicture. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1636>
* VA: Add a helper function of decoder_add_slice_buffer_with_n_params.He Junyan2021-02-232-4/+21
| | | | | | | | Some codecs such as AV1 needs several parameters associated with one slice. It may have multi tiles within one slice and each tile needs its description parameter. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1636>
* va: allocator: replace assert with error log in va alloc.He Junyan2021-02-231-1/+4
| | | | | | | We should print error log rather than assert when the forcc or the rt_format of va allocator is unrecognized. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1636>
* d3d11: Documentation updateSeungha Yang2021-02-2314-45/+337
| | | | | | | | | | * Update class metadata * for wrapper bin elements to be distinguishable from internal element. * D3D11 -> Direct3D11 for consistency * Add missing Since mark everywhere * Update plugin cache Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2029>
* d3d11: Reorganize class hierarchy of convert elementsSeungha Yang2021-02-232-119/+188
| | | | | | | | | | | | | | | | | AS-IS: D3D11Convert class is baseclass of D3D11ColorConvert and D3D11Scale * GstD3D11Convert |_ GstD3D11ColorConvert |_ GstD3D11Scale TO-BE: Introducing a new base class for color conversion and/or rescale elements * GstD3D11BaseConvert |_ GstD3D11Convert |_ GstD3D11ColorConvert |_ GstD3D11Scale Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2029>
* d3d11deinterlace: Add missing system memory caps features on templatesSeungha Yang2021-02-211-7/+26
| | | | | | This element can support system memory Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2029>
* va: filter, vpp: process colorimetryVíctor Manuel Jáquez Leal2021-02-203-27/+255
| | | | | | | | A new filter method were added: gst_va_filter_set_formats(). In this way the input & output GstVideoInfo are processed only once per stream negotiation, and not per frame. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2023>
* va: filter: check if filter is open on set_orientation()Víctor Manuel Jáquez Leal2021-02-201-0/+3
| | | | | | Because the method requires pipeline_caps is filled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2023>
* va: filter: human readable background colorVíctor Manuel Jáquez Leal2021-02-201-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2023>
* va: filter: fail immediately if vaBeginPicture() failsVíctor Manuel Jáquez Leal2021-02-201-1/+1
| | | | | | There's no need to try vaRenderPicture() if vaBeginPicture() failed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2023>
* va: filter: destroy pipeline buffer after destroying filtersVíctor Manuel Jáquez Leal2021-02-201-1/+12
| | | | | | | | | | | In 6ae24948 the pipeline buffer destroy were removing assuming it wasn't required. Nonetheless, debugging the code it looks like a buffer leak in iHD driver since the ID of the buffer kept increasing. The difference now is that first the filter buffers are destroy first and later the pipeline buffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2023>
* va: vpp: Add raw buffer copy when needed.He Junyan2021-02-191-11/+142
| | | | | | | | | | | | | | | | Just like the decoder, the vapostproc also needs to copy the output buffer to raw buffer if downstream elements only supports raw caps and does not support the video meta. The pipeline like: gst-launch-1.0 filesrc location=xxxx ! h264parse ! vah264dec ! \ vapostproc ! capsfilter caps=video/x-raw,width=55,height=128 ! \ filesink location=xxx needs this logic to dump the data correctly. fixes: #1523 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2026>
* wasapi2device: Make wasapi2 device distinguishable from wasapi deviceSeungha Yang2021-02-181-2/+2
| | | | | | | | | | Both wasapi2 and wasapi plugins use WASAPI API. So "device.api=wasapi" would make sense for the wasapi2 plugin as well. But people would be confused by the identical "device.api=wasapi" property if intended plugin is wasapi, not wasapi2. This change will make them distinguishable by using "device.api" device property. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2024>
* wasapi2: Always build if Windows 10 SDK is availableSeungha Yang2021-02-181-4/+37
| | | | | | | Add support for building wasapi2 plugin if Windows 10 SDK is available on system Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1951>
* va: allocator: set workaround only for i965 driverVíctor Manuel Jáquez Leal2021-02-171-3/+4
| | | | | | | | | In commit 117453b9 a i965 driver workaround was added for all drivers, because at that time we didn't have a driver implementation API. Now there's one. This patch set the workaround only for the i965 driver. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2021>
* va: allocator: MT-safe queue & dequeue dmabuf-based memoriesVíctor Manuel Jáquez Leal2021-02-171-27/+101
| | | | | | | | | | | | | | | | | | | | One problem that va dmabuf allocator had is when preparing a buffer from dmabuf memories in the allocator pool, specially when a buffer is composed by several memories. This memories have to be by certain number and in certain order. This patch stores the number of memories and their address in order when a dmabuf-based buffer is created and when preparing a buffer, it is reconstructed with this info. Finally, instead of pushing the memories as soon as they are unrefed, they are hold until GstVaBufferSurface's ref_mems_count reaches zero (all the memories related with that buffer/surface are unrefed). Until that happen, all the memories are pushed back into the queue, locked, assuring that all the memories related with a single buffer (with the same surface) remain contiguous, so the buffer reconstruction is assured. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2013>
* va: pool, allocator: free memories at bufferpool's stop()Víctor Manuel Jáquez Leal2021-02-171-11/+16
| | | | | | | | | This patch frees the memories in the allocator's pool after the bufferpool frees all its buffers, sync'ing them at stop() vmethod. By doing it, the current logic in flush_start() is not valid, so the vmethod is removed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2013>
* va: allocator: remove unused public functionsVíctor Manuel Jáquez Leal2021-02-172-65/+0
| | | | | | | | | | | Deleted the public functions: gst_va_dmabuf_allocator_wait_for_memory() gst_va_allocator_wait_for_memory() And all the support for wait, cond in allocator's pool. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2013>
* va: pool: simplify the logicVíctor Manuel Jáquez Leal2021-02-171-78/+2
| | | | | | | | | | | | | Instead of removing memories from buffers at reset_buffer()/release_buffer() the bufferpool operation is kept as originally designed, still the allocator pool is used too. Thus, this patch restores the buffer size configuration while removing release_buffer(), reset_buffer() and acquire_buffer() vmethods overloads. Then, when the bufferpool base class decides to discard a buffer, the VA surface-based memory is returned to the allocator pool when its last reference is freed, and later reused if a new buffer is allocated again. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2013>
* va: pool: use allocator pool at alloc()Víctor Manuel Jáquez Leal2021-02-173-6/+27
| | | | | | | Check if the allocator pool has memories available before creating a new one, but only iif pool is not starting. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2013>
* va: allocator: log buffer at dmabuf setup and prepareVíctor Manuel Jáquez Leal2021-02-171-5/+6
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2013>
* d3d11: Add support for deinterlacing by using ID3D11VideoProcessor interfaceSeungha Yang2021-02-174-0/+2409
| | | | | | | | | | Add a new element d3d11deinterlace to support deinterlacing. Similar to d3d11videosink and d3d11compositor, this element is a wrapper bin of set of child elements including helpful conversion elements (upload/download and color convert) to make this element configurable between non-d3d11 elements. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2016>
* d3d11decoder: Take account of min buffers of downstream buffer poolSeungha Yang2021-02-157-36/+85
| | | | | | | | | | Since our decoder DPB texture pool cannot be grown once it's configured, we should pre-allocate sufficient number of textures for zero-copy playback (but not too many). The "min buffers" allocation query parameter can be a hint for the number of required textures in addition to DPB size. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2017>
* d3d11h265dec: Add support for interlaced streamSeungha Yang2021-02-092-24/+134
| | | | | | | | | | Note that we have no D3D11 deinterlace element yet. If downstream is not support format:Interlaced caps feature including all D3D11 the other elements, aspect-ratio will be adjusted as an alternative approach. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2008>
* vah265dec: Don't need to pass picture structure to VASeungha Yang2021-02-091-14/+0
| | | | | | | | | This code came from gstvaapidecoder_h265 implementation but picture structure is always GST_VAAPI_PICTURE_STRUCTURE_FRAME. Moreover, in theory, VA doesn't need to know picture structure for decoding HEVC stream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2008>
* nvh265sldec: Remove pointless field picture parameter setupSeungha Yang2021-02-091-6/+0
| | | | | | HEVC has no decoding flow for interlaced, field picture referencing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2008>
* va: vpp: Make the global lock only to DMA buffer's import.He Junyan2021-02-091-6/+9
| | | | | | | The normal gst_va_buffer_get_surface does not need a global lock. Too big lock may make the performance lower. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2009>
* va: allocator: log dmabuf and surface at pool push or popVíctor Manuel Jáquez Leal2021-02-051-22/+9
| | | | | | | In order to keep track of the dmabuf fds and surfaces numbers log messages are added at memory_release() (queue push) and prepare_buffer() (queue pop). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1999>
* va: h265dec: fix HVC1 stream format nameVíctor Manuel Jáquez Leal2021-02-051-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1999>
* va: basedec: refactor context queryVíctor Manuel Jáquez Leal2021-02-051-25/+16
| | | | | | | Context query is handled either by source and sink queries. This patch factors-out its handling in a common utility function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1999>
* va: filter: use a common GParamFlags definitionVíctor Manuel Jáquez Leal2021-02-051-14/+10
| | | | | | Instead of repeating the same code along gst_va_filter_install_properties() Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1999>
* va: h264dec: remove spurious if validationVíctor Manuel Jáquez Leal2021-02-051-1/+1
| | | | | | | The first if checks for caps, thus else doesn't need to recheck for the opposite. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1999>
* va: vpp: fix frame copyVíctor Manuel Jáquez Leal2021-02-051-3/+16
| | | | | | | | | | | | There were two problems with frame copy: 1. The input video info are from the format color, not form the allocated VA surface, it's needed to update the sink video info according with the allocator's data. 2. The parameters of `gst_video_frame_copy()` were backwards. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>
* va: vpp: request video and alignment metas for src poolVíctor Manuel Jáquez Leal2021-02-051-0/+3
| | | | | | This is for the pool used when importing raw video frames to surfaces. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>
* va: vpp: transform_size() must return FALSEVíctor Manuel Jáquez Leal2021-02-051-32/+3
| | | | | | | | | | transform_size() basetransform vmethod is used when there's no output buffer pool and allocates a system memory buffer. With VA this cannot be allowed, since it needs VASurfaces to process. Thus transform_size() is not required, but to play safe let's return FALSE. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>
* va: vpp: copy input buffer flags and timestampsVíctor Manuel Jáquez Leal2021-02-051-0/+5
| | | | | | | | Strictly speaking right now it's not required do this copy, but let's play safe and assume in the future this metadata might be required while doing the postprocessing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>
* va: vpp: handle context queryVíctor Manuel Jáquez Leal2021-02-051-0/+29
| | | | | | | Previously vapostproc didn't communicate its context through query mechanism, which is required for context sharing. This patch completes this missing bits. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>
* va: vpp: don't copy color, size or orientation video metasVíctor Manuel Jáquez Leal2021-02-051-8/+30
| | | | | | If they are processed by the element. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>
* va: vpp: don't break passthrough if no color balance requiredVíctor Manuel Jáquez Leal2021-02-051-1/+1
| | | | | | | | The function `_add_filter_cb_buffer()` returned TRUE if no color balance filter are required, but that's is wrong, since it will break the passthrough. This patch return FALSE which is the correct value for the situation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>
* va: vpp: use gst_clear_caps()Víctor Manuel Jáquez Leal2021-02-051-8/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>
* va: filter: don't destroy pipeline bufferVíctor Manuel Jáquez Leal2021-02-051-19/+6
| | | | | | | | | | This was only required by i915 driver before libva-2.0 because it didn't conform. Also changes the way _destroy_filters() is called, now inside a locked block, so it must not lock in it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2006>
* va: filter: lock member variables accessVíctor Manuel Jáquez Leal2021-02-041-28/+101
| | | | | | | While gst_va_filter_open() and gst_va_filter_close() remain non-thread-safe, the other API calls that modify member variables are locked. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2005>
* d3d11decoder: Fix deadlock when DPB texture pool is fullSeungha Yang2021-02-037-21/+87
| | | | | | | | | | | Unlike other stateless decoder implementations (e.g., VA), our DPB pool cannot be grown since we are using texture array (pre-allocated, fixed-size d3d11 texture pool). So, if there's no more available texture to use, there's no way other than copying it to downstream's d3d11 buffer pool. Otherwise deadlock will happen. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2003>