Commit e8919ec4 authored by Martin Storsjö's avatar Martin Storsjö

libavcodec: Add H264/MPEG4 encoders based on OpenMAX IL

Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
parent b8e899f4
...@@ -54,6 +54,7 @@ version <next>: ...@@ -54,6 +54,7 @@ version <next>:
- VAAPI-accelerated format conversion and scaling - VAAPI-accelerated format conversion and scaling
- 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
version 11: version 11:
......
...@@ -144,6 +144,7 @@ Hardware-accelerated decoding/encoding: ...@@ -144,6 +144,7 @@ Hardware-accelerated decoding/encoding:
--enable-libmfx enable HW acceleration through libmfx --enable-libmfx enable HW acceleration through libmfx
--enable-mmal enable decoding via MMAL [no] --enable-mmal enable decoding via MMAL [no]
--enable-nvenc enable encoding via NVENC [no] --enable-nvenc enable encoding via NVENC [no]
--enable-omx enable encoding via OpenMAX IL [no]
Individual component options: Individual component options:
--disable-everything disable all components listed below --disable-everything disable all components listed below
...@@ -1272,6 +1273,7 @@ HW_CODECS_LIST=" ...@@ -1272,6 +1273,7 @@ HW_CODECS_LIST="
libmfx libmfx
mmal mmal
nvenc nvenc
omx
" "
HWACCEL_LIST=" HWACCEL_LIST="
...@@ -2106,6 +2108,7 @@ h264_mmal_decoder_deps="mmal" ...@@ -2106,6 +2108,7 @@ h264_mmal_decoder_deps="mmal"
h264_mmal_hwaccel_deps="mmal" h264_mmal_hwaccel_deps="mmal"
h264_mmal_decoder_select="h264_decoder" h264_mmal_decoder_select="h264_decoder"
h264_mmal_encoder_deps="mmal" h264_mmal_encoder_deps="mmal"
h264_omx_encoder_deps="omx"
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"
...@@ -2133,6 +2136,7 @@ mpeg2_vaapi_hwaccel_deps="vaapi" ...@@ -2133,6 +2136,7 @@ mpeg2_vaapi_hwaccel_deps="vaapi"
mpeg2_vaapi_hwaccel_select="mpeg2video_decoder" mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
mpeg2_vdpau_hwaccel_deps="vdpau" mpeg2_vdpau_hwaccel_deps="vdpau"
mpeg2_vdpau_hwaccel_select="mpeg2video_decoder" mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
mpeg4_omx_encoder_deps="omx"
mpeg4_vaapi_hwaccel_deps="vaapi" mpeg4_vaapi_hwaccel_deps="vaapi"
mpeg4_vaapi_hwaccel_select="mpeg4_decoder" mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
mpeg4_vdpau_hwaccel_deps="vdpau" mpeg4_vdpau_hwaccel_deps="vdpau"
...@@ -2153,6 +2157,8 @@ wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" ...@@ -2153,6 +2157,8 @@ wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
# hardware-accelerated codecs # hardware-accelerated codecs
nvenc_deps_any="dlopen LoadLibrary" nvenc_deps_any="dlopen LoadLibrary"
nvenc_extralibs='$ldl' nvenc_extralibs='$ldl'
omx_deps="dlopen pthreads"
omx_extralibs='$ldl'
qsvdec_select="qsv" qsvdec_select="qsv"
qsvenc_select="qsv" qsvenc_select="qsv"
vaapi_encode_deps="vaapi" vaapi_encode_deps="vaapi"
...@@ -4615,6 +4621,7 @@ enabled mmal && { check_lib interface/mmal/mmal.h mmal_port_connect ...@@ -4615,6 +4621,7 @@ enabled mmal && { check_lib interface/mmal/mmal.h mmal_port_connect
check_lib interface/mmal/mmal.h mmal_port_connect ; } check_lib interface/mmal/mmal.h mmal_port_connect ; }
check_lib interface/mmal/mmal.h mmal_port_connect ; } || check_lib interface/mmal/mmal.h mmal_port_connect ; } ||
die "ERROR: mmal not found"; } die "ERROR: mmal not found"; }
enabled omx && { check_header OMX_Core.h || die "ERROR: OpenMAX IL headers not found"; }
enabled openssl && { check_pkg_config openssl openssl/ssl.h SSL_library_init && { enabled openssl && { check_pkg_config openssl openssl/ssl.h SSL_library_init && {
add_cflags $openssl_cflags && add_extralibs $openssl_libs; }|| add_cflags $openssl_cflags && add_extralibs $openssl_libs; }||
check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto || check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
......
...@@ -621,6 +621,7 @@ OBJS-$(CONFIG_QSVENC) += qsvenc.o ...@@ -621,6 +621,7 @@ OBJS-$(CONFIG_QSVENC) += qsvenc.o
OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o
OBJS-$(CONFIG_H264_NVENC_ENCODER) += nvenc_h264.o OBJS-$(CONFIG_H264_NVENC_ENCODER) += nvenc_h264.o
OBJS-$(CONFIG_H264_OMX_ENCODER) += omx.o
OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec_h2645.o OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec_h2645.o
OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o
OBJS-$(CONFIG_H264_VAAPI_ENCODER) += vaapi_encode_h264.o vaapi_encode_h26x.o OBJS-$(CONFIG_H264_VAAPI_ENCODER) += vaapi_encode_h264.o vaapi_encode_h26x.o
...@@ -630,6 +631,7 @@ OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o h2645_p ...@@ -630,6 +631,7 @@ OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o h2645_p
OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o vaapi_encode_h26x.o OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o vaapi_encode_h26x.o
OBJS-$(CONFIG_MPEG2_QSV_DECODER) += qsvdec_mpeg2.o OBJS-$(CONFIG_MPEG2_QSV_DECODER) += qsvdec_mpeg2.o
OBJS-$(CONFIG_MPEG2_QSV_ENCODER) += qsvenc_mpeg2.o OBJS-$(CONFIG_MPEG2_QSV_ENCODER) += qsvenc_mpeg2.o
OBJS-$(CONFIG_MPEG4_OMX_ENCODER) += omx.o
# libavformat dependencies # libavformat dependencies
OBJS-$(CONFIG_ISO_MEDIA) += mpeg4audio.o mpegaudiodata.o OBJS-$(CONFIG_ISO_MEDIA) += mpeg4audio.o mpegaudiodata.o
......
...@@ -487,11 +487,13 @@ void avcodec_register_all(void) ...@@ -487,11 +487,13 @@ void avcodec_register_all(void)
* above is available */ * above is available */
REGISTER_ENCODER(LIBOPENH264, libopenh264); REGISTER_ENCODER(LIBOPENH264, libopenh264);
REGISTER_ENCODER(H264_NVENC, h264_nvenc); REGISTER_ENCODER(H264_NVENC, h264_nvenc);
REGISTER_ENCODER(H264_OMX, h264_omx);
REGISTER_ENCODER(H264_QSV, h264_qsv); REGISTER_ENCODER(H264_QSV, h264_qsv);
REGISTER_ENCODER(LIBKVAZAAR, libkvazaar); REGISTER_ENCODER(LIBKVAZAAR, libkvazaar);
REGISTER_ENCODER(HEVC_NVENC, hevc_nvenc); REGISTER_ENCODER(HEVC_NVENC, hevc_nvenc);
REGISTER_ENCODER(HEVC_QSV, hevc_qsv); REGISTER_ENCODER(HEVC_QSV, hevc_qsv);
REGISTER_ENCODER(MPEG2_QSV, mpeg2_qsv); REGISTER_ENCODER(MPEG2_QSV, mpeg2_qsv);
REGISTER_ENCODER(MPEG4_OMX, mpeg4_omx);
#if FF_API_NVENC_OLD_NAME #if FF_API_NVENC_OLD_NAME
REGISTER_ENCODER(NVENC_H264, nvenc_h264); REGISTER_ENCODER(NVENC_H264, nvenc_h264);
REGISTER_ENCODER(NVENC_HEVC, nvenc_hevc); REGISTER_ENCODER(NVENC_HEVC, nvenc_hevc);
......
This diff is collapsed.
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "libavutil/version.h" #include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 57 #define LIBAVCODEC_VERSION_MAJOR 57
#define LIBAVCODEC_VERSION_MINOR 17 #define LIBAVCODEC_VERSION_MINOR 18
#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, \
......
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