cmdutils: stop using deprecated av_codec_next()

Signed-off-by: Josh de Kock <josh@itanimul.li>
pull/336/head
Anton Khirnov 5 years ago committed by Josh de Kock
parent cacdac819f
commit 4cde83c780
  1. 33
      fftools/cmdutils.c

@ -1500,13 +1500,14 @@ static char get_media_type_char(enum AVMediaType type)
} }
} }
static const AVCodec *next_codec_for_id(enum AVCodecID id, const AVCodec *prev, static const AVCodec *next_codec_for_id(enum AVCodecID id, void **iter,
int encoder) int encoder)
{ {
while ((prev = av_codec_next(prev))) { const AVCodec *c;
if (prev->id == id && while ((c = av_codec_iterate(iter))) {
(encoder ? av_codec_is_encoder(prev) : av_codec_is_decoder(prev))) if (c->id == id &&
return prev; (encoder ? av_codec_is_encoder(c) : av_codec_is_decoder(c)))
return c;
} }
return NULL; return NULL;
} }
@ -1543,11 +1544,12 @@ static unsigned get_codecs_sorted(const AVCodecDescriptor ***rcodecs)
static void print_codecs_for_id(enum AVCodecID id, int encoder) static void print_codecs_for_id(enum AVCodecID id, int encoder)
{ {
const AVCodec *codec = NULL; void *iter = NULL;
const AVCodec *codec;
printf(" (%s: ", encoder ? "encoders" : "decoders"); printf(" (%s: ", encoder ? "encoders" : "decoders");
while ((codec = next_codec_for_id(id, codec, encoder))) while ((codec = next_codec_for_id(id, &iter, encoder)))
printf("%s ", codec->name); printf("%s ", codec->name);
printf(")"); printf(")");
@ -1570,7 +1572,8 @@ int show_codecs(void *optctx, const char *opt, const char *arg)
" -------\n"); " -------\n");
for (i = 0; i < nb_codecs; i++) { for (i = 0; i < nb_codecs; i++) {
const AVCodecDescriptor *desc = codecs[i]; const AVCodecDescriptor *desc = codecs[i];
const AVCodec *codec = NULL; const AVCodec *codec;
void *iter = NULL;
if (strstr(desc->name, "_deprecated")) if (strstr(desc->name, "_deprecated"))
continue; continue;
@ -1588,14 +1591,14 @@ int show_codecs(void *optctx, const char *opt, const char *arg)
/* print decoders/encoders when there's more than one or their /* print decoders/encoders when there's more than one or their
* names are different from codec name */ * names are different from codec name */
while ((codec = next_codec_for_id(desc->id, codec, 0))) { while ((codec = next_codec_for_id(desc->id, &iter, 0))) {
if (strcmp(codec->name, desc->name)) { if (strcmp(codec->name, desc->name)) {
print_codecs_for_id(desc->id, 0); print_codecs_for_id(desc->id, 0);
break; break;
} }
} }
codec = NULL; iter = NULL;
while ((codec = next_codec_for_id(desc->id, codec, 1))) { while ((codec = next_codec_for_id(desc->id, &iter, 1))) {
if (strcmp(codec->name, desc->name)) { if (strcmp(codec->name, desc->name)) {
print_codecs_for_id(desc->id, 1); print_codecs_for_id(desc->id, 1);
break; break;
@ -1626,9 +1629,10 @@ static void print_codecs(int encoder)
encoder ? "Encoders" : "Decoders"); encoder ? "Encoders" : "Decoders");
for (i = 0; i < nb_codecs; i++) { for (i = 0; i < nb_codecs; i++) {
const AVCodecDescriptor *desc = codecs[i]; const AVCodecDescriptor *desc = codecs[i];
const AVCodec *codec = NULL; const AVCodec *codec;
void *iter = NULL;
while ((codec = next_codec_for_id(desc->id, codec, encoder))) { while ((codec = next_codec_for_id(desc->id, &iter, encoder))) {
printf(" %c", get_media_type_char(desc->type)); printf(" %c", get_media_type_char(desc->type));
printf((codec->capabilities & AV_CODEC_CAP_FRAME_THREADS) ? "F" : "."); printf((codec->capabilities & AV_CODEC_CAP_FRAME_THREADS) ? "F" : ".");
printf((codec->capabilities & AV_CODEC_CAP_SLICE_THREADS) ? "S" : "."); printf((codec->capabilities & AV_CODEC_CAP_SLICE_THREADS) ? "S" : ".");
@ -1833,9 +1837,10 @@ static void show_help_codec(const char *name, int encoder)
if (codec) if (codec)
print_codec(codec); print_codec(codec);
else if ((desc = avcodec_descriptor_get_by_name(name))) { else if ((desc = avcodec_descriptor_get_by_name(name))) {
void *iter = NULL;
int printed = 0; int printed = 0;
while ((codec = next_codec_for_id(desc->id, codec, encoder))) { while ((codec = next_codec_for_id(desc->id, &iter, encoder))) {
printed = 1; printed = 1;
print_codec(codec); print_codec(codec);
} }

Loading…
Cancel
Save