Disable image flipping during JPEG decoding if CODEC_FLAG_EMU_EDGE is set
instead of either aborting on the assert or crashing due to writing beyond the array due to insufficient padding. Originally committed as revision 20552 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@@ -770,6 +770,10 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int Ah, i
|
|||||||
uint8_t* data[MAX_COMPONENTS];
|
uint8_t* data[MAX_COMPONENTS];
|
||||||
int linesize[MAX_COMPONENTS];
|
int linesize[MAX_COMPONENTS];
|
||||||
|
|
||||||
|
if(s->flipped && s->avctx->flags & CODEC_FLAG_EMU_EDGE) {
|
||||||
|
av_log(s->avctx, AV_LOG_ERROR, "Can not flip image with CODEC_FLAG_EMU_EDGE set!\n");
|
||||||
|
s->flipped = 0;
|
||||||
|
}
|
||||||
for(i=0; i < nb_components; i++) {
|
for(i=0; i < nb_components; i++) {
|
||||||
int c = s->comp_index[i];
|
int c = s->comp_index[i];
|
||||||
data[c] = s->picture.data[c];
|
data[c] = s->picture.data[c];
|
||||||
@@ -777,7 +781,6 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int Ah, i
|
|||||||
s->coefs_finished[c] |= 1;
|
s->coefs_finished[c] |= 1;
|
||||||
if(s->flipped) {
|
if(s->flipped) {
|
||||||
//picture should be flipped upside-down for this codec
|
//picture should be flipped upside-down for this codec
|
||||||
assert(!(s->avctx->flags & CODEC_FLAG_EMU_EDGE));
|
|
||||||
data[c] += (linesize[c] * (s->v_scount[i] * (8 * s->mb_height -((s->height/s->v_max)&7)) - 1 ));
|
data[c] += (linesize[c] * (s->v_scount[i] * (8 * s->mb_height -((s->height/s->v_max)&7)) - 1 ));
|
||||||
linesize[c] *= -1;
|
linesize[c] *= -1;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user