mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
svq1dec: replace VLA with malloc/free
Originally committed as revision 23794 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
bf9aa44bf4
commit
5228bcd870
@ -650,6 +650,7 @@ static int svq1_decode_frame(AVCodecContext *avctx,
|
||||
uint8_t *current, *previous;
|
||||
int result, i, x, y, width, height;
|
||||
AVFrame *pict = data;
|
||||
svq1_pmv *pmv;
|
||||
|
||||
/* initialize bit buffer */
|
||||
init_get_bits(&s->gb,buf,buf_size*8);
|
||||
@ -692,6 +693,10 @@ static int svq1_decode_frame(AVCodecContext *avctx,
|
||||
if(MPV_frame_start(s, avctx) < 0)
|
||||
return -1;
|
||||
|
||||
pmv = av_malloc((FFALIGN(s->width, 16)/8 + 3) * sizeof(*pmv));
|
||||
if (!pmv)
|
||||
return -1;
|
||||
|
||||
/* decode y, u and v components */
|
||||
for (i=0; i < 3; i++) {
|
||||
int linesize;
|
||||
@ -724,13 +729,12 @@ static int svq1_decode_frame(AVCodecContext *avctx,
|
||||
//#ifdef DEBUG_SVQ1
|
||||
av_log(s->avctx, AV_LOG_INFO, "Error in svq1_decode_block %i (keyframe)\n",result);
|
||||
//#endif
|
||||
return result;
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
current += 16*linesize;
|
||||
}
|
||||
} else {
|
||||
svq1_pmv pmv[width/8+3];
|
||||
/* delta frame */
|
||||
memset (pmv, 0, ((width / 8) + 3) * sizeof(svq1_pmv));
|
||||
|
||||
@ -743,7 +747,7 @@ static int svq1_decode_frame(AVCodecContext *avctx,
|
||||
#ifdef DEBUG_SVQ1
|
||||
av_log(s->avctx, AV_LOG_INFO, "Error in svq1_decode_delta_block %i\n",result);
|
||||
#endif
|
||||
return result;
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
@ -761,7 +765,10 @@ static int svq1_decode_frame(AVCodecContext *avctx,
|
||||
MPV_frame_end(s);
|
||||
|
||||
*data_size=sizeof(AVFrame);
|
||||
return buf_size;
|
||||
result = buf_size;
|
||||
err:
|
||||
av_free(pmv);
|
||||
return result;
|
||||
}
|
||||
|
||||
static av_cold int svq1_decode_init(AVCodecContext *avctx)
|
||||
|
Loading…
Reference in New Issue
Block a user