@ -220,29 +220,30 @@ static const AVOption options[] = {
{ NULL } ,
} ;
# define M2MDEC_CLASS(NAME) \
static const AVClass v4l2_m2m_ # # NAME # # _dec_class = { \
. class_name = # NAME " _v4l2m2m_decoder " , \
. item_name = av_default_item_name , \
. option = options , \
. version = LIBAVUTIL_VERSION_INT , \
} ;
# define M2MDEC(NAME, LONGNAME, CODEC, bsf_name) \
static const AVClass v4l2_m2m_ # # NAME # # _dec_class = { \
. class_name = # NAME " _v4l2_m2m_decoder " , \
. item_name = av_default_item_name , \
. option = options , \
. version = LIBAVUTIL_VERSION_INT , \
} ; \
\
AVCodec ff_ # # NAME # # _v4l2m2m_decoder = { \
. name = # NAME " _v4l2m2m " , \
. long_name = NULL_IF_CONFIG_SMALL ( " V4L2 mem2mem " LONGNAME " decoder wrapper " ) , \
. type = AVMEDIA_TYPE_VIDEO , \
. id = CODEC , \
. priv_data_size = sizeof ( V4L2m2mPriv ) , \
. priv_class = & v4l2_m2m_ # # NAME # # _dec_class , \
. init = v4l2_decode_init , \
. receive_frame = v4l2_receive_frame , \
. close = v4l2_decode_close , \
. bsfs = bsf_name , \
. capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY | \
AV_CODEC_CAP_AVOID_PROBING , \
. wrapper_name = " v4l2m2m " , \
} ;
M2MDEC_CLASS ( NAME ) \
AVCodec ff_ # # NAME # # _v4l2m2m_decoder = { \
. name = # NAME " _v4l2m2m " , \
. long_name = NULL_IF_CONFIG_SMALL ( " V4L2 mem2mem " LONGNAME " decoder wrapper " ) , \
. type = AVMEDIA_TYPE_VIDEO , \
. id = CODEC , \
. priv_data_size = sizeof ( V4L2m2mPriv ) , \
. priv_class = & v4l2_m2m_ # # NAME # # _dec_class , \
. init = v4l2_decode_init , \
. receive_frame = v4l2_receive_frame , \
. close = v4l2_decode_close , \
. bsfs = bsf_name , \
. capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING , \
. wrapper_name = " v4l2m2m " , \
} ;
M2MDEC ( h264 , " H.264 " , AV_CODEC_ID_H264 , " h264_mp4toannexb " ) ;
M2MDEC ( hevc , " HEVC " , AV_CODEC_ID_HEVC , " hevc_mp4toannexb " ) ;