mpegvideo: remove VLAs
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
8c14f7a593
commit
89b81a1c88
@ -388,7 +388,7 @@ static void v_block_filter(MpegEncContext *s, uint8_t *dst, int w, int h,
|
||||
|
||||
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_CHANGED 2
|
||||
#define MV_UNCHANGED 1
|
||||
|
@ -798,6 +798,11 @@ av_cold int ff_MPV_common_init(MpegEncContext *s)
|
||||
FF_ALLOCZ_OR_GOTO(s->avctx, s->dct_offset,
|
||||
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)
|
||||
}
|
||||
|
||||
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,
|
||||
mb_array_size * sizeof(uint8_t), fail);
|
||||
|
||||
@ -974,6 +981,7 @@ void ff_MPV_common_end(MpegEncContext *s)
|
||||
av_freep(&s->avctx->stats_out);
|
||||
av_freep(&s->ac_stats);
|
||||
av_freep(&s->error_status_table);
|
||||
av_freep(&s->er_temp_buffer);
|
||||
av_freep(&s->mb_index2xy);
|
||||
av_freep(&s->lambda_table);
|
||||
av_freep(&s->q_intra_matrix);
|
||||
@ -983,6 +991,8 @@ void ff_MPV_common_end(MpegEncContext *s)
|
||||
av_freep(&s->input_picture);
|
||||
av_freep(&s->reordered_input_picture);
|
||||
av_freep(&s->dct_offset);
|
||||
av_freep(&s->cplx_tab);
|
||||
av_freep(&s->bits_tab);
|
||||
|
||||
if (s->picture && !s->avctx->internal->is_copy) {
|
||||
for (i = 0; i < s->picture_count; i++) {
|
||||
|
@ -696,6 +696,12 @@ typedef struct MpegEncContext {
|
||||
|
||||
int mpv_flags; ///< flags set by private options
|
||||
int quantizer_noise_shaping;
|
||||
|
||||
/* error resilience stuff */
|
||||
uint8_t *er_temp_buffer;
|
||||
|
||||
/* temp buffers for rate control */
|
||||
float *cplx_tab, *bits_tab;
|
||||
} MpegEncContext;
|
||||
|
||||
#define REBASE_PICTURE(pic, new_ctx, old_ctx) (pic ? \
|
||||
|
@ -529,8 +529,8 @@ static void adaptive_quantization(MpegEncContext *s, double q){
|
||||
const float border_masking = s->avctx->border_masking;
|
||||
float bits_sum= 0.0;
|
||||
float cplx_sum= 0.0;
|
||||
float cplx_tab[s->mb_num];
|
||||
float bits_tab[s->mb_num];
|
||||
float *cplx_tab = s->cplx_tab;
|
||||
float *bits_tab = s->bits_tab;
|
||||
const int qmin= s->avctx->mb_lmin;
|
||||
const int qmax= s->avctx->mb_lmax;
|
||||
Picture * const pic= &s->current_picture;
|
||||
|
Loading…
Reference in New Issue
Block a user