diff --git a/src/libav.c b/src/libav.c index 7934c52e..956016af 100644 --- a/src/libav.c +++ b/src/libav.c @@ -140,6 +140,19 @@ codec_id2streaming_component_type(enum CodecID id) } +/** + * + */ +int +libav_is_encoder(AVCodec *codec) +{ +#if LIBAVCODEC_VERSION_INT >= ((54<<16)+(7<<8)+0) + return av_codec_is_encoder(codec); +#else + return codec->encode || codec->encode2; +#endif +} + /** * */ diff --git a/src/libav.h b/src/libav.h index 98856f90..d34412d4 100644 --- a/src/libav.h +++ b/src/libav.h @@ -25,6 +25,7 @@ enum CodecID streaming_component_type2codec_id(streaming_component_type_t type); streaming_component_type_t codec_id2streaming_component_type(enum CodecID id); +int libav_is_encoder(AVCodec *codec); void libav_init(void); #endif diff --git a/src/plumbing/transcoding.c b/src/plumbing/transcoding.c index 4cb48f67..ea0af203 100644 --- a/src/plumbing/transcoding.c +++ b/src/plumbing/transcoding.c @@ -1317,7 +1317,7 @@ transcoder_get_capabilities(htsmsg_t *array) while ((p = av_codec_next(p))) { - if (!p->encode && !p->encode2) + if (!libav_is_encoder(p)) continue; if (!WORKING_ENCODER(p->id))