- 20 Apr, 2019 1 commit
-
-
Gyan Doshi authored
Discard decoded frames which differ from first decoded frame in stream.
-
- 10 Dec, 2018 1 commit
-
-
Carl Eugen Hoyos authored
Silences a warning: libavcodec/decode.c:1378:13: warning: variable 'ret' is used uninitialized whenever 'if' condition is true
-
- 30 Oct, 2018 1 commit
-
-
Jun Zhao authored
-1 will be map to error number "EPERM", and will be map to the error message like "Error while decoding stream #0:0: Operation not permitted", it's a strange error message when debug update_frame_pool fail, now only return the error code from av_image_fill_pointers in case of av_image_fill_pointers failure. Signed-off-by:
Jun Zhao <mypopydev@gmail.com>
-
- 27 Oct, 2018 1 commit
-
-
James Almer authored
Revert "decode: copy the output parameters from the last bsf in the chain back to the AVCodecContext" This reverts commit 662558f9. The avcodec_parameters_to_context() call was freeing and reallocating AVCodecContext->extradata, essentially taking ownership of it, which according to the doxy is user owned. This is an API break and has produces crashes in some library users like Firefox. Revert until a better solution is found to internally propagate the filtered extradata back into the decoder context. Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 24 Oct, 2018 1 commit
-
-
James Almer authored
Revert "avcodec/decode: copy the output parameters from the last bsf in the chain back to the AVCodecContext" This reverts commit f631c328. The avcodec_parameters_to_context() call was freeing and reallocating AVCodecContext->extradata, essentially taking ownership of it, which according to the doxy is user owned. This is an API break and has produced crashes in some library users like Firefox[1]. Revert until a better solution is found to internally propagate the filtered extradata back into the decoder context, or a decision is made to change the API. [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1486080Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 17 Aug, 2018 4 commits
-
-
James Almer authored
Signed-off-by:
James Almer <jamrial@gmail.com>
-
James Almer authored
Signed-off-by:
James Almer <jamrial@gmail.com>
-
James Almer authored
avcodec/decode: copy the output parameters from the last bsf in the chain back to the AVCodecContext Certain AVCodecParameters, like the contents of the extradata, may be changed by the init() function of any of the bitstream filters in the chain. Signed-off-by:
James Almer <jamrial@gmail.com>
-
James Almer authored
Initialize the bsfs once when opening the codec and uninitialize them once when closing it, instead of at every codec flush/seek. Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 19 Jul, 2018 1 commit
-
-
Aman Gupta authored
Fixes a bug that would prevent using multiple comma-separated filters, and allows options to be passed to each filter. Based on similar loop in ffmpeg_opt.c's new_output_stream(). Signed-off-by:
Aman Gupta <aman@tmm1.net>
-
- 15 Jun, 2018 1 commit
-
-
Michael Niedermayer authored
STRIDE_ALIGN is not known in libavutil so av_image_check_size* cannot consider it Fixes: OOM Fixes: 8291/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SNOW_fuzzer-5176528009691136 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpegSigned-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- 05 Apr, 2018 1 commit
-
-
wm4 authored
The pseudo palette allocation is optional now. But if it's still allocated (like the internal get_buffer2 implementation does, for compatibility), it shouldn't print a warning.
-
- 03 Apr, 2018 1 commit
-
-
wm4 authored
PSEUDOPAL pixel formats are not paletted, but carried a palette with the intention of allowing code to treat unpaletted formats as paletted. The palette simply mapped the byte values to the resulting RGB values, making it some sort of LUT for RGB conversion. It was used for 1 byte formats only: RGB4_BYTE, BGR4_BYTE, RGB8, BGR8, GRAY8. The first 4 are awfully obscure, used only by some ancient bitmap formats. The last one, GRAY8, is more common, but its treatment is grossly incorrect. It considers full range GRAY8 only, so GRAY8 coming from typical Y video planes was not mapped to the correct RGB values. This cannot be fixed, because AVFrame.color_range can be freely changed at runtime, and there is nothing to ensure the pseudo palette is updated. Also, nothing actually used the PSEUDOPAL palette data, except xwdenc (trivially changed in the previous commit). All other code had to treat it as a special case, just to ignore or to propagate palette data. In conclusion, this was just a very strange old mechnaism that has no real justification to exist anymore (although it may have been nice and useful in the past). Now it's an artifact that makes the API harder to use: API users who allocate their own pixel data have to be aware that they need to allocate the palette, or FFmpeg will crash on them in _some_ situations. On top of this, there was no API to allocate the pseuo palette outside of av_frame_get_buffer(). This patch not only deprecates AV_PIX_FMT_FLAG_PSEUDOPAL, but also makes the pseudo palette optional. Nothing accesses it anymore, though if it's set, it's propagated. It's still allocated and initialized for compatibility with API users that rely on this feature. But new API users do not need to allocate it. This was an explicit goal of this patch. Most changes replace AV_PIX_FMT_FLAG_PSEUDOPAL with FF_PSEUDOPAL. I first tried #ifdefing all code, but it was a mess. The FF_PSEUDOPAL macro reduces the mess, and still allows defining FF_API_PSEUDOPAL to 0. Passes FATE with FF_API_PSEUDOPAL enabled and disabled. In addition, FATE passes with FF_API_PSEUDOPAL set to 1, but with allocation functions manually changed to not allocating a palette.
-
- 25 Mar, 2018 1 commit
-
-
wm4 authored
This is for applications which want to explicitly check for invalid UTF-8 manually, and take actions that are better than dropping invalid subtitles silently. (It's pretty much silent because sporadic avcodec error messages are so common that you can't reasonably display them in a prominent and meaningful way in a application GUI.)
-
- 14 Feb, 2018 1 commit
-
-
James Almer authored
And remove the function altogether while at it. It's a duplicate of another. Reviewed-by:
wm4 <nfxjfg@googlemail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 11 Feb, 2018 2 commits
-
-
Mark Thompson authored
This number is definitely required when frame threading is enabled, so add it here rather than forcing all users to handle it themselves. DXVA2 contained this addition in specific code as well (therefore being added twice in the internal case) - just remove it from there.
-
Mark Thompson authored
AVCodecContext.extra_hw_frames is added to the size of hardware frame pools created by libavcodec for APIs which require fixed-size pools. This allows the user to keep references to a greater number of frames after decode, which may be necessary for some use-cases. It is also added to the initial_pool_size value returned by avcodec_get_hw_frames_parameters() if a fixed-size pool is required.
-
- 19 Dec, 2017 2 commits
-
-
Mark Thompson authored
-
Mark Thompson authored
This removes the dependency that hardware pixel formats previously had on AVHWAccel instances, meaning only those which actually do something need exist after this patch. Also updates avcodec_default_get_format() to be able to choose hardware formats if either a matching device has been supplied or no additional external configuration is required, and avcodec_get_hw_frames_parameters() to use the hardware config rather than searching the old hwaccel list.
-
- 09 Dec, 2017 1 commit
-
-
James Cowgill authored
In commit 061a0c14 ("decode: restructure the core decoding code"), the deprecated avcodec_decode_* APIs were reworked so that they called into the new avcodec_send_packet / avcodec_receive_frame API. This had the side effect of prohibiting sending new packets containing data after a drain packet, but in previous versions of FFmpeg this "worked" and some applications relied on it. To restore some compatibility, reset the codec if we receive a new non-drain packet using the old API after draining has completed. While this does not give the same behaviour as the old API did, in the majority of cases it works and it does not require changes to any other part of the decoding code. Fixes ticket #6775 Signed-off-by:
James Cowgill <jcowgill@debian.org> Signed-off-by:
Marton Balint <cus@passwd.hu>
-
- 26 Nov, 2017 2 commits
-
-
Mark Thompson authored
-
Mark Thompson authored
This removes the dependency that hardware pixel formats previously had on AVHWAccel instances, meaning only those which actually do something need exist after this patch. Also updates avcodec_default_get_format() to be able to choose hardware formats if either a matching device has been supplied or no additional external configuration is required, and avcodec_get_hw_frames_parameters() to use the hardware config rather than searching the old hwaccel list. The FF_CODEC_CAP_HWACCEL_REQUIRE_CLASS mechanism is deleted because it no longer does anything (the codec already contains the pointers to the matching hwaccels).
-
- 11 Nov, 2017 1 commit
-
-
Timo Rothenpieler authored
There is no reason to keep this intact when decoding failed, specially as private_ref is supposed to always be NULL when a frame is returned to the user.
-
- 10 Nov, 2017 5 commits
-
-
wm4 authored
-
wm4 authored
Currently, AVHWAccels are looked up using a (codec_id, pixfmt) tuple. This means it's impossible to have 2 decoders for the same codec and using the same opaque hardware pixel format. This breaks merging Libav's CUVID hwaccel. FFmpeg has its own CUVID support, but it's a full stream decoder, using NVIDIA's codec parser. The Libav one is a true hwaccel, which is based on the builtin software decoders. Fix this by introducing another field to disambiguate AVHWAccels, and use it for our CUVID decoders. FF_CODEC_CAP_HWACCEL_REQUIRE_CLASS makes this mechanism backwards compatible and optional.
-
Anton Khirnov authored
This will be useful in the CUVID hwaccel. It should also eventually replace current decoder-specific mechanisms used by various other hwaccels. Merges Libav commit 704311b2.
-
Anton Khirnov authored
This will be useful in the CUVID hwaccel. Merges Libav commit badf0951.
-
Anton Khirnov authored
Use the AVFrame.private_ref field. This new struct will be useful in the following commits. Merges Libav commit 359a8a3e.
-
- 30 Oct, 2017 1 commit
-
-
Anton Khirnov authored
If the get_buffer() call fails, the frame might have some side data already set. Make sure it gets freed. Merges Libav commit de776714. Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 23 Oct, 2017 1 commit
-
-
wm4 authored
Commit b46a77f1 accidentally broke this (requested change that was added to the patch later and which was not fully tested). Signed-off-by:
Mark Thompson <sw@jkqxz.net>
-
- 22 Oct, 2017 1 commit
-
-
James Almer authored
The actual API is left in place until the deprecation period ends. Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 19 Oct, 2017 1 commit
-
-
wm4 authored
This adds a new API, which allows the API user to query the required AVHWFramesContext parameters. This also reduces code duplication across the hwaccels by introducing ff_decode_get_hw_frames_ctx(), which uses the new API function. It takes care of initializing the hw_frames_ctx if needed, and does additional error handling and API usage checking. Support for VDA and Cuvid missing. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
- 28 Sep, 2017 1 commit
-
-
Karthick J authored
Signed-off-by:
Karthick J <kjeyapal@akamai.com> Signed-off-by:
Marton Balint <cus@passwd.hu>
-
- 04 Sep, 2017 1 commit
-
-
James Almer authored
This flag replaces the deprecated, non-prefixed HWACCEL_CODEC_CAP_EXPERIMENTAL one. Reviewed-by:
Michael Niedermayer <michael@niedermayer.cc> Signed-off-by:
James Almer <jamrial@gmail.com>
-
- 08 Aug, 2017 1 commit
-
-
wm4 authored
Signed-off-by:
Anton Khirnov <anton@khirnov.net> Merged from Libav commit 47399ccd.
-
- 26 Jul, 2017 5 commits
-
-
Anton Khirnov authored
This will be useful in the CUVID hwaccel. It should also eventually replace current decoder-specific mechanisms used by various other hwaccels.
-
Anton Khirnov authored
This will be useful in the CUVID hwaccel.
-
Anton Khirnov authored
Use the AVFrame.opaque_ref field. The original user's opaque_ref is wrapped in the lavc struct and then unwrapped before the frame is returned to the caller. This new struct will be useful in the following commits.
-
Anton Khirnov authored
If the get_buffer() call fails, the frame might have some side data already set. Make sure it gets freed. CC: libav-stable@libav.org
-
wm4 authored
Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-