[FFmpeg-devel] ffplay and the return values

Marton Balint cus at passwd.hu
Mon Apr 9 17:06:11 CEST 2012



On Sun, 8 Apr 2012, Bernd Krüger-Knauber wrote:

> Sorry,
>
> it's my first contribution to a bigger project.
>
> Here is diff -u output
>
> --- ffplay.c.org	2012-04-07 22:02:21 +0000
> +++ ffplay.c	2012-04-08 14:40:13 +0000
> @@ -84,6 +84,21 @@
>  /* NOTE: the size must be big enough to compensate the hardware audio buffersize size */
>  #define SAMPLE_ARRAY_SIZE (2 * 65536)
> 
> +enum ExitValues { 
> +	NormalExit,
> +	UserExit,
> +	SDLVideoModeErrorExit,
> +	ImageToBigErrorExit,

please mind the spelling: ImageTooBig

> +	LockMgrErorExit,

spelling: Error

> +	VideoStateErrorExit,
> +	ConversionContextInitErrorExit,
> +	OptionArgumentErrorExit,
> +	NoInputfileErrorExit,

should be InputFile

> +	SDLInitErrorExit,
> +	InputfileErrorExit,

same here

> +	SigTermHandlerExit
> +};
> +
>  static int sws_flags = SWS_BICUBIC;
>
>  typedef struct PacketQueue {
> @@ -908,7 +923,7 @@
>      av_free(is);
>  }
> 
> -static void do_exit(VideoState *is)
> +static void do_exit(VideoState *is, int ExitValue)

please use exit_value for variable name instead, CamelCase is not used for 
variables in the current code.

>  {
>      if (is) {
>          stream_close(is);
> @@ -923,12 +938,12 @@
>          printf("\n");
>      SDL_Quit();
>      av_log(NULL, AV_LOG_QUIET, "%s", "");
> -    exit(0);
> +    exit(ExitValue);
>  }
>
>  static void sigterm_handler(int sig)
>  {
> -    exit(123);
> +    exit(SigTermHandlerExit);
>  }
>
>  static int video_open(VideoState *is, int force_set_video_mode)
> @@ -964,7 +979,7 @@
>      screen = SDL_SetVideoMode(w, h, 0, flags);
>      if (!screen) {
>          fprintf(stderr, "SDL: could not set video mode - exiting\n");
> -        do_exit(is);
> +        do_exit(is, SDLVideoModeErrorExit);
>      }
>      if (!window_title)
>          window_title = input_filename;
> @@ -1327,7 +1342,7 @@
>          fprintf(stderr, "Error: the video system does not support an image\n"
>                          "size of %dx%d pixels. Try using -lowres or -vf \"scale=w:h\"\n"
>                          "to reduce the image size.\n", vp->width, vp->height );
> -        do_exit(is);
> +        do_exit(is, ImageToBigErrorExit);
>      }
>
>      SDL_LockMutex(is->pictq_mutex);
> @@ -1445,7 +1460,7 @@
>              PIX_FMT_YUV420P, sws_flags, NULL, NULL, NULL);
>          if (is->img_convert_ctx == NULL) {
>              fprintf(stderr, "Cannot initialize the conversion context\n");
> -            exit(1);
> +            exit(ConversionContextInitErrorExit);
>          }
>          sws_scale(is->img_convert_ctx, src_frame->data, src_frame->linesize,
>                    0, vp->height, pict.data, pict.linesize);
> @@ -2826,13 +2841,13 @@
>          switch (event.type) {
>          case SDL_KEYDOWN:
>              if (exit_on_keydown) {
> -                do_exit(cur_stream);
> +                do_exit(cur_stream, UserExit);
>                  break;
>              }
>              switch (event.key.keysym.sym) {
>              case SDLK_ESCAPE:
>              case SDLK_q:
> -                do_exit(cur_stream);
> +                do_exit(cur_stream, UserExit);
>                  break;
>              case SDLK_f:
>                  toggle_full_screen(cur_stream);
> @@ -2904,7 +2919,7 @@
>              break;
>          case SDL_MOUSEBUTTONDOWN:
>              if (exit_on_mousedown) {
> -                do_exit(cur_stream);
> +                do_exit(cur_stream, UserExit);
>                  break;
>              }
>          case SDL_MOUSEMOTION:
> @@ -2947,8 +2962,10 @@
>                  cur_stream->force_refresh = 1;
>              break;
>          case SDL_QUIT:
> +        		do_exit(cur_stream, UserExit);

indentation seems messed up

> +            break;
>          case FF_QUIT_EVENT:
> -            do_exit(cur_stream);
> +            do_exit(cur_stream, NormalExit);
>              break;
>          case FF_ALLOC_EVENT:
>              video_open(event.user.data1, 0);
> @@ -3008,7 +3025,7 @@
>          av_sync_type = AV_SYNC_EXTERNAL_CLOCK;
>      else {
>          fprintf(stderr, "Unknown value for %s: %s\n", opt, arg);
> -        exit(1);
> +        exit(OptionArgumentErrorExit);
>      }
>      return 0;
>  }
> @@ -3039,7 +3056,7 @@
>      if (input_filename) {
>          fprintf(stderr, "Argument '%s' provided as input filename, but '%s' was already specified.\n",
>                  filename, input_filename);
> -        exit_program(1);
> +        exit_program(InputfileErrorExit);
>      }
>      if (!strcmp(filename, "-"))
>          filename = "pipe:";
> @@ -3194,7 +3211,7 @@
>          show_usage();
>          fprintf(stderr, "An input file must be specified\n");
>          fprintf(stderr, "Use -h to get full help or, even better, run 'man %s'\n", program_name);
> -        exit(1);
> +        exit(NoInputfileErrorExit);
>      }
>
>      if (display_disable) {
> @@ -3209,7 +3226,7 @@
>      if (SDL_Init (flags)) {
>          fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());
>          fprintf(stderr, "(Did you set the DISPLAY variable?)\n");
> -        exit(1);
> +        exit(SDLInitErrorExit);
>      }
>
>      if (!display_disable) {
> @@ -3226,7 +3243,7 @@
>
>      if (av_lockmgr_register(lockmgr)) {
>          fprintf(stderr, "Could not initialize lock manager!\n");
> -        do_exit(NULL);
> +        do_exit(NULL, LockMgrErorExit);
>      }
>
>      av_init_packet(&flush_pkt);
> @@ -3235,7 +3252,7 @@
>      is = stream_open(input_filename, file_iformat);
>      if (!is) {
>          fprintf(stderr, "Failed to initialize VideoState!\n");
> -        do_exit(NULL);
> +        do_exit(NULL, VideoStateErrorExit);
>      }
>
>      event_loop(is);

Otherwise it looks fine.

Thanks,
Marton


More information about the ffmpeg-devel mailing list