mirror of https://git.ffmpeg.org/ffmpeg.git
proresdec2: avoid VLA and use SliceContext instead.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
af2a17c09a
commit
8e6511c1e1
|
@ -31,6 +31,7 @@ typedef struct {
|
|||
unsigned mb_y;
|
||||
unsigned mb_count;
|
||||
unsigned data_size;
|
||||
int ret;
|
||||
} SliceContext;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -431,6 +431,7 @@ static int decode_slice_thread(AVCodecContext *avctx, void *arg, int jobnr, int
|
|||
int16_t qmat_chroma_scaled[64];
|
||||
int mb_x_shift;
|
||||
|
||||
slice->ret = -1;
|
||||
//av_log(avctx, AV_LOG_INFO, "slice %d mb width %d mb x %d y %d\n",
|
||||
// jobnr, slice->mb_count, slice->mb_x, slice->mb_y);
|
||||
|
||||
|
@ -494,19 +495,20 @@ static int decode_slice_thread(AVCodecContext *avctx, void *arg, int jobnr, int
|
|||
qmat_chroma_scaled, log2_chroma_blocks_per_mb);
|
||||
}
|
||||
|
||||
slice->ret = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int decode_picture(AVCodecContext *avctx)
|
||||
{
|
||||
ProresContext *ctx = avctx->priv_data;
|
||||
int i, threads_ret[ctx->slice_count];
|
||||
int i;
|
||||
|
||||
avctx->execute2(avctx, decode_slice_thread, NULL, threads_ret, ctx->slice_count);
|
||||
avctx->execute2(avctx, decode_slice_thread, NULL, NULL, ctx->slice_count);
|
||||
|
||||
for (i = 0; i < ctx->slice_count; i++)
|
||||
if (threads_ret[i] < 0)
|
||||
return threads_ret[i];
|
||||
if (ctx->slices[i].ret < 0)
|
||||
return ctx->slices[i].ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue