Browse code

mmaldec: add vc1 decoding support

wm4 authored on 2015/11/06 20:59:16
Showing 4 changed files
... ...
@@ -2516,6 +2516,9 @@ vc1_vdpau_decoder_deps="vdpau"
2516 2516
 vc1_vdpau_decoder_select="vc1_decoder"
2517 2517
 vc1_vdpau_hwaccel_deps="vdpau"
2518 2518
 vc1_vdpau_hwaccel_select="vc1_decoder"
2519
+vc1_mmal_decoder_deps="mmal"
2520
+vc1_mmal_hwaccel_deps="mmal"
2521
+vc1_mmal_decoder_select="vc1_decoder"
2519 2522
 vc1_qsv_hwaccel_deps="libmfx"
2520 2523
 vc1_qsv_hwaccel_select="qsvdec_vc1"
2521 2524
 wmv3_crystalhd_decoder_select="crystalhd"
... ...
@@ -534,6 +534,7 @@ OBJS-$(CONFIG_VC1_DECODER)             += vc1dec.o vc1_block.o vc1_loopfilter.o
534 534
                                           vc1dsp.o \
535 535
                                           msmpeg4dec.o msmpeg4.o msmpeg4data.o \
536 536
                                           wmv2dsp.o
537
+OBJS-$(CONFIG_VC1_MMAL_DECODER)        += mmaldec.o
537 538
 OBJS-$(CONFIG_VC1_QSV_DECODER)         += qsvdec_vc1.o
538 539
 OBJS-$(CONFIG_VCR1_DECODER)            += vcr1.o
539 540
 OBJS-$(CONFIG_VMDAUDIO_DECODER)        += vmdaudio.o
... ...
@@ -108,6 +108,7 @@ void avcodec_register_all(void)
108 108
     REGISTER_HWACCEL(VC1_DXVA2,         vc1_dxva2);
109 109
     REGISTER_HWACCEL(VC1_VAAPI,         vc1_vaapi);
110 110
     REGISTER_HWACCEL(VC1_VDPAU,         vc1_vdpau);
111
+    REGISTER_HWACCEL(VC1_MMAL,          vc1_mmal);
111 112
     REGISTER_HWACCEL(VC1_QSV,           vc1_qsv);
112 113
     REGISTER_HWACCEL(WMV3_D3D11VA,      wmv3_d3d11va);
113 114
     REGISTER_HWACCEL(WMV3_DXVA2,        wmv3_dxva2);
... ...
@@ -326,6 +327,7 @@ void avcodec_register_all(void)
326 326
     REGISTER_DECODER(VC1_VDPAU,         vc1_vdpau);
327 327
 #endif
328 328
     REGISTER_DECODER(VC1IMAGE,          vc1image);
329
+    REGISTER_DECODER(VC1_MMAL,          vc1_mmal);
329 330
     REGISTER_DECODER(VC1_QSV,           vc1_qsv);
330 331
     REGISTER_DECODER(VCR1,              vcr1);
331 332
     REGISTER_DECODER(VMDVIDEO,          vmdvideo);
... ...
@@ -355,6 +355,10 @@ static av_cold int ffmmal_init_decoder(AVCodecContext *avctx)
355 355
             format_in->encoding = MMAL_ENCODING_MP2V;
356 356
             av_log(avctx, AV_LOG_DEBUG, "Use MMAL MP2V encoding\n");
357 357
             break;
358
+        case AV_CODEC_ID_VC1:
359
+            format_in->encoding = MMAL_ENCODING_WVC1;
360
+            av_log(avctx, AV_LOG_DEBUG, "Use MMAL WVC1 encoding\n");
361
+            break;
358 362
         case AV_CODEC_ID_H264:
359 363
         default:
360 364
             format_in->encoding = MMAL_ENCODING_H264;
... ...
@@ -783,6 +787,13 @@ AVHWAccel ff_mpeg2_mmal_hwaccel = {
783 783
     .pix_fmt    = AV_PIX_FMT_MMAL,
784 784
 };
785 785
 
786
+AVHWAccel ff_vc1_mmal_hwaccel = {
787
+    .name       = "vc1_mmal",
788
+    .type       = AVMEDIA_TYPE_VIDEO,
789
+    .id         = AV_CODEC_ID_VC1,
790
+    .pix_fmt    = AV_PIX_FMT_MMAL,
791
+};
792
+
786 793
 static const AVOption options[]={
787 794
     {"extra_buffers", "extra buffers", offsetof(MMALDecodeContext, extra_buffers), AV_OPT_TYPE_INT, {.i64 = 10}, 0, 256, 0},
788 795
     {NULL}
... ...
@@ -817,3 +828,4 @@ static const AVOption options[]={
817 817
 
818 818
 FFMMAL_DEC(h264, AV_CODEC_ID_H264)
819 819
 FFMMAL_DEC(mpeg2, AV_CODEC_ID_MPEG2VIDEO)
820
+FFMMAL_DEC(vc1, AV_CODEC_ID_VC1)