[FFmpeg-cvslog] Merge commit 'b8e899f4bf5f09900aa71552112d32a5566b6baf'
Derek Buitenhuis
git at videolan.org
Wed May 11 20:15:29 CEST 2016
ffmpeg | branch: master | Derek Buitenhuis <derek.buitenhuis at gmail.com> | Wed May 11 19:15:06 2016 +0100| [f4c88eef95e6d4a2463ce2fbae2c5d1a20eb1373] | committer: Derek Buitenhuis
Merge commit 'b8e899f4bf5f09900aa71552112d32a5566b6baf'
* commit 'b8e899f4bf5f09900aa71552112d32a5566b6baf':
mmaldec: Use imgutils.h for copying frames
Merged-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f4c88eef95e6d4a2463ce2fbae2c5d1a20eb1373
---
libavcodec/mmaldec.c | 22 ++++++++--------------
1 file changed, 8 insertions(+), 14 deletions(-)
diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c
index 30861d9..52232d5 100644
--- a/libavcodec/mmaldec.c
+++ b/libavcodec/mmaldec.c
@@ -38,6 +38,7 @@
#include "libavutil/avassert.h"
#include "libavutil/buffer.h"
#include "libavutil/common.h"
+#include "libavutil/imgutils.h"
#include "libavutil/opt.h"
#include "libavutil/log.h"
@@ -618,24 +619,17 @@ static int ffmal_copy_frame(AVCodecContext *avctx, AVFrame *frame,
} else {
int w = FFALIGN(avctx->width, 32);
int h = FFALIGN(avctx->height, 16);
- char *ptr;
- int plane;
- int i;
+ uint8_t *src[4];
+ int linesize[4];
if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
goto done;
- ptr = buffer->data + buffer->type->video.offset[0];
- for (i = 0; i < avctx->height; i++)
- memcpy(frame->data[0] + frame->linesize[0] * i, ptr + w * i, avctx->width);
-
- ptr += w * h;
-
- for (plane = 1; plane < 3; plane++) {
- for (i = 0; i < avctx->height / 2; i++)
- memcpy(frame->data[plane] + frame->linesize[plane] * i, ptr + w / 2 * i, (avctx->width + 1) / 2);
- ptr += w / 2 * h / 2;
- }
+ av_image_fill_arrays(src, linesize,
+ buffer->data + buffer->type->video.offset[0],
+ avctx->pix_fmt, w, h, 1);
+ av_image_copy(frame->data, frame->linesize, src, linesize,
+ avctx->pix_fmt, avctx->width, avctx->height);
}
frame->pkt_pts = buffer->pts == MMAL_TIME_UNKNOWN ? AV_NOPTS_VALUE : buffer->pts;
======================================================================
More information about the ffmpeg-cvslog
mailing list