[FFmpeg-cvslog] lavc: do not allocate edges in the default get_buffer2()

Anton Khirnov git at videolan.org
Thu Jun 26 21:00:56 CEST 2014


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Fri Dec 20 16:00:07 2013 +0100| [1b04eb20f7e3f0a71f73ba91efcc3d60a435e443] | committer: Anton Khirnov

lavc: do not allocate edges in the default get_buffer2()

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1b04eb20f7e3f0a71f73ba91efcc3d60a435e443
---

 libavcodec/utils.c |   22 +---------------------
 1 file changed, 1 insertion(+), 21 deletions(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 33983f8..d6019d9 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;



More information about the ffmpeg-cvslog mailing list