|
|
|
@ -32,6 +32,7 @@ |
|
|
|
|
|
|
|
|
|
#include "avcodec.h" |
|
|
|
|
#include "jpegtables.h" |
|
|
|
|
#include "mjpeg.h" |
|
|
|
|
|
|
|
|
|
static const uint8_t jpeg_header[] = { |
|
|
|
|
0xff, 0xd8, // SOI
|
|
|
|
@ -93,11 +94,11 @@ static int mjpeg2jpeg_filter(AVBitStreamFilterContext *bsfc, |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "input is not MJPEG\n"); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
if (memcmp("AVI1", buf + 6, 4)) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "input is not MJPEG/AVI1\n"); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
if (buf[2] == 0xff && buf[3] == APP0) { |
|
|
|
|
input_skip = (buf[4] << 8) + buf[5] + 4; |
|
|
|
|
} else { |
|
|
|
|
input_skip = 2; |
|
|
|
|
} |
|
|
|
|
input_skip = (buf[4] << 8) + buf[5] + 4; |
|
|
|
|
if (buf_size < input_skip) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "input is truncated\n"); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|