summaryrefslogtreecommitdiff
path: root/libavcodec/utils.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2013-12-20 16:00:07 +0100
committerAnton Khirnov <anton@khirnov.net>2014-06-26 16:02:12 +0200
commit1b04eb20f7e3f0a71f73ba91efcc3d60a435e443 (patch)
treee24cd88c317f7261c0d503c1dee8a319eb2d971a /libavcodec/utils.c
parenta0e1c3517a656dd32293f054a339e0ac73328138 (diff)
lavc: do not allocate edges in the default get_buffer2()
Diffstat (limited to 'libavcodec/utils.c')
-rw-r--r--libavcodec/utils.c22
1 files changed, 1 insertions, 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;