diff options
author | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2016-05-11 19:15:06 +0100 |
---|---|---|
committer | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2016-05-11 19:15:14 +0100 |
commit | f4c88eef95e6d4a2463ce2fbae2c5d1a20eb1373 (patch) | |
tree | 123992e2ce309e5968ab4930f6b68111ca1f9f47 /libavcodec/mmaldec.c | |
parent | 4f173d055c3ade5566db5a140676018573389f50 (diff) | |
parent | b8e899f4bf5f09900aa71552112d32a5566b6baf (diff) | |
download | ffmpeg-f4c88eef95e6d4a2463ce2fbae2c5d1a20eb1373.tar.gz |
Merge commit 'b8e899f4bf5f09900aa71552112d32a5566b6baf'
* commit 'b8e899f4bf5f09900aa71552112d32a5566b6baf':
mmaldec: Use imgutils.h for copying frames
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Diffstat (limited to 'libavcodec/mmaldec.c')
-rw-r--r-- | libavcodec/mmaldec.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c index 30861d9bcf..52232d5ed8 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; |