Commit 9a382f36 authored by wm4's avatar wm4 Committed by Anton Khirnov

mmaldec: add vc1 decoding support

Signed-off-by: 's avatarAnton Khirnov <anton@khirnov.net>
parent d52208e8
...@@ -55,7 +55,7 @@ version <next>: ...@@ -55,7 +55,7 @@ version <next>:
- libnpp/CUDA-accelerated format conversion and scaling - libnpp/CUDA-accelerated format conversion and scaling
- VAAPI-accelerate H.264/HEVC/MJPEG encoding - VAAPI-accelerate H.264/HEVC/MJPEG encoding
- Generic OpenMAX IL encoder with support for Raspberry Pi - Generic OpenMAX IL encoder with support for Raspberry Pi
- MMAL-accelerated MPEG-2 decoding - MMAL-accelerated MPEG-2 and VC-1 decoding
version 11: version 11:
......
...@@ -2154,6 +2154,9 @@ vc1_vaapi_hwaccel_deps="vaapi" ...@@ -2154,6 +2154,9 @@ vc1_vaapi_hwaccel_deps="vaapi"
vc1_vaapi_hwaccel_select="vc1_decoder" vc1_vaapi_hwaccel_select="vc1_decoder"
vc1_vdpau_hwaccel_deps="vdpau" vc1_vdpau_hwaccel_deps="vdpau"
vc1_vdpau_hwaccel_select="vc1_decoder" 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_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
......
...@@ -440,6 +440,7 @@ OBJS-$(CONFIG_VC1_DECODER) += vc1dec.o vc1_block.o vc1_loopfilter.o ...@@ -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 \ vc1_mc.o vc1_pred.o vc1.o vc1data.o \
msmpeg4dec.o msmpeg4.o msmpeg4data.o \ msmpeg4dec.o msmpeg4.o msmpeg4data.o \
wmv2data.o wmv2data.o
OBJS-$(CONFIG_VC1_MMAL_DECODER) += mmaldec.o
OBJS-$(CONFIG_VCR1_DECODER) += vcr1.o OBJS-$(CONFIG_VCR1_DECODER) += vcr1.o
OBJS-$(CONFIG_VMDAUDIO_DECODER) += vmdaudio.o OBJS-$(CONFIG_VMDAUDIO_DECODER) += vmdaudio.o
OBJS-$(CONFIG_VMDVIDEO_DECODER) += vmdvideo.o OBJS-$(CONFIG_VMDVIDEO_DECODER) += vmdvideo.o
......
...@@ -93,6 +93,7 @@ void avcodec_register_all(void) ...@@ -93,6 +93,7 @@ void avcodec_register_all(void)
REGISTER_HWACCEL(VC1_DXVA2, vc1_dxva2); REGISTER_HWACCEL(VC1_DXVA2, vc1_dxva2);
REGISTER_HWACCEL(VC1_VAAPI, vc1_vaapi); REGISTER_HWACCEL(VC1_VAAPI, vc1_vaapi);
REGISTER_HWACCEL(VC1_VDPAU, vc1_vdpau); REGISTER_HWACCEL(VC1_VDPAU, vc1_vdpau);
REGISTER_HWACCEL(VC1_MMAL, vc1_mmal);
REGISTER_HWACCEL(WMV3_D3D11VA, wmv3_d3d11va); REGISTER_HWACCEL(WMV3_D3D11VA, wmv3_d3d11va);
REGISTER_HWACCEL(WMV3_DXVA2, wmv3_dxva2); REGISTER_HWACCEL(WMV3_DXVA2, wmv3_dxva2);
REGISTER_HWACCEL(WMV3_VAAPI, wmv3_vaapi); REGISTER_HWACCEL(WMV3_VAAPI, wmv3_vaapi);
...@@ -275,6 +276,7 @@ void avcodec_register_all(void) ...@@ -275,6 +276,7 @@ void avcodec_register_all(void)
REGISTER_DECODER(VBLE, vble); REGISTER_DECODER(VBLE, vble);
REGISTER_DECODER(VC1, vc1); REGISTER_DECODER(VC1, vc1);
REGISTER_DECODER(VC1IMAGE, vc1image); REGISTER_DECODER(VC1IMAGE, vc1image);
REGISTER_DECODER(VC1_MMAL, vc1_mmal);
REGISTER_DECODER(VCR1, vcr1); REGISTER_DECODER(VCR1, vcr1);
REGISTER_DECODER(VMDVIDEO, vmdvideo); REGISTER_DECODER(VMDVIDEO, vmdvideo);
REGISTER_DECODER(VMNC, vmnc); REGISTER_DECODER(VMNC, vmnc);
......
...@@ -356,6 +356,10 @@ static av_cold int ffmmal_init_decoder(AVCodecContext *avctx) ...@@ -356,6 +356,10 @@ static av_cold int ffmmal_init_decoder(AVCodecContext *avctx)
format_in->encoding = MMAL_ENCODING_MP2V; format_in->encoding = MMAL_ENCODING_MP2V;
av_log(avctx, AV_LOG_DEBUG, "Use MMAL MP2V encoding\n"); av_log(avctx, AV_LOG_DEBUG, "Use MMAL MP2V encoding\n");
break; 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: case AV_CODEC_ID_H264:
default: default:
format_in->encoding = MMAL_ENCODING_H264; format_in->encoding = MMAL_ENCODING_H264;
...@@ -777,6 +781,13 @@ AVHWAccel ff_mpeg2_mmal_hwaccel = { ...@@ -777,6 +781,13 @@ AVHWAccel ff_mpeg2_mmal_hwaccel = {
.pix_fmt = AV_PIX_FMT_MMAL, .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[]={ static const AVOption options[]={
{"extra_buffers", "extra buffers", offsetof(MMALDecodeContext, extra_buffers), AV_OPT_TYPE_INT, {.i64 = 10}, 0, 256, 0}, {"extra_buffers", "extra buffers", offsetof(MMALDecodeContext, extra_buffers), AV_OPT_TYPE_INT, {.i64 = 10}, 0, 256, 0},
{NULL} {NULL}
...@@ -811,3 +822,4 @@ static const AVOption options[]={ ...@@ -811,3 +822,4 @@ static const AVOption options[]={
FFMMAL_DEC(h264, AV_CODEC_ID_H264) FFMMAL_DEC(h264, AV_CODEC_ID_H264)
FFMMAL_DEC(mpeg2, AV_CODEC_ID_MPEG2VIDEO) FFMMAL_DEC(mpeg2, AV_CODEC_ID_MPEG2VIDEO)
FFMMAL_DEC(vc1, AV_CODEC_ID_VC1)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment