I'm creating a custom video decoder for ffmpeg. The code compiles and links,
my codec library is included. However, when I attempt to play my file, the
player (Nova player for Android though that shouldn't matter) doesn't find the
decoder.
The decoder is for a matroska container and the stream is correctly tagged in
the file. The error message through the app says "Cannot play video. This
video format (s_none) is not supported."
I've reviewed the ffmpeg custom codec docs. My starting point was an existing
codec. Does my code appear to be the correct way to register a customer codec?
Here are the places I modified libavcodec/libavformat code...
libavformat/matroska.c
const CodecTags ff_mkv_codec_tags[]={
{"A_AAC" , AV_CODEC_ID_AAC},
{"A_AC3" , AV_CODEC_ID_AC3},
...
{"S_MKV/LANDMARK" , AV_CODEC_ID_MPLM}, ///<<< my codec
{"" , AV_CODEC_ID_NONE}
};
libavcodec/allcodecs.c
extern AVCodec ff_libmplm_decoder;
libavcodec/avcodec.h
enum AVCodecID {
AV_CODEC_ID_NONE,
...
AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001, ///< Passthrough codec, AVFrames
wrapped in AVPacket
AV_CODEC_ID_MPLM = 0x30000, ///< MediaPipe Landmark decoder
};
libavcodec/codec_desc.c
static const AVCodecDescriptor codec_descriptors[] = {
/* video codecs */
...
{
.id = AV_CODEC_ID_MPLM,
.type = AVMEDIA_TYPE_VIDEO,
.name = "mediapipe_landmark",
.long_name = NULL_IF_CONFIG_SMALL("MediaPipe Landmark")
},
};
In my decoder...
libavcodec/libmplmdec.c
...
AVCodec ff_mplm_decoder = {
.name = LANDMARK_CODEC_NAME,
.long_name = NULL_IF_CONFIG_SMALL("MediaPipe Landmark decoder"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_MPLM,
.priv_data_size = sizeof(MPLMContext),
.init = mplm_decode_init,
.close = mplm_decode_end,
.decode = mplm_decode_frame,
.capabilities = AV_CODEC_CAP_DR1,
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
};
// fmt, subfmt, w, h, cpu, dec, name, mangler
STREAM_REGISTER_DEC_VIDEO( VIDEO_FORMAT_MJPG, 0, MAXW, MAXH, MPLMHW, new_dec,
LANDMARK_CODEC_NAME, 0 );
libavcodec/libmplmdec.h
#define LANDMARK_CODEC_NAME "S_MKV/LANDMARK"
--
Tim Fleming
[email protected]
_______________________________________________
Libav-user mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/libav-user
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".