summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* codecs: h264dec: Improve the fast bump for the live mode.He Junyan2021-09-131-2/+39
| | | | | | | | | We control the policy of fast bump by the profile and the compliance property. For baseline and constrained baseline profiles, we can use more radical bump policy. User can also change the bump policy by setting the compliance property in run time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2432>
* codecs: h264: Change the low_latency to an enum for dpb_needs_bump().He Junyan2021-09-132-19/+34
| | | | | | | | The bool parameter of low_latency is not enough. We have multi policies for low latency bumping, from the safest to something radical. So we need an enum to represent the proper latency requirement. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2432>
* codecs: h264dec: Add a compliance property to control behavior.He Junyan2021-09-132-0/+142
| | | | | | | | | | Some features such as the low-latency DPB bumping and mapping the baseline profile as the constrained-baseline profile do not conform to the H264 offical spec. But in practice, they are very useful and are widely needed. We add this compliance property to control the behavior of the decoder, make it fit more requirement. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2432>
* docs: Update cachePhilippe Normand2021-09-121-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2521>
* va: Update vapostproc documentation.Víctor Manuel Jáquez Leal2021-09-102-0/+24
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* va: Update todo lists, removing deinterlacing.Víctor Manuel Jáquez Leal2021-09-102-2/+0
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
* Add vadeinterlace element.Víctor Manuel Jáquez Leal2021-09-105-1/+967
| | | | 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-102-1/+22
| | | | 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>
* codecs: gstvp9statefulparser: feature_data should be 0 if feature_enable is 0Daniel Almeida2021-09-091-2/+10
| | | | | | | | The spec says in 6.2.11 that feature_data[i][j] should be zero if feature_enabled[i][j] is zero. Instead we retained the old value in the parser. Fix it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2449>
* gsth264parser: Fix handling of NALs with emulation byte setMarek Vasut2021-09-091-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case a set of NALs with emulation_prevention_three_byte is decoded using hardware decoder like Hantro G1, wrong struct v4l2_ctrl_h264_decode_params .dec_ref_pic_marking_bit_size is passed into the kernel, which results in decoding artifacts. Subtract the number of emulation three bytes from the .dec_ref_pic_m->bit_size to get the correct bit size and avoid having these artifacts. Apply the exact same fix to slice->pic_order_cnt_bit_size as well. The following NALs (7, 8, 6, 5) decode with artifacts, .dec_ref_pic_marking_bit_size is set to 10 without this patch. 00000000 00 00 00 01 27 4d 00 20 89 8b 60 3c 04 bf 2e 02 |....'M. ..`<....| 00000010 d4 18 04 18 c0 c0 01 77 00 00 5d c1 7b df 05 00 |.......w..].{...| 00000020 00 00 01 28 ee 1f 20 00 00 01 06 05 10 b9 ed b9 |...(.. .........| 00000030 30 5d 21 4b 71 83 71 2c 10 a3 14 bb 29 80 00 00 |0]!Kq.q,....)...| 00000040 01 25 b8 00 05 00 00 03 03 7f fa 78 1e e7 fd fe |.%.........x....| ^^^^^^^^^^^^--- emulation 3 byte 00000050 b4 62 7a 31 ff 7d 81 fd 26 d8 62 b6 d6 25 46 ae |.bz1.}..&.b..%F.| The following NALs (7, 8, 6, 5) decode fine, .dec_ref_pic_marking_bit_size is set to 2 without this patch. 00000000 00 00 00 01 27 4d 00 20 89 8b 60 3c 04 bf 2e 02 |....'M. ..`<....| 00000010 d4 18 04 18 c0 c0 01 77 00 00 5d c1 7b df 05 00 |.......w..].{...| 00000020 00 00 01 28 ee 1f 20 00 00 01 06 05 10 b9 ed b9 |...(.. .........| 00000030 30 5d 21 4b 71 83 71 2c 10 a3 14 bb 29 80 00 00 |0]!Kq.q,....)...| 00000040 01 25 b8 00 04 c0 00 03 7f fa 78 1e e7 fd fe b4 |.%........x.....| 00000050 62 7a 31 ff 7d 81 fd 26 d8 62 b6 d6 25 46 ae ce |bz1.}..&.b..%F..| Fixes: d0d65fa875 ("codecparsers: h264: record dec_ref_pic_marking() size") Fixes: 0cc7d6f093 ("codecparsers: h264: record pic_order_cnt elements size") Signed-off-by: Marek Vasut <marex@denx.de> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2517>
* gsth264parser: reject memory management control op greater than 6Aaron Boxer2021-09-091-1/+1
| | | | | | | | This prevents assertion from being thrown in gst_h264_dpb_perform_memory_management_control_operation if corrupt NAL has a control op greater than 6 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2508>
* 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>
* vulkan: don't link to XOpenDisplay in documentationMathieu Duponchelle2021-09-081-1/+1
| | | | | | hotdoc doesn't know about that symbol Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2518>
* mpeg2enc: Only allow 1 pending frame for encodingJan Schmidt2021-09-063-16/+25
| | | | | | | | | | Having an unlimited input queue is very bad if the encoder can't run at real-time. Eventually it will consume all RAM. I don't really see any reason to have more than 1 outstanding encoded frame, so remove the queue and limit things to 1 pending frame. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2499>
* wpe: Fix race condition on teardownThibault Saunier2021-09-031-4/+37
| | | | | | | | | | | There was a race when going to PAUSED while pushing a buffer to the pipeline process (where we weren't even cancelling anything). This rework base all the cancellation around the GCancellable "cancelled" signal trying to ensure that the streaming thread will not block once a cancel operation happens. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2504>
* wpe: Use the new element.get_current_running_time APIThibault Saunier2021-09-031-16/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2504>
* wpe: Mark first buffer as starting at 0Thibault Saunier2021-09-031-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2504>
* videoparseutils: Fix for wrong CEA708 minimum size checkSeungha Yang2021-09-021-1/+5
| | | | | | The minimum possible size of valid CEA708 data is 3 bytes, not 7 bytes Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2505>
* wpevideosrc: Uniformise default value for draw-background propertyPhilippe Normand2021-08-311-2/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2498>
* wpevideosrc: Implement basic heuristic for raw caps negotiationPhilippe Normand2021-08-311-6/+17
| | | | | | | Before this patch raw caps could be negotiated already with a capsfilter, but in cases where wpesrc is being auto-plugged this approach can't be used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2498>
* wpevideosrc: Ensure debug category is setPhilippe Normand2021-08-311-0/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2498>
* cccombiner: fix scheduling with interlaced video buffersMathieu Duponchelle2021-08-301-5/+6
| | | | | | | | The initial code was written with the misunderstanding that IS_TOP_FIELD indicated that an interlaced buffer contained a top field, not that it contained only a top field Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2413>
* 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>
* codecs: av1dec: Fix to output frame with highest spatial layerMengkejiergeli Ba2021-08-271-3/+25
| | | | | | | | | During the output process, if there are multiple frames in a TU (i.e. multi-spatial layers case), only one frame with the highest spatial layer id should be selected according to av1 spec. The highest spatial layer id is obtained from idc value of the operating point. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2475>
* dashdemux: copy ContentProtection element including xml namespacesAlex Ashley2021-08-272-2/+109
| | | | | | | | | | | | | | | | | Commit bc09d8cc changed gstmpdparser to put the entire <ContentProtection> element in the "value" field, so that DRMs other than PlayReady could make use of the data inside this element. However, the data in the "value" field does not include any XML namespace declarations that are used within the element. This causes problems for a namespace aware XML parser that wants to make use of this data. This commit modifies the way the XML is converted to a string so that XML namespaces are preserved in the output. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2487>
* errorignore: Add ignore-eos modeVivia Nikolaidou2021-08-273-0/+32
| | | | | | | It's otherwise very complicated to ignore GST_FLOW_EOS without a ghostpad's chain function to rewrite. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2492>
* gsth264parser: fix typo in debug messageBrad Hards2021-08-271-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2493>
* timecodestamper: add support for closedcaption inputMathieu Duponchelle2021-08-263-76/+92
| | | | | | | | | | | | | | Some closedcaption elements like sccenc except input buffers to have timecode metas. The original use case is to serialize closed captions extracted from a video stream, in that case ccextractor copies the video time code metas to the closed caption buffers, but no such mechanism exists when creating a CC stream ex nihilo. Remedy that by having timecodestamper accept closedcaption input caps, as long as they have a framerate. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2490>
* aes: add aes encryption and decryption elementsAaron Boxer2021-08-2514-0/+2350
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1505>
* webrtcbin: Return typed "sctp-transport"Johan Sternerup2021-08-252-2/+3
| | | | | | | With GstWebRTCSCTPTransport type exposed we can now define "sctp-transport" property as being of this type. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2214>
* webrtc: Split sctptransport into lib and implementation partsJohan Sternerup2021-08-2512-120/+237
| | | | | | | | | | | | | | | GstWebRTCSCTPTransport is now made into into an abstract base class that only contains property specifications matching the RTCSctpTransport interface of the W3C WebRTC specification, see https://w3c.github.io/webrtc-pc/#rtcsctptransport-interface. This class is put into the WebRTC library to expose it for applications and to allow for generation of bindings for non-dynamic languages using GObject introspection. The actual implementation is moved to the subclass WebRTCSCTPTransport located in the WebRTC plugin. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2214>
* webrtcbin: Expose SCTP TransportJohan Sternerup2021-08-252-1/+29
| | | | | | | | | | | | | | | | | | Being able to access the SCTP Transport object from the application means the application can access the associated DTLS Transport object and its ICE Transport object. This means we can observe the ICE state also for a data-channel-only session. The collated ice-connection-state on webrtcbin only includes the ICE Transport objects that resides on the RTP transceivers (which is exactly how it is specified in https://w3c.github.io/webrtc-pc/#rtciceconnectionstate-enum). For the consent freshness functionality (RFC 7675) to work the ICE state must be accessible and consequently the SCTP transport must be accessible for enabling consent freshness checking for a data-channel-only session. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2214>
* openh264enc: fix broken header AU emission by base classTim-Philipp Müller2021-08-241-25/+0
| | | | | | | | | | | | | | | | This encoder advertises alignment=au as output format, which means each output frame should contain a full decodable access unit. The video encoder base class is not aware of our output alignment and will output spurious buffers with just the SPS/PPS inside when we call gst_video_encoder_set_headers(), which is broken because each buffer is supposed to contain a full decodable access unit in our case. Just don't tell the base class about our headers, they will be sent at the beginning of each IDR frame anyway. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2178>
* openh264enc: fix caps and header buffer leakTim-Philipp Müller2021-08-241-1/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2178>
* openh264enc: fix broken sps/pps header generationTim-Philipp Müller2021-08-241-2/+7
| | | | | | | | | | | | | This was putting a truncated SPS into the initial header instead of the PPS because it was always reading from the beginning of the bitstream buffer (pBsBuf) and not from the offset where the current NAL is at in the bitstream buffer (psBsBuf + nal_offset). This was broken in commit 17113695. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1576 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2178>
* d3d11bufferpool: Hide buffer_size field from headerSeungha Yang2021-08-2211-31/+84
| | | | | | | | | | | | | | 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>