summaryrefslogtreecommitdiff
path: root/sys
Commit message (Collapse)AuthorAgeFilesLines
* Add vadeinterlace element.Víctor Manuel Jáquez Leal2021-09-104-1/+905
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: filter: Add past and future frames in GstVaSample.Víctor Manuel Jáquez Leal2021-09-102-0/+10
| | | | | | And add them in the pipeline structure if they are provided. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: filter: Add gst_va_filter_add_deinterlace_buffer()Víctor Manuel Jáquez Leal2021-09-102-0/+46
| | | | | | | This function decorates gst_va_filter_add_filter_buffer() to get the number of past and future frames to hold, given the method. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: filter: Add deinterlacing method parameter.Víctor Manuel Jáquez Leal2021-09-102-0/+134
| | | | | | | | For exposing that gobject parameter a new helper function is added: gst_va_filter_install_deinterlace_properties() Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: filter: Protect filters array of overwrite.Víctor Manuel Jáquez Leal2021-09-101-23/+24
| | | | | | | | It's possible to modify the filters array from another GStremer thread, and the post-processing operation is not atomic, so the filter array is reffed while the VA pipeline is processed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: filter: Add helper function to query pipeline caps.Víctor Manuel Jáquez Leal2021-09-101-24/+41
| | | | | | | This function is going to be shared for future deinterlace filter processing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: filter: Shuffle _destroy_filters_unlocked().Víctor Manuel Jáquez Leal2021-09-101-31/+31
| | | | | | In order to put it near to its caller. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* vapostproc: Move up color balance detection to plugin.Víctor Manuel Jáquez Leal2021-09-103-11/+24
| | | | | | | | | | | | | In order to install the color balance interface, a GstVaFilter is instantiated and queried to know if it supports color balance filter. It was done just after the GObject was registered. Now, it's done before. The reason of this change is that deinterlace element has to be registered only if deinterlace filter is available, using only one instantiate of GstVaFilter. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: basetransform: Update documentation.Víctor Manuel Jáquez Leal2021-09-101-0/+9
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: basetransform: Add autoptr clean up function.Víctor Manuel Jáquez Leal2021-09-101-0/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: basetransform: Use copy_metadata() at buffer import.Víctor Manuel Jáquez Leal2021-09-101-4/+4
| | | | | | | Instead of using only gst_buffer_copy_into() use copy_metadata() vmethod to copy what's needed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* vapostproc: don't chain up transform_meta()Víctor Manuel Jáquez Leal2021-09-101-2/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* msdk: Adjust the plugin and factories description based on MFX_VERSION.Ung, Teng En2021-09-0919-34/+40
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2485>
* Revert "kmssink: Fix fallback path for driver not able to scale scenario"Nicolas Dufresne2021-08-271-4/+2
| | | | | | | | This reverts commit d2a7b763bef3ca51f0c84cdac52eeed85b0db8fb. After this change, non-scaled rendered were not centred as expected. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2496>
* d3d11bufferpool: Hide buffer_size field from headerSeungha Yang2021-08-229-25/+83
| | | | | | | | | | | | | | User can get the required buffer size by using buffer pool config. Since d3d11 implementation is a candidate for public library in the future, we need to hide everything from header as much as possible. Note that the total size of allocated d3d11 texture memory by GPU is not controllable factor. It depends on hardware specific alignment/padding requirement. So, GstD3D11 implementation updates actual buffer size by allocating D3D11 texture, since there's no way to get CPU accessible memory size without allocating real D3D11 texture. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2482>
* nvcodec: Fix various typosSeungha Yang2021-08-217-15/+15
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2481>
* nvcodec: Get rid of G_GNUC_INTERNALSeungha Yang2021-08-2114-123/+1
| | | | | | | Our default symbol visibility is hidden, so G_GNUC_INTERNAL is pointless Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2481>
* v4l2codecs: h264: Fix split field handlingNicolas Dufresne2021-08-201-34/+93
| | | | | | | | | | | Split fields ends up on multiple picture and requires accessing the other_field to complete the information (POC). This also cleanup the DPB from non-reference (was not useful) and skips properly merge field instead of keeping them duplicated. This fixes most of interlace decoding seen in fluster. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2474>
* v4l2codec: h264: Implement support for split fieldsNicolas Dufresne2021-08-201-1/+33
| | | | | | | | | | When a frame is composed of two fields, the base class now split the picture in two. In order to support this, we need to ensure that picture buffer is held in VB2 queue so that the second field get decoded into it. This also implements the new_field_picture() virtual and sets the previous request on the new picture. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2474>
* v4l2codecs: h264: Fix filling weight factorsNicolas Dufresne2021-08-201-2/+2
| | | | | | This was a typo, the wrong index was used to set l1 weight (b-frames). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2480>
* mfvideosrc: Fix for negative MF strideSeungha Yang2021-08-193-20/+186
| | | | | | | | | | | | Negative stride value can be used in MediaFoundation to inform whether memory layout is top-down or bottom-up manner. Note that negative stride is allowed only for RGB, system memory. See also https://docs.microsoft.com/en-us/windows/win32/medfound/image-stride Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1646 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2473>
* v4l2slh264dec: Fix slice header bit size calculationNicolas Dufresne2021-08-181-2/+2
| | | | | | | | The emulation bytes need to be removed as bytes, not bit. This fixes decoding issues with files that have emulation bytes with the Cedrus driver. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2471>
* vapostproc: Use vapostproc as debug category name.Víctor Manuel Jáquez Leal2021-08-181-1/+1
| | | | | | Otherwise is difficult to remember the different name. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2470>
* vapostproc: Disable cropping in pass-through mode.Víctor Manuel Jáquez Leal2021-08-181-36/+14
| | | | | | | | | | | | | | | | | | | Originally, if a buffer arrives with crop meta but downstream doesn't handle crop allocation meta, vapostproc tried to reconfigure itself to non pass-through mode automatically. Sadly, this behavior was based on the wrong assumption that propose_allocation() vmethod would bring downstream allocation query, but it is not. Now, if vapostproc is in pass-through mode, the cropping is passed to downstream. Pass-through mode can be disabled via a parameter. Finally, if pass-through mode isn't enabled, it's assumed the buffer is going to be processed and, if cropping, downstream already negotiated the cropped frame size, thus it's required to do the cropping inside vapostproc to avoid artifacts because of the size of downstream allocated buffers. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2443>
* vapostproc: Update filters update_properties().Víctor Manuel Jáquez Leal2021-08-181-0/+1
| | | | | | | | | | Right after instantiating the VA filter and changing the element state, rebuild the image filters. This will fix a regression from f20b3b815, where properties in a gst-launch pipeline are not applied. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2443>
* decklinkvideosrc: Fix PAL/NTSC widescreen autodetection when switching back ↵Sebastian Dröge2021-08-181-6/+22
| | | | | | | | to non-widescreen Previously it would only switch to widescreen but never back. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2469>
* msdkvpp: Fix frc from lower fps to higher fpsMengkejiergeli Ba2021-08-181-11/+41
| | | | | | | | | | | | | | | | | | | | There are three framerate conversion algorithms described in <https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md>, interpolation is not implemented so far and thus distributed timestamp algorihtm is considered to be more practical which evenly distributes output timestamps according to output framerate. In this case, newly generated frames are inserted between current frame and previous one, timestamp is calculated by msdk API. This implementation first pushes newly generated buffers(outbuf_new) forward and the current buffer(outbuf) is handled at last round by base transform automatically. A flag "create_new_surface" is used to indicate if new surfaces have been generated and then push new outbuf forward accordingly. Considering the upstream element may not be the msdk element, it is necessary to always set the input surface timestamp as same as input buffer's timestamp and convert it to msdk timestamp. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2418>
* va: Use GST_CAPS_FEATURE_MEMORY_VA to replace "memory:VAMemory".He Junyan2021-08-1610-22/+35
| | | | | | | | "memory:VAMemory" is a commonly used string which notates our VA-kind memory type. We now used a definition in va lib to replace the simply string usage. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2466>
* va: Use MEMORY_DMABUF definition to replace "memory:DMABuf" strings.He Junyan2021-08-162-2/+2
| | | | | | | GST_CAPS_FEATURE_MEMORY_DMABUF is already a common definition, we should just use it rather than use the "memory:DMABuf" strings by ourselves. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2466>
* wasapi2: Increase rank to primary + 1Seungha Yang2021-08-131-5/+1
| | | | | | | | | | | | | | | | | wasapi2 plugin should be preferred than old wasapi plugin if available because: * wasapi2 supports automatic stream routing, and it's highly recommended feature for application by MS. See also https://docs.microsoft.com/en-us/windows/win32/coreaudio/automatic-stream-routing * This implementation must be various COM threading issue free by design since wasapi2 plugin spawns a new dedicated COM thread and all COM objects' life-cycles are managed correctly. There are unsolved COM issues around old wasapi plugin. Such issues are very tricky to be solved unless old wasapi plugin's threading model is re-designed. Note that, in case of UWP, wasapi2 plugin's rank is primary + 1 already Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2314>
* va: caps: Make the template raw video caps classified by features.He Junyan2021-08-111-1/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current output of raw video caps is not good. When we have multi profiles and each profile support different formats, the output of gst-inspect may like: SRC template: 'src' Availability: Always Capabilities: video/x-raw(memory:VAMemory) width: [ 1, 16384 ] height: [ 1, 16384 ] format: NV12 video/x-raw width: [ 1, 16384 ] height: [ 1, 16384 ] format: NV12 video/x-raw(memory:VAMemory) width: [ 1, 16384 ] height: [ 1, 16384 ] format: P010_10LE video/x-raw width: [ 1, 16384 ] height: [ 1, 16384 ] format: P010_10LE video/x-raw(memory:VAMemory) width: [ 1, 16384 ] height: [ 1, 16384 ] format: P012_LE video/x-raw width: [ 1, 16384 ] height: [ 1, 16384 ] format: P012_LE The gst_caps_simplify does not classify the caps by same features, but just leave them interweaved. We need to handle them manually here, the result should be: SRC template: 'src' Availability: Always Capabilities: video/x-raw width: [ 1, 16384 ] height: [ 1, 16384 ] format: { (string)P010_10LE, (string)P012_LE, (string)NV12 } video/x-raw(memory:VAMemory) width: [ 1, 16384 ] height: [ 1, 16384 ] format: { (string)P010_10LE, (string)P012_LE, (string)NV12 } Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2456>
* vapostproc: Inherit from GstVaBaseTransform.Víctor Manuel Jáquez Leal2021-08-101-745/+58
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2442>
* va: Add base transform class.Víctor Manuel Jáquez Leal2021-08-103-0/+898
| | | | | | | | This base transform class is a derivable class for VA-based filters, for example vapostproc right now, but it will be used also for future elements such as vadeinterlace. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2442>
* va: pool: Add gst_va_pool_new_with_config().Víctor Manuel Jáquez Leal2021-08-102-0/+32
| | | | | | It is a function helper. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2442>
* d3d11window: Misc code cleanupSeungha Yang2021-08-105-41/+25
| | | | | | | | | | * Remove unnecessary upcasting. We are now dealing with C++ class objects and don't need explicit C-style casting in C++ world * Use helper macro IID_PPV_ARGS() everywhere. It will make code a little short. * Use ComPtr smart pointer instead of calling manual IUnknown::Release() Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2461>
* d3d11compositor: Fix indentSeungha Yang2021-08-101-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2461>
* Use g_memdup2() where available and add fallback for older GLib versionsTim-Philipp Müller2021-08-055-6/+6
| | | | | | | g_memdup() is deprecated since GLib 2.68 and we want to avoid deprecation warnings with recent versions of GLib. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2280>
* msdk: make sure child context is destroyed firstHaihao Xiang2021-08-041-4/+5
| | | | | | | | | | | | The parent context shares some resources with child context, so the child context should be destroyed first, otherwise the command below will trigger a segmentation fault $> gst-launch-1.0 videotestsrc num-buffers=100 ! msdkh264enc ! \ msdkh264dec ! fakesink videotestsrc num-buffers=50 ! \ msdkh264enc ! msdkh264dec ! fakesink Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2435>
* d3d11videosink: Fix warning around GstVideoOverlay::expose()Seungha Yang2021-08-023-21/+12
| | | | | | | When expose() is called, d3d11videosink needs to redraw using cached buffer, so gst_d3d11_window_render() should allow null buffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2450>
* d3d11videosink: Forward navigation event without modificationSeungha Yang2021-08-021-44/+5
| | | | | | | | | Current implementation for translating native coordinate and video coordinate is very wrong because d3d11videosink doesn't understand native HWND's coordinate. That should be handled by GstD3D11Window implementation as an enhancement. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2450>
* d3d11videosink: Add support for GstVideoOverlay::set_render_rectangleSeungha Yang2021-08-024-18/+95
| | | | | | | | | | | | | | | | | | | | | Inspired by an MR https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2382 The idea is that we can make use of MoveWindow() in WIN32 d3d11window implementation safely because WIN32 d3d11window implementation creates internal HWND even when external HWND is set and then subclassing is used to draw on internal HWND in any case. So the coordinates passed to MoveWindow() will be relative to parent HWND, and it meets well to the concept of set_render_rectangle(). On MoveWindow() event, WM_SIZE event will be generated by OS and then GstD3D11WindowWin32 implementation will update render area including swapchain correspondingly, as if it's normal window move/resize case. But in case of UWP (CoreWindow or SwapChainPanel), we need more research to meet expected behavior of set_render_rectangle() Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1416 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2450>
* va: vp8: fix the overflow in _fill_quant_matrix().He Junyan2021-07-291-1/+1
| | | | | | | The gint8 of qi and qi_base may overflow when calculation the matrix parameters and change the decoding result. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2447>
* decklink: Don't print error for dlopen failureSeungha Yang2021-07-281-1/+1
| | | | | | This is not a fatal error on systems without decklink Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2441>
* applemedia: silence a couple of MoltenVK warningsMatthew Waters2021-07-282-3/+20
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2433>
* va: filter: refactor convert_surface() to process()Víctor Manuel Jáquez Leal2021-07-273-4/+3
| | | | | | | | The idea of this change is to add, in the future, process_with_generator(), when multiple input surfaces are processed, for blending. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2431>
* va: filter: Refactor set_formats() to set_video_info().Víctor Manuel Jáquez Leal2021-07-273-4/+4
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2431>
* vapostproc: Don't add video alignment option in buffer pool.Víctor Manuel Jáquez Leal2021-07-271-2/+0
| | | | | | | vapostproc will not call gst_buffer_pool_config_set_video_alignment(), thus this option is not required. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2431>
* Introduce Steinberg ASIO (Audio Streaming Input/Output) pluginSeungha Yang2021-07-2615-0/+4083
| | | | | | | | | | | | | | | Adds a new plugin for ASIO devices. Although there is a standard low-level audio API, WASAPI, on Windows, ASIO is still being broadly used for audio devices which are aiming to professional use case. In case of such devices, ASIO API might be able to show better quality and latency performance depending on manufacturer's driver implementation. In order to build this plugin, user should provide path to ASIO SDK as a build option, "asio-sdk-path". Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2309>
* kmssink: Fix fallback path for driver not able to scale scenarioDevarsh Thakkar2021-07-231-2/+4
| | | | | | | | | | | | | | | | | | When driver return error on update plane request, kmssink disables the scaling and retries plane update. While doing so kmssink was matching the source rectangle dimensions to the target rectangle dimensions which were calculated as per scaling but this is incorrect, instead what we want here is that target rectangle dimensions should match the source rectangle dimensions as scaling is disabled now and so we match result rectangle dimensions with source rectangle dimensions. While at it, also match the result rectangle coordinates for horizontal and vertical offsets with source rectange coordinates, as since there is no scaling being done so no recentering is required. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2415>
* va: h265dec: Do not assign the frame->output_buffer until output_picture.He Junyan2021-07-231-3/+14
| | | | | | | | | | | We may need to drop the slices such as RASL pictures with the NoRaslOutputFlag, so the current picture of h265decoder may be freed. We should not assign the frame-> output_buffer too early until we really output it. Or, the later coming slices will allocate another picture and trigger the assert of: gst_video_decoder_allocate_output_frame_with_params: assertion 'frame->output_buffer == NULL' failed Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2421>