[Ffmpeg-devel] getopt() on FreeBSD

Marcus Engene ffmpeg
Tue Oct 25 19:59:22 CEST 2005


I wrote vhook/watermark.c and today I got a mail from someone who didn't 
get it to work properly. He's on a FreeBSD system and I only have access 
to some Linux flavours and Windows.

Watermark complains that no filename is given. We added a

// Struct is mallocz:ed so noo need to reset.
// new code:
for (c=0; c<argc; c++) {
    fprintf(stderr,"arg %d is [%s]\n", c, argv[c]);

and indeed all arguments are there:

arg 0 is [/usr/local/lib/vhook/watermark.so]
arg 1 is [-f]
arg 2 is [/hdd1/ffmpeg_watermark.gif]

However adding this:

fprintf(stderr, "Filename [%s] [%s]", optarg, ci->filename);

right before break; in the switch-case 'f'  inside the getopt()-while 
gave no result!?

    while ((c = getopt(argc, argv, "f:")) > 0) {
        switch (c) {
            case 'f':
                strncpy(ci->filename, optarg, 1999);
                ci->filename[1999] = 0;
 ->             fprintf(stderr, "Filename [%s] [%s]", optarg, ci->filename);
                av_log(NULL, AV_LOG_DEBUG, "Unrecognized argument '%s'\n", argv[optind]);
                fprintf(stderr,"Unrecognized argument\n");
                return -1;
    if (0 == ci->filename[0]) {
        fprintf(stderr,"No filename!\n");
        return -1;

I have no access to a FreeBSD system, but does the getopt() behaviour 
really differ from Linux?

(Also added debug output in ffmpeg.c:add_frame_hooker())

db122# ffmpeg -v 2 -i /hdd1/anything_goes+0_1.vob -s 640x480 -vhook
'/usr/local/lib/vhook/watermark.so -f /hd1/ffmpeg_watermark.gif' out.mov
ffmpeg version CVS, build 3277056, Copyright (c) 2000-2004 Fabrice Bellard
  configuration:  --enable-memalign-hack --enable-gpl
--extra-cflags=-I/usr/local/include --extra-libs=-L/usr/local/lib
--enable-mp3lame --enable-faad --enable-faadbin --enable-faac --enable-xvid
--enable-a52 --enable-dts --enable-pp --enable-shared
  built on Oct 25 2005 13:52:54, gcc: 3.4.2 [FreeBSD] 20040728
Input #0, mpeg, from '/hdd1/anything_goes+0_1.vob':
  Duration: 00:24:44.4, start: 127.641967, bitrate: 5658 kb/s
  Stream #0.0[0xa0], 1/90000: Audio: pcm_s16be, 48000 Hz, stereo, 1536 kb/s
  Stream #0.1[0x1e0], 1/90000, 29.97 fps: Video: mpeg2video, yuv420p,
720x480, 1001/30000, 8000 kb/s
add_frame_hooker() Adding string [/usr/local/lib/vhook/watermark.so -f
add_frame_hooker() Added [/usr/local/lib/vhook/watermark.so]
add_frame_hooker() Added [-f]
add_frame_hooker() Added [/hdd1/ffmpeg_watermark.gif] last
arg 0 is [/usr/local/lib/vhook/watermark.so]
arg 1 is [-f]
arg 2 is [/hdd1/ffmpeg_watermark.gif]
No filename!
Failed to Configure /usr/local/lib/vhook/watermark.so
Failed to add video hook function: /usr/local/lib/vhook/watermark.so -f

Does anyone have an idea about this?

Mvh Marcus

More information about the ffmpeg-devel mailing list