Commit 89b81a1c authored by Ronald S. Bultje's avatar Ronald S. Bultje Committed by Martin Storsjö

mpegvideo: remove VLAs

Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
parent 8c14f7a5
...@@ -388,7 +388,7 @@ static void v_block_filter(MpegEncContext *s, uint8_t *dst, int w, int h, ...@@ -388,7 +388,7 @@ static void v_block_filter(MpegEncContext *s, uint8_t *dst, int w, int h,
static void guess_mv(MpegEncContext *s) static void guess_mv(MpegEncContext *s)
{ {
uint8_t fixed[s->mb_stride * s->mb_height]; uint8_t *fixed = s->er_temp_buffer;
#define MV_FROZEN 3 #define MV_FROZEN 3
#define MV_CHANGED 2 #define MV_CHANGED 2
#define MV_UNCHANGED 1 #define MV_UNCHANGED 1
......
...@@ -798,6 +798,11 @@ av_cold int ff_MPV_common_init(MpegEncContext *s) ...@@ -798,6 +798,11 @@ av_cold int ff_MPV_common_init(MpegEncContext *s)
FF_ALLOCZ_OR_GOTO(s->avctx, s->dct_offset, FF_ALLOCZ_OR_GOTO(s->avctx, s->dct_offset,
2 * 64 * sizeof(uint16_t), fail); 2 * 64 * sizeof(uint16_t), fail);
} }
FF_ALLOC_OR_GOTO(s->avctx, s->cplx_tab,
mb_array_size * sizeof(float), fail);
FF_ALLOC_OR_GOTO(s->avctx, s->bits_tab,
mb_array_size * sizeof(float), fail);
} }
} }
...@@ -809,6 +814,8 @@ av_cold int ff_MPV_common_init(MpegEncContext *s) ...@@ -809,6 +814,8 @@ av_cold int ff_MPV_common_init(MpegEncContext *s)
} }
if (s->width && s->height) { if (s->width && s->height) {
FF_ALLOC_OR_GOTO(s->avctx, s->er_temp_buffer,
mb_array_size * sizeof(uint8_t), fail);
FF_ALLOCZ_OR_GOTO(s->avctx, s->error_status_table, FF_ALLOCZ_OR_GOTO(s->avctx, s->error_status_table,
mb_array_size * sizeof(uint8_t), fail); mb_array_size * sizeof(uint8_t), fail);
...@@ -974,6 +981,7 @@ void ff_MPV_common_end(MpegEncContext *s) ...@@ -974,6 +981,7 @@ void ff_MPV_common_end(MpegEncContext *s)
av_freep(&s->avctx->stats_out); av_freep(&s->avctx->stats_out);
av_freep(&s->ac_stats); av_freep(&s->ac_stats);
av_freep(&s->error_status_table); av_freep(&s->error_status_table);
av_freep(&s->er_temp_buffer);
av_freep(&s->mb_index2xy); av_freep(&s->mb_index2xy);
av_freep(&s->lambda_table); av_freep(&s->lambda_table);
av_freep(&s->q_intra_matrix); av_freep(&s->q_intra_matrix);
...@@ -983,6 +991,8 @@ void ff_MPV_common_end(MpegEncContext *s) ...@@ -983,6 +991,8 @@ void ff_MPV_common_end(MpegEncContext *s)
av_freep(&s->input_picture); av_freep(&s->input_picture);
av_freep(&s->reordered_input_picture); av_freep(&s->reordered_input_picture);
av_freep(&s->dct_offset); av_freep(&s->dct_offset);
av_freep(&s->cplx_tab);
av_freep(&s->bits_tab);
if (s->picture && !s->avctx->internal->is_copy) { if (s->picture && !s->avctx->internal->is_copy) {
for (i = 0; i < s->picture_count; i++) { for (i = 0; i < s->picture_count; i++) {
......
...@@ -696,6 +696,12 @@ typedef struct MpegEncContext { ...@@ -696,6 +696,12 @@ typedef struct MpegEncContext {
int mpv_flags; ///< flags set by private options int mpv_flags; ///< flags set by private options
int quantizer_noise_shaping; int quantizer_noise_shaping;
/* error resilience stuff */
uint8_t *er_temp_buffer;
/* temp buffers for rate control */
float *cplx_tab, *bits_tab;
} MpegEncContext; } MpegEncContext;
#define REBASE_PICTURE(pic, new_ctx, old_ctx) (pic ? \ #define REBASE_PICTURE(pic, new_ctx, old_ctx) (pic ? \
......
...@@ -529,8 +529,8 @@ static void adaptive_quantization(MpegEncContext *s, double q){ ...@@ -529,8 +529,8 @@ static void adaptive_quantization(MpegEncContext *s, double q){
const float border_masking = s->avctx->border_masking; const float border_masking = s->avctx->border_masking;
float bits_sum= 0.0; float bits_sum= 0.0;
float cplx_sum= 0.0; float cplx_sum= 0.0;
float cplx_tab[s->mb_num]; float *cplx_tab = s->cplx_tab;
float bits_tab[s->mb_num]; float *bits_tab = s->bits_tab;
const int qmin= s->avctx->mb_lmin; const int qmin= s->avctx->mb_lmin;
const int qmax= s->avctx->mb_lmax; const int qmax= s->avctx->mb_lmax;
Picture * const pic= &s->current_picture; Picture * const pic= &s->current_picture;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment