[FFmpeg-devel] [PATCH] Fix printf usage in vhook

Stefano Sabatini stefano.sabatini-lala
Wed Sep 3 21:05:58 CEST 2008


On date Wednesday 2008-09-03 19:04:27 +0800, JonY encoded:
> Patch fixes some undefined references to "please_use_av_log". Do change  
> the AV_LOG levels if inappropriate.
>
> Any ideas fix fprintfs writing to files?
>> vhook/fish.c:369:                        fprintf(f, "P6 %d %d 255\n", width, height);
>> vhook/ppm.c:287:        fprintf( out, "P6\n%d %d\n255\n", width, height );

You have to redefine the av_log() behaviour, setting the av_log callback
function.

> Index: vhook/imlib2.c
> ===================================================================
> --- vhook/imlib2.c	(revision 15172)
> +++ vhook/imlib2.c	(working copy)
> @@ -215,21 +215,21 @@
>                  ci->fileImage = av_strdup(optarg);
>                  break;
>              case '?':
> -                fprintf(stderr, "Unrecognized argument '%s'\n", argv[optind]);
> +                av_log(NULL, AV_LOG_ERROR, "Unrecognized argument '%s'\n", argv[optind]);
>                  return -1;
>          }
>      }
>  
>      if (ci->eval_colors && !(ci->expr_R && ci->expr_G && ci->expr_B))
>      {
> -        fprintf(stderr, "You must specify expressions for all or no colors.\n");
> +        av_log(NULL, AV_LOG_ERROR, "You must specify expressions for all or no colors.\n");
>          return -1;
>      }
>  
>      if (ci->text || ci->file) {
>          ci->fn = imlib_load_font(font);
>          if (!ci->fn) {
> -            fprintf(stderr, "Failed to load font '%s'\n", font);
> +            av_log(NULL, AV_LOG_ERROR, "Failed to load font '%s'\n", font);
>              return -1;
>          }
>          imlib_context_set_font(ci->fn);
> @@ -242,7 +242,7 @@
>  
>          if (ci->eval_colors)
>          {
> -            fprintf(stderr, "You must not specify both a color name and expressions for the colors.\n");
> +            av_log(NULL, AV_LOG_ERROR, "You must not specify both a color name and expressions for the colors.\n");
>              return -1;
>          }
>  
> @@ -255,7 +255,7 @@
>                  f = fopen("/usr/lib/X11/rgb.txt", "r");
>          }
>          if (!f) {
> -            fprintf(stderr, "Failed to find RGB color names file\n");
> +            av_log(NULL, AV_LOG_ERROR, "Failed to find RGB color names file\n");
>              return -1;
>          }
>          while (fgets(buff, sizeof(buff), f)) {
> @@ -274,7 +274,7 @@
>          }
>          fclose(f);
>          if (!done) {
> -            fprintf(stderr, "Unable to find color '%s' in rgb.txt\n", color);
> +            av_log(NULL, AV_LOG_ERROR, "Unable to find color '%s' in rgb.txt\n", color);
>              return -1;
>          }
>      } else if (ci->eval_colors) {
> Index: vhook/fish.c
> ===================================================================
> --- vhook/fish.c	(revision 15172)
> +++ vhook/fish.c	(working copy)
> @@ -155,7 +155,7 @@
>              case 't':
>                  ci->threshold = atof(optarg) * 1000;
>                  if (ci->threshold > 1000 || ci->threshold < 0) {
> -                    fprintf(stderr, "Invalid threshold value '%s' (range is 0-1)\n", optarg);
> +                    av_log(NULL, AV_LOG_ERROR, "Invalid threshold value '%s' (range is 0-1)\n", optarg);
>                      return -1;
>                  }
>                  break;
> @@ -169,20 +169,20 @@
>                  ci->dir = av_strdup(optarg);
>                  break;
>              default:
> -                fprintf(stderr, "Unrecognized argument '%s'\n", argv[optind]);
> +                av_log(NULL, AV_LOG_ERROR, "Unrecognized argument '%s'\n", argv[optind]);
>                  return -1;
>          }
>      }
>  
> -    fprintf(stderr, "Fish detector configured:\n");
> -    fprintf(stderr, "    HSV range: %d,%d,%d - %d,%d,%d\n",
> +    av_log(NULL, AV_LOG_INFO, "Fish detector configured:\n");
> +    av_log(NULL, AV_LOG_INFO, "    HSV range: %d,%d,%d - %d,%d,%d\n",
>                          ci->dark.h,
>                          ci->dark.s,
>                          ci->dark.v,
>                          ci->bright.h,
>                          ci->bright.s,
>                          ci->bright.v);
> -    fprintf(stderr, "    Threshold is %d%% pixels\n", ci->threshold / 10);
> +    av_log(NULL, AV_LOG_INFO, "    Threshold is %d%% pixels\n", ci->threshold / 10);
>  
>  
>      return 0;
> @@ -234,7 +234,7 @@
>      int rowsize = picture->linesize[0];
>  
>  #if 0
> -    printf("pix_fmt = %d, width = %d, pts = %lld, ci->next_pts = %lld\n",
> +    av_log(NULL, AV_LOG_DEBUG, "pix_fmt = %d, width = %d, pts = %lld, ci->next_pts = %lld\n",
>          pix_fmt, width, pts, ci->next_pts);
>  #endif
>  
> @@ -281,7 +281,7 @@
>                  get_hsv(&hsv, r, g, b);
>  
>                  if (ci->debug > 1)
> -                    fprintf(stderr, "(%d,%d,%d) -> (%d,%d,%d)\n",
> +                    av_log(NULL, AV_LOG_DEBUG, "(%d,%d,%d) -> (%d,%d,%d)\n",
>                          r,g,b,hsv.h,hsv.s,hsv.v);
>  
>  
> @@ -306,7 +306,7 @@
>          }
>  
>          if (ci->debug)
> -            fprintf(stderr, "Fish: Inrange=%d of %d = %d threshold\n", inrange, pixcnt, 1000 * inrange / pixcnt);
> +            av_log(NULL, AV_LOG_INFO, "Fish: Inrange=%d of %d = %d threshold\n", inrange, pixcnt, 1000 * inrange / pixcnt);
>  
>          if (inrange * 1000 / pixcnt >= ci->threshold) {
>              /* Save to file */
> Index: vhook/null.c
> ===================================================================
> --- vhook/null.c	(revision 15172)
> +++ vhook/null.c	(working copy)
> @@ -50,7 +50,7 @@
>  
>  int Configure(void **ctxp, int argc, char *argv[])
>  {
> -    fprintf(stderr, "Called with argc=%d\n", argc);
> +    av_log(NULL, AV_LOG_DEBUG, "Called with argc=%d\n", argc);
>  
>      *ctxp = av_mallocz(sizeof(ContextInfo));
>      return 0;

As you may know VHOOK is harshly *deprecated*, nonetheless since we
don't know how much time libavfilter will stay in the limbo, maybe it
would still make sense to apply this.

Regards.
-- 
FFmpeg = Frightening Furious Minimal Problematic Educated Gospel




More information about the ffmpeg-devel mailing list