|
|
@@ -220,29 +220,30 @@ static const AVOption options[] = { |
|
|
{ NULL}, |
|
|
{ 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) \ |
|
|
#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(h264, "H.264", AV_CODEC_ID_H264, "h264_mp4toannexb"); |
|
|
M2MDEC(hevc, "HEVC", AV_CODEC_ID_HEVC, "hevc_mp4toannexb"); |
|
|
M2MDEC(hevc, "HEVC", AV_CODEC_ID_HEVC, "hevc_mp4toannexb"); |
|
|
|