[FFmpeg-cvslog] mmaldec: add vc1 decoding support

wm4 git at videolan.org
Tue Jun 21 13:20:49 CEST 2016


ffmpeg | branch: master | wm4 <nfxjfg at googlemail.com> | Thu Apr 14 12:21:20 2016 +0200| [9a382f363950c0aab1500aa0937f73bf4dde9ee3] | committer: Anton Khirnov

mmaldec: add vc1 decoding support

Signed-off-by: Anton Khirnov <anton at khirnov.net>

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

 Changelog              |    2 +-
 configure              |    3 +++
 libavcodec/Makefile    |    1 +
 libavcodec/allcodecs.c |    2 ++
 libavcodec/mmaldec.c   |   12 ++++++++++++
 5 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/Changelog b/Changelog
index 80d88bc..d4bd9b7 100644
--- a/Changelog
+++ b/Changelog
@@ -55,7 +55,7 @@ version <next>:
 - libnpp/CUDA-accelerated format conversion and scaling
 - VAAPI-accelerate H.264/HEVC/MJPEG encoding
 - Generic OpenMAX IL encoder with support for Raspberry Pi
-- MMAL-accelerated MPEG-2 decoding
+- MMAL-accelerated MPEG-2 and VC-1 decoding
 
 
 version 11:
diff --git a/configure b/configure
index 2941e0c..c5272df 100755
--- a/configure
+++ b/configure
@@ -2154,6 +2154,9 @@ vc1_vaapi_hwaccel_deps="vaapi"
 vc1_vaapi_hwaccel_select="vc1_decoder"
 vc1_vdpau_hwaccel_deps="vdpau"
 vc1_vdpau_hwaccel_select="vc1_decoder"
+vc1_mmal_decoder_deps="mmal"
+vc1_mmal_hwaccel_deps="mmal"
+vc1_mmal_decoder_select="vc1_decoder"
 wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 227538c..d12c52e 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -440,6 +440,7 @@ OBJS-$(CONFIG_VC1_DECODER)             += vc1dec.o vc1_block.o vc1_loopfilter.o
                                           vc1_mc.o vc1_pred.o vc1.o vc1data.o \
                                           msmpeg4dec.o msmpeg4.o msmpeg4data.o \
                                           wmv2data.o
+OBJS-$(CONFIG_VC1_MMAL_DECODER)        += mmaldec.o
 OBJS-$(CONFIG_VCR1_DECODER)            += vcr1.o
 OBJS-$(CONFIG_VMDAUDIO_DECODER)        += vmdaudio.o
 OBJS-$(CONFIG_VMDVIDEO_DECODER)        += vmdvideo.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 854a052..2b11ef6 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -93,6 +93,7 @@ void avcodec_register_all(void)
     REGISTER_HWACCEL(VC1_DXVA2,         vc1_dxva2);
     REGISTER_HWACCEL(VC1_VAAPI,         vc1_vaapi);
     REGISTER_HWACCEL(VC1_VDPAU,         vc1_vdpau);
+    REGISTER_HWACCEL(VC1_MMAL,          vc1_mmal);
     REGISTER_HWACCEL(WMV3_D3D11VA,      wmv3_d3d11va);
     REGISTER_HWACCEL(WMV3_DXVA2,        wmv3_dxva2);
     REGISTER_HWACCEL(WMV3_VAAPI,        wmv3_vaapi);
@@ -275,6 +276,7 @@ void avcodec_register_all(void)
     REGISTER_DECODER(VBLE,              vble);
     REGISTER_DECODER(VC1,               vc1);
     REGISTER_DECODER(VC1IMAGE,          vc1image);
+    REGISTER_DECODER(VC1_MMAL,          vc1_mmal);
     REGISTER_DECODER(VCR1,              vcr1);
     REGISTER_DECODER(VMDVIDEO,          vmdvideo);
     REGISTER_DECODER(VMNC,              vmnc);
diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c
index 331a017..6015e54 100644
--- a/libavcodec/mmaldec.c
+++ b/libavcodec/mmaldec.c
@@ -356,6 +356,10 @@ static av_cold int ffmmal_init_decoder(AVCodecContext *avctx)
         format_in->encoding = MMAL_ENCODING_MP2V;
         av_log(avctx, AV_LOG_DEBUG, "Use MMAL MP2V encoding\n");
         break;
+    case AV_CODEC_ID_VC1:
+        format_in->encoding = MMAL_ENCODING_WVC1;
+        av_log(avctx, AV_LOG_DEBUG, "Use MMAL WVC1 encoding\n");
+        break;
     case AV_CODEC_ID_H264:
     default:
         format_in->encoding = MMAL_ENCODING_H264;
@@ -777,6 +781,13 @@ AVHWAccel ff_mpeg2_mmal_hwaccel = {
     .pix_fmt    = AV_PIX_FMT_MMAL,
 };
 
+AVHWAccel ff_vc1_mmal_hwaccel = {
+    .name       = "vc1_mmal",
+    .type       = AVMEDIA_TYPE_VIDEO,
+    .id         = AV_CODEC_ID_VC1,
+    .pix_fmt    = AV_PIX_FMT_MMAL,
+};
+
 static const AVOption options[]={
     {"extra_buffers", "extra buffers", offsetof(MMALDecodeContext, extra_buffers), AV_OPT_TYPE_INT, {.i64 = 10}, 0, 256, 0},
     {NULL}
@@ -811,3 +822,4 @@ static const AVOption options[]={
 
 FFMMAL_DEC(h264, AV_CODEC_ID_H264)
 FFMMAL_DEC(mpeg2, AV_CODEC_ID_MPEG2VIDEO)
+FFMMAL_DEC(vc1, AV_CODEC_ID_VC1)



More information about the ffmpeg-cvslog mailing list