From: Antonio Ospite Date: Wed, 28 Feb 2018 12:50:31 +0000 (+0100) Subject: am7xxx-play: use av_find_best_stream() instead of open-coding the search X-Git-Tag: v0.1.7~9 X-Git-Url: https://git.ao2.it/libam7xxx.git/commitdiff_plain/527bca3b84675fa91e8b42ccf9f2fc952c5a87d4?hp=a648584dd366450bc62a820541338fa40e93069e am7xxx-play: use av_find_best_stream() instead of open-coding the search --- diff --git a/examples/am7xxx-play.c b/examples/am7xxx-play.c index 88d398a..9deffd2 100644 --- a/examples/am7xxx-play.c +++ b/examples/am7xxx-play.c @@ -55,7 +55,6 @@ static int video_input_init(struct video_input_ctx *input_ctx, AVCodecContext *input_codec_ctx; AVCodec *input_codec; int video_index; - unsigned int i; int ret; avdevice_register_all(); @@ -100,29 +99,13 @@ static int video_input_init(struct video_input_ctx *input_ctx, av_dump_format(input_format_ctx, 0, input_path, 0); /* look for the first video_stream */ - video_index = -1; - for (i = 0; i < input_format_ctx->nb_streams; i++) - if (input_format_ctx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { - video_index = i; - break; - } - if (video_index == -1) { + video_index = av_find_best_stream(input_format_ctx, AVMEDIA_TYPE_VIDEO, -1, -1, &input_codec, 0); + if (video_index < 0) { fprintf(stderr, "cannot find any video streams\n"); ret = -EINVAL; goto cleanup; } - /* get a pointer to the codec parameters for the video stream */ - input_codec_params = input_format_ctx->streams[video_index]->codecpar; - - /* find the decoder for the video stream */ - input_codec = avcodec_find_decoder(input_codec_params->codec_id); - if (input_codec == NULL) { - fprintf(stderr, "input_codec is NULL!\n"); - ret = -EINVAL; - goto cleanup; - } - input_codec_ctx = avcodec_alloc_context3(input_codec); if (input_codec_ctx == NULL) { fprintf(stderr, "failed to allocate the input codec context\n"); @@ -130,6 +113,7 @@ static int video_input_init(struct video_input_ctx *input_ctx, goto cleanup; } + input_codec_params = input_format_ctx->streams[video_index]->codecpar; ret = avcodec_parameters_to_context(input_codec_ctx, input_codec_params); if (ret < 0) { fprintf(stderr, "cannot copy parameters to input codec context\n");