summaryrefslogtreecommitdiffstats
path: root/libavcodec/decode.h
Commit message (Collapse)AuthorAgeFilesLines
* lavc: external hardware frame pool initializationwm42017-10-191-0/+9
| | | | | | | | | | | | 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-261-0/+6
| | | | | | 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-261-0/+15
| | | | This will be useful in the CUVID hwaccel.
* decode: add a method for attaching lavc-internal data to framesAnton Khirnov2017-07-261-0/+13
| | | | | | | | 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.h: Add missing headers to fix standalone compilationDiego Biurrun2016-12-141-0/+2
|
* lavc: add support for filtering packets before decodingAnton Khirnov2016-12-141-0/+2
|
* decode: restructure the core decoding codeAnton Khirnov2016-12-141-0/+35
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.
OpenPOWER on IntegriCloud