summaryrefslogtreecommitdiff
path: root/libavcodec/decode.h
Commit message (Collapse)AuthorAge
* lavc: add content light/mastering display side data wrappersAnton Khirnov2024-03-04
|
* avcodec: add internal side data wrappersNiklas Haas2024-03-04
| | | | | | | | The signature of these wrappers is more complicated due to a need to distinguish between "failed allocating side data" and "side data was already present". Signed-off-by: Anton Khirnov <anton@khirnov.net>
* avcodec/decode: Use RefStruct API for hwaccel_picture_privateAndreas Rheinhardt2023-10-07
| | | | | | | | | | | | Avoids allocations and therefore error checks: Syncing hwaccel_picture_private across threads can't fail any more. Also gets rid of an unnecessary pointer in structures and in the parameter list of ff_hwaccel_frame_priv_alloc(). Reviewed-by: Anton Khirnov <anton@khirnov.net> Reviewed-by: Lynne <dev@lynne.ee> Tested-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/hevcdec: check for DOVI configuration record in AVCodecContext side dataJames Almer2023-10-06
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/decode: Extend ff_hwaccel_frame_priv_alloc()'s taskAndreas Rheinhardt2023-08-07
| | | | | | | | | | | | | | | | All usages of ff_hwaccel_frame_priv_alloc() have the same pattern: Check for whether a hwaccel is in use; check whether it needs private frame-specific data; allocate the AVBuffer and set it. This commit modifies ff_hwaccel_frame_priv_alloc() to perform this task on its own. (It also seems that the H.264 decoder did not perform proper cleanup in case the buffer could not be allocated. This has been changed.) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* lavc: add a header for internal generic-layer APIsAnton Khirnov2023-07-07
| | | | | | | | | | The goal is to distinguish between APIs provided by the generic layer to individual codecs and APIs internal to the generic layer. Start by moving ff_{decode,encode}_receive_frame() and ff_{decode,encode}_preinit() into this new header, as those functions are called from generic code and should not be visible to individual codecs.
* avcodec: add AVHWAccel.free_frame_priv callbackLynne2023-05-29
|
* lavc/decode: allow using AV_CODEC_FLAG_COPY_OPAQUE for decodingAnton Khirnov2023-02-04
| | | | | Use it to propagate AVPacket.opaque[_ref] to corresponding AVFrame fields. This is a more convenient alternative to reordered_opaque.
* avcodec/decode: add a function to set frame props from a user provided packetJames Almer2022-12-12
| | | | | | | It will be useful for decoders that don't rely on last_pkt_props to set frame props. Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/internal: Move ff_side_data_update_matrix_encoding to decode.hAndreas Rheinhardt2022-08-27
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/internal: Move ff_set_dimensions() to decode.hAndreas Rheinhardt2022-08-27
| | | | | | | | | Decoder-only, as the dimensions are set by the user when encoding. Also fixup the other headers a bit while removing unnecessary internal.h inclusions. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/internal: Move ff_set_sar() to decode.hAndreas Rheinhardt2022-08-27
| | | | | | | Only used by decoders, as the SAR has to be set by the user when encoding. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/internal: Move ff_get_buffer() to decode.hAndreas Rheinhardt2022-08-27
| | | | | | | | | Only used by decoders (encoders have ff_encode_alloc_frame()). Also clean up the other headers a bit while removing now redundant internal.h inclusions. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/internal: Move ff_reget_buffer() to decode.hAndreas Rheinhardt2022-08-27
| | | | | | | | | Only used by decoders. Also clean up the headers a bit while removing now unnecessary internal.h inclusions. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/internal: Move ff_get_format() to decode.hAndreas Rheinhardt2022-08-27
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* lavc: add API for exporting reconstructed frames from encodersAnton Khirnov2022-08-02
|
* avcodec/codec_internal: Add FFCodec, hide internal part of AVCodecAndreas Rheinhardt2022-03-21
| | | | | | | | | | | | | | | | Up until now, codec.h contains both public and private parts of AVCodec. This exposes the internals of AVCodec to users and leads them into the temptation of actually using them and forces us to forward-declare structures and types that users can't use at all. This commit changes this by adding a new structure FFCodec to codec_internal.h that extends AVCodec, i.e. contains the public AVCodec as first member; the private fields of AVCodec are moved to this structure, leaving codec.h clean. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec: Factor updating palette outAndreas Rheinhardt2021-03-22
| | | | | | | | | Because the properties of frames returned from ff_get/reget_buffer are not reset at all, lots of returned frames had palette_has_changed wrongly set to 1. This has been changed, too. Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* lavc: move decoder bsf init into decoder-specific codeAnton Khirnov2021-03-16
|
* lavc: factor decoder validation/setup from avcodec_open2()Anton Khirnov2021-03-16
|
* avcodec/decode: move the ff_decode_frame_props() prototype to the proper headerJames Almer2020-08-20
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/decode: remove ff_decode_bsfs_uninit()James Almer2020-05-21
| | | | | | It's been a wrapper for a simple av_bsf_free() call since c96904f525. Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/decode: flush the internal bsfs instead of constantly reinitalizing themJames Almer2018-08-16
| | | | | | | 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>
* libavcodec/decode: remove duplicate includesMichael Niedermayer2017-12-13
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* Merge commit 'b46a77f19ddc4b2b5fa3187835ceb602a5244e24'James Almer2017-11-11
|\ | | | | | | | | | | | | | | | | * commit 'b46a77f19ddc4b2b5fa3187835ceb602a5244e24': lavc: external hardware frame pool initialization Includes the fix from e724bdfffbd3c27aac53d1f32f20f105f37caef0 Merged-by: James Almer <jamrial@gmail.com>
| * lavc: external hardware frame pool initializationwm42017-10-19
| | | | | | | | | | | | | | | | | | | | | | | | 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>
| * decode: add a per-frame private data for hwaccel useAnton Khirnov2017-07-26
| | | | | | | | | | | | This will be useful in the CUVID hwaccel. It should also eventually replace current decoder-specific mechanisms used by various other hwaccels.
| * decode: add a mechanism for performing delayed processing on the decoded framesAnton Khirnov2017-07-26
| | | | | | | | This will be useful in the CUVID hwaccel.
| * decode: add a method for attaching lavc-internal data to framesAnton Khirnov2017-07-26
| | | | | | | | | | | | | | | | 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.
* | decode: add a per-frame private data for hwaccel useAnton Khirnov2017-11-10
| | | | | | | | | | | | | | | | 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 704311b2946d74a80f65906961cd9baaa18683a3.
* | decode: add a mechanism for performing delayed processing on the decoded framesAnton Khirnov2017-11-10
| | | | | | | | | | | | This will be useful in the CUVID hwaccel. Merges Libav commit badf0951f54c1332e77455dc40398f3512540c1b.
* | decode: add a method for attaching lavc-internal data to framesAnton Khirnov2017-11-10
| | | | | | | | | | | | | | | | Use the AVFrame.private_ref field. This new struct will be useful in the following commits. Merges Libav commit 359a8a3e2d1194b52b6c386f94fd0929567dfb67.
* | Merge commit '554e55bbf0e4a3640a784cb512b816e776c56333'Clément Bœsch2017-04-26
|\| | | | | | | | | | | | | * commit '554e55bbf0e4a3640a784cb512b816e776c56333': decode.h: Add missing headers to fix standalone compilation Merged-by: Clément Bœsch <u@pkh.me>
| * decode.h: Add missing headers to fix standalone compilationDiego Biurrun2016-12-14
| |
* | Merge commit '972c71e9cb63e24f57ee481e413199c7d88a8813'James Almer2017-04-22
|\| | | | | | | | | | | | | * commit '972c71e9cb63e24f57ee481e413199c7d88a8813': lavc: add support for filtering packets before decoding Merged-by: James Almer <jamrial@gmail.com>
| * lavc: add support for filtering packets before decodingAnton Khirnov2016-12-14
| |
* | Merge commit '061a0c14bb5767bca72e3a7227ca400de439ba09'James Almer2017-04-22
|/ | | | | | | | | * commit '061a0c14bb5767bca72e3a7227ca400de439ba09': decode: restructure the core decoding code CUVID decoder adapted by wm4. Merged-by: James Almer <jamrial@gmail.com>
* decode: restructure the core decoding codeAnton Khirnov2016-12-14
Currently, the new decoding API is pretty much just a wrapper around the old deprecated one. This is problematic, since it interferes with making full use of the flexibility added by the new API. The old API should also be removed at some future point. Reorganize the code so that the new send_packet/receive_frame functions call the actual decoding directly and change the old deprecated avcodec_decode_* functions into wrappers around the new API. The new internal API for decoders is now changing as well. Before this commit, it mirrors the public API, so the decoders need to implement send_packet() and receive_frame() callbacks. This turns out to require awkward constructs in both the decoders and the generic code. After this commit, the decoders only implement the receive_frame() callback and call a new internal function, ff_decode_get_packet() to obtain input data, in the same manner to how the bitstream filters now work. avcodec will now always make a reference to the input packet, which means that non-refcounted input packets will be copied. Keeping the previous behaviour, where this copy could sometimes be avoided, would make the code significantly more complex and fragile for only dubious gains, since packets are typically small and everyone who cares about performance should use refcounted packets anyway.