From 1b04eb20f7e3f0a71f73ba91efcc3d60a435e443 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 20 Dec 2013 16:00:07 +0100 Subject: [PATCH] lavc: do not allocate edges in the default get_buffer2() --- libavcodec/utils.c | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 33983f86fe..d6019d957f 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -359,11 +359,6 @@ static int update_frame_pool(AVCodecContext *avctx, AVFrame *frame) avcodec_align_dimensions2(avctx, &w, &h, pool->stride_align); - if (!(avctx->flags & CODEC_FLAG_EMU_EDGE)) { - w += EDGE_WIDTH * 2; - h += EDGE_WIDTH * 2; - } - do { // NOTE: do not align linesizes individually, this breaks e.g. assumptions // that linesize[0] == 2*linesize[1] in the MPEG-encoder for 4:2:2 @@ -487,9 +482,6 @@ fail: static int video_get_buffer(AVCodecContext *s, AVFrame *pic) { FramePool *pool = s->internal->pool; - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pic->format); - int pixel_size = desc->comp[0].step_minus1 + 1; - int h_chroma_shift, v_chroma_shift; int i; if (pic->data[0] != NULL) { @@ -500,26 +492,14 @@ static int video_get_buffer(AVCodecContext *s, AVFrame *pic) memset(pic->data, 0, sizeof(pic->data)); pic->extended_data = pic->data; - av_pix_fmt_get_chroma_sub_sample(s->pix_fmt, &h_chroma_shift, &v_chroma_shift); - for (i = 0; i < 4 && pool->pools[i]; i++) { - const int h_shift = i == 0 ? 0 : h_chroma_shift; - const int v_shift = i == 0 ? 0 : v_chroma_shift; - pic->linesize[i] = pool->linesize[i]; pic->buf[i] = av_buffer_pool_get(pool->pools[i]); if (!pic->buf[i]) goto fail; - // no edge if EDGE EMU or not planar YUV - if ((s->flags & CODEC_FLAG_EMU_EDGE) || !pool->pools[2]) - pic->data[i] = pic->buf[i]->data; - else { - pic->data[i] = pic->buf[i]->data + - FFALIGN((pic->linesize[i] * EDGE_WIDTH >> v_shift) + - (pixel_size * EDGE_WIDTH >> h_shift), pool->stride_align[i]); - } + pic->data[i] = pic->buf[i]->data; } for (; i < AV_NUM_DATA_POINTERS; i++) { pic->data[i] = NULL;