diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2015-06-14 11:45:54 +0200 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2015-06-15 13:39:07 +0200 |
commit | 9af7e8045e3e63ab39adedae9a7c11b1c410af26 (patch) | |
tree | 728dce5a6ebc63b5af09b190e79fd55d155f51ff | |
parent | 03ca6d70df192125a772dadd01acfe3905aa653f (diff) | |
download | ffmpeg-9af7e8045e3e63ab39adedae9a7c11b1c410af26.tar.gz |
lavc: Clarify the behaviour of dimension and format context fields
The AVCodecContext width, height, coded_width, coded_height and format
are used mainly as decoding hints and they get internally overwritten
during the data parsing stage.
Do not assume they match the last AVFrame provided by
avcodec_decode_video2 and assimilated functions since multi-threading
and other frame reordering might make those values to refer to frames
that will be outputted in the future.
CC: libav-stable@libav.org
-rw-r--r-- | libavcodec/avcodec.h | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 3440126662..7edea2c5bc 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1217,21 +1217,31 @@ typedef struct AVCodecContext { /* video only */ /** * picture width / height. + * + * @note Those fields may not match the values of the last + * AVFrame outputted by avcodec_decode_video2 due frame + * reordering. + * * - encoding: MUST be set by user. * - decoding: May be set by the user before opening the decoder if known e.g. * from the container. Some decoders will require the dimensions * to be set by the caller. During decoding, the decoder may - * overwrite those values as required. + * overwrite those values as required while parsing the data. */ int width, height; /** * Bitstream width / height, may be different from width/height e.g. when * the decoded frame is cropped before being output. + * + * @note Those field may not match the value of the last + * AVFrame outputted by avcodec_decode_video2 due frame + * reordering. + * * - encoding: unused * - decoding: May be set by the user before opening the decoder if known * e.g. from the container. During decoding, the decoder may - * overwrite those values as required. + * overwrite those values as required while parsing the data. */ int coded_width, coded_height; @@ -1250,8 +1260,14 @@ typedef struct AVCodecContext { * Pixel format, see AV_PIX_FMT_xxx. * May be set by the demuxer if known from headers. * May be overriden by the decoder if it knows better. + * + * @note This field may not match the value of the last + * AVFrame outputted by avcodec_decode_video2 due frame + * reordering. + * * - encoding: Set by user. - * - decoding: Set by user if known, overridden by libavcodec if known + * - decoding: Set by user if known, overridden by libavcodec while + * parsing the data. */ enum AVPixelFormat pix_fmt; |