[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