[libav-devel] [PATCH 1/6] avconv: set discard on input streams automatically.

Anton Khirnov anton at khirnov.net
Sun Feb 26 06:31:51 CET 2012


On Sat, 25 Feb 2012 20:39:54 -0500, Justin Ruggles <justin.ruggles at gmail.com> wrote:
> On 02/24/2012 10:11 AM, Anton Khirnov wrote:
> 
> > ---
> >  avconv.c |   16 ++++------------
> >  1 files changed, 4 insertions(+), 12 deletions(-)
> > 
> > diff --git a/avconv.c b/avconv.c
> > index d7ca8bd..e272182 100644
> > --- a/avconv.c
> > +++ b/avconv.c
> > @@ -3147,6 +3147,7 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
> >          ist->st = st;
> >          ist->file_index = nb_input_files;
> >          ist->discard = 1;
> > +        st->discard  = AVDISCARD_ALL;
> >          ist->opts = filter_codec_opts(codec_opts, ist->st->codec->codec_id, ic, st);
> >  
> >          ist->ts_scale = 1.0;
> > @@ -3155,10 +3156,6 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
> >          ist->dec = choose_decoder(o, ic, st);
> >  
> >          switch (dec->codec_type) {
> > -        case AVMEDIA_TYPE_AUDIO:
> > -            if (o->audio_disable)
> > -                st->discard = AVDISCARD_ALL;
> > -            break;
> >          case AVMEDIA_TYPE_VIDEO:
> >              if (dec->lowres) {
> >                  dec->flags |= CODEC_FLAG_EMU_EDGE;
> > @@ -3166,17 +3163,10 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
> >                  dec->width  >>= dec->lowres;
> >              }
> >  
> > -            if (o->video_disable)
> > -                st->discard = AVDISCARD_ALL;
> > -            else if (video_discard)
> > -                st->discard = video_discard;
> >              break;
> > +        case AVMEDIA_TYPE_AUDIO:
> >          case AVMEDIA_TYPE_DATA:
> > -            break;
> >          case AVMEDIA_TYPE_SUBTITLE:
> > -            if (o->subtitle_disable)
> > -                st->discard = AVDISCARD_ALL;
> > -            break;
> >          case AVMEDIA_TYPE_ATTACHMENT:
> >          case AVMEDIA_TYPE_UNKNOWN:
> >              break;
> > @@ -3850,6 +3840,7 @@ static void opt_output_file(void *optctx, const char *filename)
> >              ost->source_index = index;\
> >              ost->sync_ist     = &input_streams[index];\
> >              input_streams[index].discard = 0;\
> > +            input_streams[index].st->discard = AVDISCARD_NONE;\
> >          }
> >  
> >          /* video: highest resolution */
> > @@ -3913,6 +3904,7 @@ static void opt_output_file(void *optctx, const char *filename)
> >              ost->sync_ist     = &input_streams[input_files[map->sync_file_index].ist_index +
> >                                             map->sync_stream_index];
> >              ist->discard = 0;
> > +            ist->st->discard = AVDISCARD_NONE;
> >          }
> >      }
> >  
> 
> 
> Does this change current avconv behavior or just simplify things?
> 

It makes lavf not return packets for streams we're not interested in.

Shouldn't result in any changes in output, but I found it useful for
debugging.

-- 
Anton Khirnov


More information about the libav-devel mailing list