mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-26 17:32:06 +00:00
avcodec/mpegpicture: Decrease size of encoding_error array
The current size is AV_NUM_DATA_POINTERS (i.e. eight). This number is chosen in order to minimize the amount of allocations for AVFrame.extended_(data|buf) for audio; it is meaningless for video for which four is sufficient. So decrease this array in order to minimize what is copied in ff_mpeg_ref_picture() and at the places that copy a whole MpegEncContext. Also do the same for snowenc. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
fbeb8eab44
commit
c936c319bd
@ -29,6 +29,7 @@
|
|||||||
#include "motion_est.h"
|
#include "motion_est.h"
|
||||||
#include "thread.h"
|
#include "thread.h"
|
||||||
|
|
||||||
|
#define MPEGVIDEO_MAX_PLANES 4
|
||||||
#define MAX_PICTURE_COUNT 36
|
#define MAX_PICTURE_COUNT 36
|
||||||
#define EDGE_WIDTH 16
|
#define EDGE_WIDTH 16
|
||||||
|
|
||||||
@ -88,7 +89,7 @@ typedef struct Picture {
|
|||||||
int reference;
|
int reference;
|
||||||
int shared;
|
int shared;
|
||||||
|
|
||||||
uint64_t encoding_error[AV_NUM_DATA_POINTERS];
|
uint64_t encoding_error[MPEGVIDEO_MAX_PLANES];
|
||||||
} Picture;
|
} Picture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1792,7 +1792,7 @@ vbv_retry:
|
|||||||
}
|
}
|
||||||
ff_side_data_set_encoder_stats(pkt, s->current_picture.f->quality,
|
ff_side_data_set_encoder_stats(pkt, s->current_picture.f->quality,
|
||||||
s->current_picture_ptr->encoding_error,
|
s->current_picture_ptr->encoding_error,
|
||||||
(avctx->flags&AV_CODEC_FLAG_PSNR) ? 4 : 0,
|
(avctx->flags&AV_CODEC_FLAG_PSNR) ? MPEGVIDEO_MAX_PLANES : 0,
|
||||||
s->pict_type);
|
s->pict_type);
|
||||||
|
|
||||||
if (avctx->flags & AV_CODEC_FLAG_PASS1)
|
if (avctx->flags & AV_CODEC_FLAG_PASS1)
|
||||||
|
@ -35,6 +35,8 @@
|
|||||||
#include "mpegvideo.h"
|
#include "mpegvideo.h"
|
||||||
#include "h264qpel.h"
|
#include "h264qpel.h"
|
||||||
|
|
||||||
|
#define SNOW_MAX_PLANES 4
|
||||||
|
|
||||||
#define FF_ME_ITER 3
|
#define FF_ME_ITER 3
|
||||||
|
|
||||||
#define MID_STATE 128
|
#define MID_STATE 128
|
||||||
@ -188,7 +190,7 @@ typedef struct SnowContext{
|
|||||||
AVMotionVector *avmv;
|
AVMotionVector *avmv;
|
||||||
unsigned avmv_size;
|
unsigned avmv_size;
|
||||||
int avmv_index;
|
int avmv_index;
|
||||||
uint64_t encoding_error[AV_NUM_DATA_POINTERS];
|
uint64_t encoding_error[SNOW_MAX_PLANES];
|
||||||
|
|
||||||
int pred;
|
int pred;
|
||||||
}SnowContext;
|
}SnowContext;
|
||||||
|
@ -1858,7 +1858,7 @@ redo_frame:
|
|||||||
|
|
||||||
ff_side_data_set_encoder_stats(pkt, s->current_picture->quality,
|
ff_side_data_set_encoder_stats(pkt, s->current_picture->quality,
|
||||||
s->encoding_error,
|
s->encoding_error,
|
||||||
(s->avctx->flags&AV_CODEC_FLAG_PSNR) ? 4 : 0,
|
(s->avctx->flags&AV_CODEC_FLAG_PSNR) ? SNOW_MAX_PLANES : 0,
|
||||||
s->current_picture->pict_type);
|
s->current_picture->pict_type);
|
||||||
|
|
||||||
pkt->size = ff_rac_terminate(c, 0);
|
pkt->size = ff_rac_terminate(c, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user