diff --git a/src/AvTranscoder/util.cpp b/src/AvTranscoder/util.cpp index d85bf193..a98376e1 100644 --- a/src/AvTranscoder/util.cpp +++ b/src/AvTranscoder/util.cpp @@ -7,6 +7,7 @@ extern "C" { } #include +#include namespace avtranscoder { @@ -144,25 +145,18 @@ NamesArray getVideoCodecsNames() AVCodec* c = NULL; while( ( c = av_codec_next( c ) ) != NULL ) { -#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT( 53, 34, 0 ) - if( ! c->encode ) - continue; -#else - if( ! c->encode2 ) - continue; -#endif - switch( c->type ) + if( c->type == AVMEDIA_TYPE_VIDEO) { - case AVMEDIA_TYPE_VIDEO: - { - if( ! c->name && ! c->long_name ) - continue; + if( ! c->name && ! c->long_name ) + continue; - videoCodecsNames.push_back( std::make_pair( std::string( c->name ? c->name : "" ), std::string( c->long_name ? c->long_name : "" ) ) ); - break; - } - default: - break; + std::pair< std::string, std::string > codecNames( std::string( c->name ? c->name : "" ), std::string( c->long_name ? c->long_name : "" ) ); + + // skip duplicates + if( std::find( videoCodecsNames.begin(), videoCodecsNames.end(), codecNames ) != videoCodecsNames.end() ) + continue; + + videoCodecsNames.push_back( codecNames ); } } return videoCodecsNames; @@ -175,25 +169,18 @@ NamesArray getAudioCodecsNames() AVCodec* c = NULL; while( ( c = av_codec_next( c ) ) != NULL ) { -#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT( 53, 34, 0 ) - if( ! c->encode ) - continue; -#else - if( ! c->encode2 ) - continue; -#endif - switch( c->type ) + if( c->type == AVMEDIA_TYPE_AUDIO ) { - case AVMEDIA_TYPE_AUDIO: - { - if( ! c->name && ! c->long_name ) - continue; + if( ! c->name && ! c->long_name ) + continue; - audioCodecsNames.push_back( std::make_pair( std::string( c->name ? c->name : "" ), std::string( c->long_name ? c->long_name : "" ) ) ); - break; - } - default: - break; + std::pair< std::string, std::string > codecNames( std::string( c->name ? c->name : "" ), std::string( c->long_name ? c->long_name : "" ) ); + + // skip duplicates + if( std::find( audioCodecsNames.begin(), audioCodecsNames.end(), codecNames ) != audioCodecsNames.end() ) + continue; + + audioCodecsNames.push_back( codecNames ); } } return audioCodecsNames; @@ -201,9 +188,7 @@ NamesArray getAudioCodecsNames() OptionArrayMap getOutputFormatOptions() { - av_register_all(); - - std::map< std::string, std::vector