diff options
author | Martin Storsjö <martin@martin.st> | 2012-01-06 03:05:27 +0200 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2012-01-07 15:25:30 +0200 |
commit | 867f923df48f6dec76eeff9ba0444a0cb9ff0441 (patch) | |
tree | f2141769b616e3f37b65a9b17f5cd32b0d88800a | |
parent | be540e0cb3ea9f9c7ac26eb0c0b7249344298caa (diff) | |
download | ffmpeg-867f923df48f6dec76eeff9ba0444a0cb9ff0441.tar.gz |
libavcodec: Move apply_param_change up above avcodec_decode_video2
This is in preparation to calling it from avcodec_decode_video2.
Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r-- | libavcodec/utils.c | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index c845a310cd..a1d2a01266 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -842,6 +842,47 @@ int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, return ret; } +static void apply_param_change(AVCodecContext *avctx, AVPacket *avpkt) +{ + int size = 0; + const uint8_t *data; + uint32_t flags; + + if (!(avctx->codec->capabilities & CODEC_CAP_PARAM_CHANGE)) + return; + + data = av_packet_get_side_data(avpkt, AV_PKT_DATA_PARAM_CHANGE, &size); + if (!data || size < 4) + return; + flags = bytestream_get_le32(&data); + size -= 4; + if (size < 4) /* Required for any of the changes */ + return; + if (flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT) { + avctx->channels = bytestream_get_le32(&data); + size -= 4; + } + if (flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT) { + if (size < 8) + return; + avctx->channel_layout = bytestream_get_le64(&data); + size -= 8; + } + if (size < 4) + return; + if (flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE) { + avctx->sample_rate = bytestream_get_le32(&data); + size -= 4; + } + if (flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS) { + if (size < 8) + return; + avctx->width = bytestream_get_le32(&data); + avctx->height = bytestream_get_le32(&data); + size -= 8; + } +} + int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPacket *avpkt) @@ -923,47 +964,6 @@ int attribute_align_arg avcodec_decode_audio3(AVCodecContext *avctx, int16_t *sa } #endif -static void apply_param_change(AVCodecContext *avctx, AVPacket *avpkt) -{ - int size = 0; - const uint8_t *data; - uint32_t flags; - - if (!(avctx->codec->capabilities & CODEC_CAP_PARAM_CHANGE)) - return; - - data = av_packet_get_side_data(avpkt, AV_PKT_DATA_PARAM_CHANGE, &size); - if (!data || size < 4) - return; - flags = bytestream_get_le32(&data); - size -= 4; - if (size < 4) /* Required for any of the changes */ - return; - if (flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT) { - avctx->channels = bytestream_get_le32(&data); - size -= 4; - } - if (flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT) { - if (size < 8) - return; - avctx->channel_layout = bytestream_get_le64(&data); - size -= 8; - } - if (size < 4) - return; - if (flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE) { - avctx->sample_rate = bytestream_get_le32(&data); - size -= 4; - } - if (flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS) { - if (size < 8) - return; - avctx->width = bytestream_get_le32(&data); - avctx->height = bytestream_get_le32(&data); - size -= 8; - } -} - int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, |