On Thu, 19 Sep 2013 16:18:24 +0200, Luca Barbato <[email protected]> wrote: > On 19/09/13 10:27, Martin Storsjö wrote: > > On Wed, 18 Sep 2013, Luca Barbato wrote: > > > >> From: Justin Ruggles <[email protected]> > >> > >> Signed-off-by: Luca Barbato <[email protected]> > >> --- > >> > >> Updated a little, is being really useful to debug QSV. > >> > >> avplay.c | 35 ++++++++++++++++++++++++++++++----- > >> doc/avplay.texi | 4 ++++ > >> 2 files changed, 34 insertions(+), 5 deletions(-) > > > > In general, this is really nice and appreciated. > > > >> diff --git a/avplay.c b/avplay.c > >> index 00becbe..18c6364 100644 > >> --- a/avplay.c > >> +++ b/avplay.c > >> @@ -231,6 +231,8 @@ static int screen_width = 0; > >> static int screen_height = 0; > >> static int audio_disable; > >> static int video_disable; > >> +static const char *acodec_name; > >> +static const char *vcodec_name; > >> static int wanted_stream[AVMEDIA_TYPE_NB] = { > >> [AVMEDIA_TYPE_AUDIO] = -1, > >> [AVMEDIA_TYPE_VIDEO] = -1, > >> @@ -2024,10 +2026,11 @@ static int stream_component_open(VideoState > >> *is, int stream_index) > >> { > >> AVFormatContext *ic = is->ic; > >> AVCodecContext *avctx; > >> - AVCodec *codec; > >> + AVCodec *codec = NULL; > >> SDL_AudioSpec wanted_spec, spec; > >> AVDictionary *opts; > >> AVDictionaryEntry *t = NULL; > >> + enum AVMediaType codec_type; > >> > >> if (stream_index < 0 || stream_index >= ic->nb_streams) > >> return -1; > >> @@ -2035,7 +2038,26 @@ static int stream_component_open(VideoState > >> *is, int stream_index) > >> > >> opts = filter_codec_opts(codec_opts, avctx->codec_id, ic, > >> ic->streams[stream_index], NULL); > >> > >> - codec = avcodec_find_decoder(avctx->codec_id); > >> + codec_type = avcodec_get_type(avctx->codec_id); > >> + if (acodec_name && codec_type == AVMEDIA_TYPE_AUDIO || > >> + vcodec_name && codec_type == AVMEDIA_TYPE_VIDEO) { > >> + const char *name; > >> + if (codec_type == AVMEDIA_TYPE_AUDIO) > >> + name = acodec_name; > >> + else > >> + name = vcodec_name; > >> + > >> + codec = avcodec_find_decoder_by_name(name); > >> + if (!codec) { > >> + av_log(NULL, AV_LOG_FATAL, "Unknown decoder '%s'\n", name); > >> + } else if (codec->type != codec_type) { > >> + av_log(NULL, AV_LOG_FATAL, "Invalid decoder type '%s'\n", > >> name); > >> + codec = NULL; > >> + } > >> + } else { > >> + codec = avcodec_find_decoder(avctx->codec_id); > >> + } > >> + > >> avctx->debug_mv = debug_mv; > >> avctx->workaround_bugs = workaround_bugs; > >> avctx->idct_algo = idct; > >> @@ -2315,9 +2337,6 @@ static int decode_thread(void *arg) > >> st_index[AVMEDIA_TYPE_AUDIO] : > >> st_index[AVMEDIA_TYPE_VIDEO]), > >> NULL, 0); > >> - if (show_status) { > >> - av_dump_format(ic, 0, is->filename, 0); > >> - } > >> > >> /* open the streams */ > >> if (st_index[AVMEDIA_TYPE_AUDIO] >= 0) { > >> @@ -2344,6 +2363,10 @@ static int decode_thread(void *arg) > >> goto fail; > >> } > >> > >> + if (show_status) { > >> + av_dump_format(ic, 0, is->filename, 0); > >> + } > >> + > > > > Why is this block moved? > > > >> for (;;) { > >> if (is->abort_request) > >> break; > >> @@ -2860,6 +2883,8 @@ static const OptionDef options[] = { > >> { "rdftspeed", OPT_INT | HAS_ARG| OPT_AUDIO | OPT_EXPERT, { > >> &rdftspeed }, "rdft speed", "msecs" }, > >> { "default", HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, { > >> opt_default }, "generic catch all option", "" }, > >> { "i", 0, { NULL }, "avconv compatibility dummy option", ""}, > >> + { "ac", HAS_ARG | OPT_STRING, { &acodec_name }, "audio codec > >> name", "" }, > >> + { "vc", HAS_ARG | OPT_STRING, { &vcodec_name }, "video codec > >> name", "" }, > >> { NULL, }, > > > > Would it make more sense to name them acodec and vcodec as the (old) > > avconv options, instead of inventing yet another naming? > > It is in line with the other avplay short options, acodec and vcodec are > deprecated, I do not have time to add -c:{number,a,v,s} properly. >
They are not deprecated. And +1 for making that -vcodec/-acodec Especially since -ac sets audio channels in avconv -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
