lavc: introduce a new decoding/encoding API with decoupled input/output

Until now, the decoding API was restricted to outputting 0 or 1 frames
per input packet. It also enforces a somewhat rigid dataflow in general.

This new API seeks to relax these restrictions by decoupling input and
output. Instead of doing a single call on each decode step, which may
consume the packet and may produce output, the new API requires the user
to send input first, and then ask for output.

For now, there are no codecs supporting this API. The API can work with
codecs using the old API, and most code added here is to make them
interoperate. The reverse is not possible, although for audio it might.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
wm4
2016-03-22 19:09:53 +01:00
committed by Anton Khirnov
parent 0d2fcdb1c5
commit 05f66706d1
6 changed files with 538 additions and 8 deletions

View File

@@ -13,6 +13,11 @@ libavutil: 2015-08-28
API changes, most recent first:
2016-xx-xx - xxxxxxx - lavc 57.16.0 - avcodec.h
Add a new audio/video encoding and decoding API with decoupled input
and output -- avcodec_send_packet(), avcodec_receive_frame(),
avcodec_send_frame() and avcodec_receive_packet().
2016-xx-xx - xxxxxxx - lavc 57.15.0 - avcodec.h
Add a new bitstream filtering API working with AVPackets.
Deprecate the old bistream filtering API.