From 9dd4dcde9cdeba21b4bf40fc664c1277bbe27110 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Wed, 17 Feb 2016 13:37:41 +0100 Subject: avformat/avienc: Use avi_write_packet_internal() to store raw rgb in a more spec compliant way Signed-off-by: Michael Niedermayer --- libavformat/avienc.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'libavformat/avienc.c') diff --git a/libavformat/avienc.c b/libavformat/avienc.c index 2d3d51fcfb..09ec63beba 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -659,6 +659,20 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) if ((ret = write_skip_frames(s, stream_index, pkt->dts)) < 0) return ret; + if (enc->codec_id == AV_CODEC_ID_RAWVIDEO && enc->codec_tag == 0) { + int64_t bpc = enc->bits_per_coded_sample != 15 ? enc->bits_per_coded_sample : 16; + int expected_stride = ((enc->width * bpc + 31) >> 5)*4; + + ret = ff_reshuffle_raw_rgb(s, &pkt, enc, expected_stride); + if (ret < 0) + return ret; + if (ret) { + ret = avi_write_packet_internal(s, pkt); + av_packet_free(&pkt); + return ret; + } + } + return avi_write_packet_internal(s, pkt); } -- cgit v1.2.3