Документов для av_find_best_stream
функции libav в (libav 11,7, Windows, i686, GPL) указать параметр, который может быть использован для получения указателя на соответствующий AVCodec
:Decoder возвращения av_find_best_stream против avcodec_find_decoder
decoder_ret - если не-NULL, то возвращает декодер для выбранного потока
Существует также функция avcodec_find_decoder
, которая может найти AVCodec
данный идентификатор.
Однако официальный demuxing + decoding example использует av_find_best_stream
найти поток, но хочет использовать avcodec_find_decoder
найти кодек вместо кодека возвращаемого параметра av_find_best_stream
«s:
ret = av_find_best_stream(fmt_ctx, type, -1, -1, NULL, 0);
...
stream_index = ret;
st = fmt_ctx->streams[stream_index];
...
/* find decoder for the stream */
dec = avcodec_find_decoder(st->codecpar->codec_id);
В отличие от что-то вроде:
ret = av_find_best_stream(fmt_ctx, type, -1, -1, &dec, 0);
Мой вопрос довольно прост: есть ли разница между использованием av_find_best_stream
, возвращаемого параметра по сравнению с использованием avcodec_find_decoder
найти AVCodec
?
Причина, по которой я прошу, состоит в том, что в примере используется avcodec_find_decoder
, а не как более удобный возвращаемый параметр, и я не могу сказать, сделал ли это пример по определенной причине или нет. Сама документация немного пятнистая и несвязанная, поэтому трудно сказать, делаются ли такие вещи по определенной важной причине или нет. Я не могу сказать, подразумевает ли этот пример, что это «должно» быть сделано таким образом, или если автор примера сделал это по какой-то более произвольной личной причине.