diff options
author | Paul B Mahol <onemda@gmail.com> | 2016-02-18 23:47:39 +0100 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2016-02-19 10:45:54 +0100 |
commit | 4956dc88d1fee9f4fa8ae0e26cec0593fef68179 (patch) | |
tree | 04b37addaae42a4b77486cc6a33c32a0f52ed79f /libavformat | |
parent | 98a0053d0f90e3309dc1038b1bae3a48bbd9067c (diff) | |
download | ffmpeg-4956dc88d1fee9f4fa8ae0e26cec0593fef68179.tar.gz |
avcodec/cdxl: add support for raw videos with chunky format
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/cdxl.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libavformat/cdxl.c b/libavformat/cdxl.c index 3d80b477eb..0b8b199ce9 100644 --- a/libavformat/cdxl.c +++ b/libavformat/cdxl.c @@ -111,7 +111,7 @@ static int cdxl_read_packet(AVFormatContext *s, AVPacket *pkt) uint32_t current_size, video_size, image_size; uint16_t audio_size, palette_size, width, height; int64_t pos; - int frames, ret; + int format, frames, ret; if (avio_feof(pb)) return AVERROR_EOF; @@ -125,6 +125,7 @@ static int cdxl_read_packet(AVFormatContext *s, AVPacket *pkt) return AVERROR_INVALIDDATA; } + format = cdxl->header[1] & 0xE0; current_size = AV_RB32(&cdxl->header[2]); width = AV_RB16(&cdxl->header[14]); height = AV_RB16(&cdxl->header[16]); @@ -132,7 +133,10 @@ static int cdxl_read_packet(AVFormatContext *s, AVPacket *pkt) audio_size = AV_RB16(&cdxl->header[22]); if (FFALIGN(width, 16) * (uint64_t)height * cdxl->header[19] > INT_MAX) return AVERROR_INVALIDDATA; - image_size = FFALIGN(width, 16) * height * cdxl->header[19] / 8; + if (format == 0x20) + image_size = width * height * cdxl->header[19] / 8; + else + image_size = FFALIGN(width, 16) * height * cdxl->header[19] / 8; video_size = palette_size + image_size; if (palette_size > 512) |