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

JonY 10walls
Thu Sep 4 06:54:48 CEST 2008


Stefano Sabatini wrote:
> 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.
>
Do you have any suggestions where the callback should be pointed to?

>> 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.

Thanks, I know its depreciated, but I don't know why the errors appeared 
now, just trying to correct it.




More information about the ffmpeg-devel mailing list