summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* codecs: vp8decoder: Use GstFlowReturn everywhereSeungha Yang2021-09-206-97/+154
| | | | | | | | | | boolean return value is not sufficient for representing the reason of error in most cases. For instance, any errors around new_sequence() would mean negotiation error, not just *ERROR*. And some subclasses will allocate buffer/memory/surface on new_picture() but it could be failed because of expected error, likely flushing Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2528>
* mpegtspacketizer: memcmp potentially seen_before dataVivia Nikolaidou2021-09-201-3/+14
| | | | | | | | | | | | | Theoretically the version number is incremented every time there's a new section, but in a world of streaming we can't easily make that assumption. An example of a broken use case is when we're cat-ing two mpeg-ts files together, which is equivalent of capturing a DVB stream while switching channels. A set-top box would know that we switched the channels and reset the demuxer, but in practice this might not happen. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2468>
* player: Fix/add various annotationsSebastian Dröge2021-09-204-70/+83
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2538>
* meson: va: Make AV1 support always optionalSeungha Yang2021-09-191-1/+2
| | | | | | | Otherwise meson configure with -Dva=enabled will be failed when installed libva version is < 1.8 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2532>
* va: caps: Don't use image formats for decoded frames.Víctor Manuel Jáquez Leal2021-09-191-54/+2
| | | | | | | | | | | | | | | | | Initially we tried to use the internal color conversion used in i965 and Gallium drivers when decoding. But this approach has showed limitations and problems. This patch removes completely the possible color conversion at decoding, since it show problems with deinterlacing, for example: gst-launch-1.0 filesrc location=interlaced.mpg2 ! parsebin ! vampeg2dec ! vadeinterlace ! xvimagesink Allowing only the surface formats when decoding is more stable. For color conversion is better to do it explicitly with vapostproc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2531>
* player: Add missing nullable annotationsMarijn Suijten2021-09-192-11/+12
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2197>
* play: Add missing nullable annotationsMarijn Suijten2021-09-192-7/+8
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2197>
* sys: shm: Define shm_enable and shm_deps before escape meson subdirFabian Orccon2021-09-181-1/+2
| | | | | | | | Fixes meson configure in tests if the shm plugin is disabled Fixes #1664 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2534>
* d3d11videosink: Display title of content if possibleSeungha Yang2021-09-184-0/+94
| | | | | | | Update title text of window (currently it's always "Direct3D11 renderer") when we are rendering on internal HWND, not external HWND. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2529>
* d3d11videosink: Remove unused enum valueSeungha Yang2021-09-181-1/+0
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2529>
* msdkenc: Pass color properties to MediaSDK for encodingMengkejiergeli Ba2021-09-181-0/+21
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2523>
* msdkh265enc: Add profile main10 still picture for hevcMengkejiergeli Ba2021-09-182-2/+11
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2524>
* waylandsink: Fix double render checkNicolas Dufresne2021-09-172-5/+14
| | | | | | | | | | | Our code does not support rendering twice the same wl_buffer in a row, so it tries to skip that case, but for this it relied on the GstBuffer pointer, while the cache actually works at the GstMemory level now. To avoid this compare the GstWlBuffer instead. This fixes crash when use in zero-copy with videorate element. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2526>
* codecs: mpeg2decoder: Use tsg framerate for latency.Víctor Manuel Jáquez Leal2021-09-171-10/+16
| | | | | | | | | | Latency setting relies on src pad caps, but they aren't set when the function is called, and latency is never updated. In order to fix it, this patch uses TSG framerate first, and if it's not set yet, sinkpad caps are used to get the framerate. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2514>
* d3d11decoder: Refactor for more unified decoding flowSeungha Yang2021-09-1715-2698/+1801
| | | | | | | | | | | | | | | | | | | | | | | | | | ... and various code cleanup. * Move spreaded decoding API calls into one method Previously, decoding flow of most codecs are - Call DecoderBeginFrame() on start_picture() - Call {Get,Release}DecoderBuffer() on decode_slice() - Call SubmitDecoderBuffers() and DecoderEndFrame() on end_picture() Such spreaded API calls make it hard to keep track of status of decoding. Now it will be done at once in a new method. * Drop a code for non-zero wBadSliceChopping When bitstream buffer provided by driver is not sufficient to write compressed bitstream data, host decoder needs to make use of wBadSliceChopping so that driver can understand there are multiple bitstream buffer. But it's a bit unrealistic and not tested. Since FFMpeg's DXVA implemetaion doesn't support it, we might be able to ignore the case for now. * Make code more portable Consider common logic of GstCodecs -> DXVA translation for all D3D APIs (i,e., D3D9, D3D11, and D3D12). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2525>
* d3d11decoder: Remove duplicated class_init and property related codeSeungha Yang2021-09-178-387/+190
| | | | | | Move them into the decoder helper code to remove duplication Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2525>
* d3d11: Get rid of "extern "C"" wrapping for GST_DEBUG_CATEGORY_EXTERNSeungha Yang2021-09-1723-133/+31
| | | | | | Instead, change the file defining debug category to cpp Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2525>
* tests: skip cc tests if plugin is disabledU. Artie Eoff2021-09-152-7/+7
| | | | | | | | | | | | Skip the closedcaption element tests if the closedcaption option is disabled at compile time (i.e. -Dclosedcaption=disabled). v2: rename pangocairo_dep to avoid conflict with later definition in ext/ttml/meson.build as suggested by @tpm. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1388>
* codecs: h264dec: Check bumping again after inserting current picture.He Junyan2021-09-151-27/+28
| | | | | | | | | | In order to get the lowest latency, we can add another bumping check after inserting the current picture into the DPB immediately. That can avoid waiting for another decoding circle of the next frame and so the latency is lower. Fix: #1628 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2501>
* codecs: h264: Add protection to to_insert picture in bump check.He Junyan2021-09-151-5/+6
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2501>
* codecs: h264dec: Improve the policy to infer max_num_reorder_frames.He Junyan2021-09-151-3/+13
| | | | | | | | | | | | | | The max_num_reorder_frames number can change the way we bumping the pictures in the DPB. The smaller it is, the lower latency we will get. So it is important for live mode streams, but it is not given in VUI parameters sometimes. We now improve the policy to infer it: 1. Never guess it in the "strict" compliance. 2. For baseline and constrained baseline profiles, which do not have B frames, set it to 0. 3. For -intra only profiles, set it to 0. 4. Otherwise, not guess it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2501>
* tests: skip aes test if elements not builtU. Artie Eoff2021-09-142-8/+2
| | | | | | | | | | | | | | | In ext/aes/meson.build, the aes_dep will return not-found if -Daes=disabled, regardless of whether openssl is found or not. Thus, we don't need a separate check for the option. This will also ensure that aes_dep is always defined and we can use it in the tests/check/meson.build unit. Fixes #1660 v2: handle -Daes=disabled, too. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2522>
* wpe: Add support for web:// URIsPhilippe Normand2021-09-131-11/+13
| | | | | | The CEF source already supports this. No good reason for wpesrc not too ;) Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2503>
* va: h264dec: Try to use ConstrainedBaseline or Main to decode BaseLine.He Junyan2021-09-131-2/+10
| | | | | | | | | | In the h264, the Baseline profile is widely misused. A lot of streams declare that they are the Baseline, but in fact they just conform to ConstrainedBaseline. The features such as FMO and ASO are not used at all. If the decoder does not strictly conforms to the SPEC, we can just use Baseline or Main profile to decode it to avoid lots of streams failure. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2428>
* 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>