Commit c4845616 authored by wm4's avatar wm4 Committed by Anton Khirnov

lavc: add MMAL hardware decoder wrapper

Based on a patch by Rodger Combs.
Signed-off-by: 's avatarAnton Khirnov <anton@khirnov.net>
parent 72b7441a
...@@ -25,6 +25,7 @@ version <next>: ...@@ -25,6 +25,7 @@ version <next>:
- TDSC decoder - TDSC decoder
- DTS lossless extension (XLL) decoding (not lossless, disabled by default) - DTS lossless extension (XLL) decoding (not lossless, disabled by default)
- Intel QSV-accelerated H.264 encoding - Intel QSV-accelerated H.264 encoding
- MMAL-accelerated H.264 decoding
version 11: version 11:
......
...@@ -217,6 +217,7 @@ External library support: ...@@ -217,6 +217,7 @@ External library support:
--enable-libxcb-xfixes enable X11 grabbing mouse rendering [auto] --enable-libxcb-xfixes enable X11 grabbing mouse rendering [auto]
--enable-libxvid enable Xvid encoding via xvidcore, --enable-libxvid enable Xvid encoding via xvidcore,
native MPEG-4/Xvid encoder exists [no] native MPEG-4/Xvid encoder exists [no]
--enable-mmal enable decoding via MMAL [no]
--enable-openssl enable openssl [no] --enable-openssl enable openssl [no]
--enable-x11grab enable X11 grabbing (legacy) [no] --enable-x11grab enable X11 grabbing (legacy) [no]
--enable-zlib enable zlib [autodetect] --enable-zlib enable zlib [autodetect]
...@@ -1182,6 +1183,7 @@ EXTERNAL_LIBRARY_LIST=" ...@@ -1182,6 +1183,7 @@ EXTERNAL_LIBRARY_LIST="
libxcb_shm libxcb_shm
libxcb_xfixes libxcb_xfixes
libxvid libxvid
mmal
openssl openssl
x11grab x11grab
zlib zlib
...@@ -1970,6 +1972,10 @@ h263_vdpau_hwaccel_deps="vdpau" ...@@ -1970,6 +1972,10 @@ h263_vdpau_hwaccel_deps="vdpau"
h263_vdpau_hwaccel_select="h263_decoder" h263_vdpau_hwaccel_select="h263_decoder"
h264_dxva2_hwaccel_deps="dxva2" h264_dxva2_hwaccel_deps="dxva2"
h264_dxva2_hwaccel_select="h264_decoder" h264_dxva2_hwaccel_select="h264_decoder"
h264_mmal_decoder_deps="mmal"
h264_mmal_hwaccel_deps="mmal"
h264_mmal_decoder_select="h264_decoder"
h264_mmal_encoder_deps="mmal"
h264_qsv_hwaccel_deps="libmfx" h264_qsv_hwaccel_deps="libmfx"
h264_vaapi_hwaccel_deps="vaapi" h264_vaapi_hwaccel_deps="vaapi"
h264_vaapi_hwaccel_select="h264_decoder" h264_vaapi_hwaccel_select="h264_decoder"
...@@ -4255,6 +4261,13 @@ enabled libx265 && require_pkg_config x265 x265.h x265_encoder_encode ...@@ -4255,6 +4261,13 @@ enabled libx265 && require_pkg_config x265 x265.h x265_encoder_encode
die "ERROR: libx265 version must be >= 17."; } die "ERROR: libx265 version must be >= 17."; }
enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled mmal && { check_lib interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
{ ! enabled cross_compile && {
add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline ;
add_extralibs -L/opt/vc/lib/ -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ;
check_lib interface/mmal/mmal.h mmal_port_connect ; }
check_lib interface/mmal/mmal.h mmal_port_connect ; } ||
die "ERROR: mmal not found"; }
enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto || enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 || check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 || check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
......
...@@ -13,6 +13,9 @@ libavutil: 2014-08-09 ...@@ -13,6 +13,9 @@ libavutil: 2014-08-09
API changes, most recent first: API changes, most recent first:
2015-xx-xx - xxxxxxx - lavu 54.10.0
Add AV_PIX_FMT_MMAL for MMAL hardware acceleration.
2015-xx-xx - xxxxxxx - lavc 56.13 2015-xx-xx - xxxxxxx - lavc 56.13
Add width, height, coded_width, coded_height and format to Add width, height, coded_width, coded_height and format to
AVCodecParserContext. AVCodecParserContext.
......
...@@ -224,6 +224,7 @@ OBJS-$(CONFIG_H264_DECODER) += h264.o h264_cabac.o h264_cavlc.o \ ...@@ -224,6 +224,7 @@ OBJS-$(CONFIG_H264_DECODER) += h264.o h264_cabac.o h264_cavlc.o \
h264_direct.o h264_loopfilter.o \ h264_direct.o h264_loopfilter.o \
h264_mb.o h264_picture.o h264_ps.o \ h264_mb.o h264_picture.o h264_ps.o \
h264_refs.o h264_sei.o h264_slice.o h264_refs.o h264_sei.o h264_slice.o
OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o
OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec_h264.o OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec_h264.o
OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o
OBJS-$(CONFIG_HEVC_DECODER) += hevc.o hevc_mvs.o hevc_ps.o hevc_sei.o \ OBJS-$(CONFIG_HEVC_DECODER) += hevc.o hevc_mvs.o hevc_ps.o hevc_sei.o \
......
...@@ -77,6 +77,7 @@ void avcodec_register_all(void) ...@@ -77,6 +77,7 @@ void avcodec_register_all(void)
REGISTER_HWACCEL(H263_VAAPI, h263_vaapi); REGISTER_HWACCEL(H263_VAAPI, h263_vaapi);
REGISTER_HWACCEL(H263_VDPAU, h263_vdpau); REGISTER_HWACCEL(H263_VDPAU, h263_vdpau);
REGISTER_HWACCEL(H264_DXVA2, h264_dxva2); REGISTER_HWACCEL(H264_DXVA2, h264_dxva2);
REGISTER_HWACCEL(H264_MMAL, h264_mmal);
REGISTER_HWACCEL(H264_QSV, h264_qsv); REGISTER_HWACCEL(H264_QSV, h264_qsv);
REGISTER_HWACCEL(H264_VAAPI, h264_vaapi); REGISTER_HWACCEL(H264_VAAPI, h264_vaapi);
REGISTER_HWACCEL(H264_VDA, h264_vda); REGISTER_HWACCEL(H264_VDA, h264_vda);
...@@ -161,6 +162,7 @@ void avcodec_register_all(void) ...@@ -161,6 +162,7 @@ void avcodec_register_all(void)
REGISTER_DECODER(H263I, h263i); REGISTER_DECODER(H263I, h263i);
REGISTER_ENCODER(H263P, h263p); REGISTER_ENCODER(H263P, h263p);
REGISTER_DECODER(H264, h264); REGISTER_DECODER(H264, h264);
REGISTER_DECODER(H264_MMAL, h264_mmal);
REGISTER_DECODER(H264_QSV, h264_qsv); REGISTER_DECODER(H264_QSV, h264_qsv);
REGISTER_DECODER(HEVC, hevc); REGISTER_DECODER(HEVC, hevc);
REGISTER_DECODER(HNM4_VIDEO, hnm4_video); REGISTER_DECODER(HNM4_VIDEO, hnm4_video);
......
This diff is collapsed.
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include "libavutil/version.h" #include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 56 #define LIBAVCODEC_VERSION_MAJOR 56
#define LIBAVCODEC_VERSION_MINOR 20 #define LIBAVCODEC_VERSION_MINOR 21
#define LIBAVCODEC_VERSION_MICRO 0 #define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
......
...@@ -1567,6 +1567,10 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { ...@@ -1567,6 +1567,10 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
.name = "qsv", .name = "qsv",
.flags = AV_PIX_FMT_FLAG_HWACCEL, .flags = AV_PIX_FMT_FLAG_HWACCEL,
}, },
[AV_PIX_FMT_MMAL] = {
.name = "mmal",
.flags = AV_PIX_FMT_FLAG_HWACCEL,
},
}; };
static const char *color_range_names[AVCOL_RANGE_NB] = { static const char *color_range_names[AVCOL_RANGE_NB] = {
......
...@@ -214,6 +214,11 @@ enum AVPixelFormat { ...@@ -214,6 +214,11 @@ enum AVPixelFormat {
* mfxFrameSurface1 structure. * mfxFrameSurface1 structure.
*/ */
AV_PIX_FMT_QSV, AV_PIX_FMT_QSV,
/**
* HW acceleration though MMAL, data[3] contains a pointer to the
* MMAL_BUFFER_HEADER_T structure.
*/
AV_PIX_FMT_MMAL,
AV_PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions AV_PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
......
...@@ -54,8 +54,8 @@ ...@@ -54,8 +54,8 @@
*/ */
#define LIBAVUTIL_VERSION_MAJOR 54 #define LIBAVUTIL_VERSION_MAJOR 54
#define LIBAVUTIL_VERSION_MINOR 9 #define LIBAVUTIL_VERSION_MINOR 10
#define LIBAVUTIL_VERSION_MICRO 1 #define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \ LIBAVUTIL_VERSION_MINOR, \
......
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