summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* 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>
* webrtc: improve matching on the correct jitterbufferMatthew Waters2021-08-161-13/+32
| | | | | | | | | | | | | | | | | | | | The mapping between an RTP session and the SDP m= line is not always the same, especially when BUNDLEing is used. This causes a failure in a specific case where if when bundling, if mline 0 is a data channel, and mline 1 an audio/video section, then retrieving the transceiver at mline 0 (rtp session used) will fail and cause an assertion. This fix is actually potentially a regression for cases where the remote part does not provide the a=ssrc: media level SDP attributes as is now becoming common, especially when simulcast is involved. The correct fix actually requires reading out header extensions as used with bundle for signalling in the actual data, what media and therefore transceiver is being used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2467>
* va: Use GST_CAPS_FEATURE_MEMORY_VA to replace "memory:VAMemory".He Junyan2021-08-1611-22/+42
| | | | | | | | "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>
* fdkaacdec: Add Converter class to hint gst-validateThibault Saunier2021-08-132-2/+2
| | | | | | | | | | fdkaacdec have minimal conversion capability, adding the Converter class allow gst-validate to behave properly and not spit an error when it notice that the number of channels or rate miss-match in and out. Same logic as with opusdec, see: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1142> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2462>
* 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>
* ccconverter: fix overflow when not doing framerate conversionMathieu Duponchelle2021-08-131-0/+6
| | | | | | | | | When converting from one framerate to another, counters are reset periodically, however when not converting they never are and can_genearte_output ends up making overflow-prone calculations with large values for input_frames and output_frames. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2465>
* webrtcbin: Don't assume that non-audio medias are video medias when creating ↵Sebastian Dröge2021-08-121-3/+10
| | | | | | | | transceivers And print the unknown media kind in the logs. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2464>
* webrtcbin: Use the correct media for deciding the media kind when creating ↵Sebastian Dröge2021-08-121-1/+1
| | | | | | the transceiver from the SDP Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2464>
* codecs: h264dec: Output the picture directly if already a frame.He Junyan2021-08-121-1/+1
| | | | | | | | | We forget one case that is the frame and field pictures may be mixed together. For this case, the dpb is interlaced while the last picture may be a complete frame. We do not need to cache that complete picture and should output it directly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2448>
* 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>
* openh264: Respect level set downstreamThibault Saunier2021-08-092-1/+16
| | | | | | | | We were not specifying the requested level to openh264 meaning that it was choosing anything and was not respecting what was specified\ downstream Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2289>
* x265: Fix a deadlock when failing to create the x265enc.He Junyan2021-08-091-2/+5
| | | | | | | | | The GST_ELEMENT_ERROR will call the gst_object_get_path_string and use gst_object_get_parent to get the full object path name, which needs to lock the object. But we are already in a locked context and so this will cause a deadlock, the pipeline can not exit normally. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2451>
* rtmpsrc: mention setting librtmp flags in docsR S Nikhil Krishna2021-08-091-0/+10
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2424>
* mpeg2enc: fix interlace-mode detectionMathieu Duponchelle2021-08-051-1/+19
| | | | | | | Previously, the code was always assuming progressive input, fix this by looking at the caps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2455>
* Use g_memdup2() where available and add fallback for older GLib versionsTim-Philipp Müller2021-08-0526-36/+46
| | | | | | | 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>
* timecodestamper: Fix latency calculationSebastian Dröge2021-08-051-3/+5
| | | | | | | The LTC extra latency is in ms already and not in frames, so multiplying with the framerate will end up with a wrong number. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2453>
* 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>
* d3d11: Disable packed and subsampled YUV formatsSeungha Yang2021-07-293-3/+18
| | | | | | | | Direct3D11 sampler doesn't support them very well, and conversion outputs usually result in poor visual quality with our shader code. Should disable support for such formats for now Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2344>
* tsdemux: Notify when ignore_pcr is setJan Alexander Steffens (heftig)2021-07-281-0/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2437>
* cccombiner: fix CDP padding detectionMathieu Duponchelle2021-07-281-1/+1
| | | | | | | | While a cc_data_pkt with cc_valid 0 should be considered padding, it might be followed up by valid DTVCC packets, and should not cause the whole CDP packet to get discarded. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2440>
* codecs: h264dec: Improve the find_first_field_picture().He Junyan2021-07-281-31/+53
| | | | | | | | | | | We need to consider the first field of the last picture when the last picture can not enter the DPB. Another change is, when prev field's frame_num is not equal to the current field's frame_num, we should also return FASLE because it is also a case of losing some field. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2430>
* codecs: h264dec: consider the last field when add picture to DPB.He Junyan2021-07-281-6/+28
| | | | | | | | There are cases that the first field of the last picture is not a ref but the second field is a ref. We need to add both of them because the bumping always needs a complete frame in the DPB. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2430>
* codecs: h264dec: Consider the field case when directly output.He Junyan2021-07-281-5/+73
| | | | | | | | | | | For interlaced streams, it is also possible that the last frame is not able to be inserted into DPB when the DPB is full and the last frame is a non ref. For this case, we need to hold a extra ref for the first field of the last frame and wait for the complete frame with both top and bottom fields. For the progressive stream, the behaviour is unchanged. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2430>
* codecs: h264dec: Fix a error print of dpb_add.He Junyan2021-07-281-1/+1
| | | | | | | When the dpb is interlaced, the max size should be 2*dpb->max_num_frames, correcting the error print info for that. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2430>
* 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>
* player: Add static keyword to _config_quark_tableImanol Fernandez2021-07-282-2/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2439>
* 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>
* debugutils: Only proxy the properties onceNicolas Dufresne2021-07-272-2/+26
| | | | | | | | | The needed once call was removed accidently during porting. This was catch by the CI as memory leaks. Related to !2426 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2438>
* mxf: Handle D10 "picture only" variantEdward Hervey2021-07-271-1/+1
| | | | | | Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/80 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2436>
* 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>
* mxfvc3: Also accept clip-wrapped vc-3Edward Hervey2021-07-271-2/+2
| | | | | | We can now handle this fine Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2434>
* mxfdemux: Handle EOS with non-frame wrappingEdward Hervey2021-07-271-2/+13
| | | | | | | | | | | When reaching the end of non-frame wrapping track in pull mode, we want to force the switch to the next non-eos pad. This is similar to when we exceed the maximum drift. Fixes issues on EOS where not everything would be drained out and stray errors would pop out. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2434>
* mxfdemux: More granular interleaved content handlingEdward Hervey2021-07-272-5/+7
| | | | | | | | An interleave of 500ms can be way too big for some downstream queueing elements. Instead use a smaller 100ms interleave and silence the various warnings about resyncing (it's normal) Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2434>
* debugutils: De-duplicate proxy_properties function to a new utils modulePhilippe Normand2021-07-265-199/+161
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2426>
* Introduce Steinberg ASIO (Audio Streaming Input/Output) pluginSeungha Yang2021-07-2616-0/+4085
| | | | | | | | | | | | | | | 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>
* audiolatency: Expose samplesperbuffer propertySeungha Yang2021-07-263-3/+44
| | | | | | | | | ... for user to be able to set the number of required samples. For instance, our default value is 240 samples (about 5ms latency in case that sample rate is 48000), which might be larger than actual buffer size of audio capture device. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2307>