[FFmpeg-devel] [PATCH 6/7] Factorize opt_new_{audio, video, subtitle} definitions.

Aurelien Jacobs aurel
Fri Aug 13 22:05:52 CEST 2010


On Mon, Jul 26, 2010 at 01:53:09PM +0200, Stefano Sabatini wrote:
> ---
>  ffmpeg.c |   36 ++++++++++--------------------------
>  1 files changed, 10 insertions(+), 26 deletions(-)
> 
> diff --git a/ffmpeg.c b/ffmpeg.c
> index 5c035b4..ff5bfcc 100644
> --- a/ffmpeg.c
> +++ b/ffmpeg.c
> @@ -3603,37 +3603,21 @@ static void new_subtitle_stream(AVFormatContext *oc)
>      subtitle_stream_copy = 0;
>  }
>  
> -static void opt_new_audio_stream(void)
> +static void opt_new_stream(const char *opt, const char *arg)
>  {
>      AVFormatContext *oc;
> -    if (nb_output_files <= 0) {
> -        fprintf(stderr, "At least one output file must be specified\n");
> -        ffmpeg_exit(1);
> -    }
> -    oc = output_files[nb_output_files - 1];
> -    new_audio_stream(oc);
> -}
> +    static void (*fn)(AVFormatContext *oc);
> +    fn = !strcmp(opt, "newvideo"   ) ? new_video_stream    :
> +         !strcmp(opt, "newaudio"   ) ? new_audio_stream    :
> +         !strcmp(opt, "newsubtitle") ? new_subtitle_stream : NULL;
> +    assert(fn);

I think it would be simpler without fn. Something like:

       if (!strcmp(opt, "newvideo"   ))  new_video_stream(oc);
  else if (!strcmp(opt, "newaudio"   ))  new_audio_stream(oc);
  else if (!strcmp(opt, "newsubtitle"))  new_subtitle_stream(oc);
  else assert(0);

Aurel



More information about the ffmpeg-devel mailing list