提交 65c127e3 编写于 作者: J Jay Freeman 提交者: Baptiste Coudurier

fix mjpega bitfilter when dht, dqt, sof0 are not ordered as expected, patch by...

fix mjpega bitfilter when dht, dqt, sof0 are not ordered as expected, patch by Jay Freeman, saurik at saurik com

Originally committed as revision 16074 to svn://svn.ffmpeg.org/ffmpeg/trunk
上级 d887151d
......@@ -35,6 +35,7 @@ static int mjpega_dump_header(AVBitStreamFilterContext *bsfc, AVCodecContext *av
const uint8_t *buf, int buf_size, int keyframe)
{
uint8_t *poutbufp;
unsigned dqt = 0, dht = 0, sof0 = 0;
int i;
if (avctx->codec_id != CODEC_ID_MJPEG) {
......@@ -59,12 +60,13 @@ static int mjpega_dump_header(AVBitStreamFilterContext *bsfc, AVCodecContext *av
for (i = 0; i < buf_size - 1; i++) {
if (buf[i] == 0xff) {
switch (buf[i + 1]) {
case DQT: /* quant off */
case DHT: /* huff off */
case SOF0: /* image off */
bytestream_put_be32(&poutbufp, i + 46);
break;
case DQT: dqt = i + 46; break;
case DHT: dht = i + 46; break;
case SOF0: sof0 = i + 46; break;
case SOS:
bytestream_put_be32(&poutbufp, dqt); /* quant off */
bytestream_put_be32(&poutbufp, dht); /* huff off */
bytestream_put_be32(&poutbufp, sof0); /* image off */
bytestream_put_be32(&poutbufp, i + 46); /* scan off */
bytestream_put_be32(&poutbufp, i + 46 + AV_RB16(buf + i + 2)); /* data off */
bytestream_put_buffer(&poutbufp, buf + 2, buf_size - 2); /* skip already written SOI */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册