]> git.sesse.net Git - ffmpeg/blobdiff - ffmpeg.c
* prototypes at one place
[ffmpeg] / ffmpeg.c
index 2a7038ba3fe544fa385d1a55ee10a22aae74d9b9..6442f894909c09a8aecfa5ad754c40fbcfb11bb2 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -40,7 +40,7 @@
 #define INFINITY HUGE_VAL
 #endif
 
-#define MAXINT64 INT64_C(0x7fffffffffffffff)
+#define MAXINT64 int64_t_C(0x7fffffffffffffff)
 
 typedef struct {
     const char *name;
@@ -50,7 +50,7 @@ typedef struct {
 #define OPT_EXPERT 0x0004
 #define OPT_STRING 0x0008
     union {
-        void (*func_arg)();
+        void (*func_arg)(const char *);
         int *int_arg;
         char **str_arg;
     } u;
@@ -142,7 +142,7 @@ static int audio_disable = 0;
 static int audio_channels = 1;
 static int audio_codec_id = CODEC_ID_NONE;
 
-static INT64 recording_time = 0;
+static int64_t recording_time = 0;
 static int file_overwrite = 0;
 static char *str_title = NULL;
 static char *str_author = NULL;
@@ -160,6 +160,7 @@ static int video_stream_copy = 0;
 
 static char *video_grab_format = "video4linux";
 static char *video_device = NULL;
+static int  video_channel = 0;
 
 static char *audio_grab_format = "audio_device";
 static char *audio_device = NULL;
@@ -177,7 +178,7 @@ typedef struct AVOutputStream {
        for A/V sync */
     double sync_ipts;
     double sync_ipts_offset;
-    INT64 sync_opts;
+    int64_t sync_opts;
     /* video only */
     int video_resample;      /* video_resample and video_crop are mutually exclusive */
     AVPicture pict_tmp;      /* temporary image for resampling */
@@ -200,7 +201,7 @@ typedef struct AVInputStream {
     AVStream *st;
     int discard;             /* true if stream data should be discarded */
     int decoding_needed;     /* true if the packets must be decoded in 'raw_fifo' */
-    INT64 sample_index;      /* current sample */
+    int64_t sample_index;      /* current sample */
     int frame_decoded;       /* true if a video or audio frame has been decoded */
 } AVInputStream;
 
@@ -290,7 +291,7 @@ static int read_key(void)
 
 #endif
 
-int read_ffserver_streams(AVFormatContext *s, const char *filename)
+static int read_ffserver_streams(AVFormatContext *s, const char *filename)
 {
     int i, err;
     AVFormatContext *ic;
@@ -319,9 +320,9 @@ static void do_audio_out(AVFormatContext *s,
                          AVInputStream *ist,
                          unsigned char *buf, int size)
 {
-    UINT8 *buftmp;
-    UINT8 audio_buf[2*MAX_AUDIO_PACKET_SIZE]; /* XXX: allocate it */
-    UINT8 audio_out[4*MAX_AUDIO_PACKET_SIZE]; /* XXX: allocate it - yep really WMA */
+    uint8_t *buftmp;
+    uint8_t audio_buf[2*MAX_AUDIO_PACKET_SIZE]; /* XXX: allocate it */
+    uint8_t audio_out[4*MAX_AUDIO_PACKET_SIZE]; /* XXX: allocate it - yep really WMA */
     int size_out, frame_bytes, ret;
     AVCodecContext *enc;
 
@@ -375,7 +376,7 @@ static void do_audio_out(AVFormatContext *s,
 static void write_picture(AVFormatContext *s, int index, AVPicture *picture, 
                           int pix_fmt, int w, int h)
 {
-    UINT8 *buf, *src, *dest;
+    uint8_t *buf, *src, *dest;
     int size, j, i;
 
     /* XXX: not efficient, should add test if we can take
@@ -472,7 +473,7 @@ static void pre_process_video_frame(AVInputStream *ist, AVPicture *picture, void
     AVCodecContext *dec;
     AVPicture *picture2;
     AVPicture picture_tmp;
-    UINT8 *buf = 0;
+    uint8_t *buf = 0;
 
     dec = &ist->st->codec;
 
@@ -519,8 +520,8 @@ static void do_video_out(AVFormatContext *s,
     int nb_frames, i, ret;
     AVPicture *final_picture, *formatted_picture;
     AVPicture picture_format_temp, picture_crop_temp;
-    static UINT8 *video_buffer;
-    UINT8 *buf = NULL, *buf1 = NULL;
+    static uint8_t *video_buffer;
+    uint8_t *buf = NULL, *buf1 = NULL;
     AVCodecContext *enc, *dec;
 
 #define VIDEO_BUFFER_SIZE (1024*1024)
@@ -674,7 +675,7 @@ static void do_video_out(AVFormatContext *s,
                    avoid any copies. We support temorarily the older
                    method. */
                 av_write_frame(s, ost->index, 
-                               (UINT8 *)final_picture, sizeof(AVPicture));
+                               (uint8_t *)final_picture, sizeof(AVPicture));
             } else {
                 write_picture(s, ost->index, final_picture, enc->pix_fmt, 
                               enc->width, enc->height);
@@ -689,20 +690,20 @@ static void do_video_out(AVFormatContext *s,
 
 static double psnr(double d){
     if(d==0) return INFINITY;
-    return -10.0*log(d)/log(10);
+    return -10.0*log(d)/log(10.0);
 }
 
 static void do_video_stats(AVFormatContext *os, AVOutputStream *ost, 
                            int frame_size)
 {
     static FILE *fvstats=NULL;
-    static INT64 total_size = 0;
+    static int64_t total_size = 0;
     char filename[40];
     time_t today2;
     struct tm *today;
     AVCodecContext *enc;
     int frame_number;
-    INT64 ti;
+    int64_t ti;
     double ti1, bitrate, avg_bitrate;
     
     if (!fvstats) {
@@ -741,21 +742,21 @@ static void do_video_stats(AVFormatContext *os, AVOutputStream *ost,
     }
 }
 
-void print_report(AVFormatContext **output_files, 
-                  AVOutputStream **ost_table, int nb_ostreams,
-                  int is_last_report)
+static void print_report(AVFormatContext **output_files,
+                        AVOutputStream **ost_table, int nb_ostreams,
+                        int is_last_report)
 {
     char buf[1024];
     AVOutputStream *ost;
     AVFormatContext *oc, *os;
-    INT64 total_size;
+    int64_t total_size;
     AVCodecContext *enc;
     int frame_number, vid, i;
     double bitrate, ti1, pts;
-    static INT64 last_time = -1;
+    static int64_t last_time = -1;
     
     if (!is_last_report) {
-        INT64 cur_time;
+        int64_t cur_time;
         /* display the report every 0.5 seconds */
         cur_time = av_gettime();
         if (last_time == -1) {
@@ -1018,7 +1019,7 @@ static int av_encode(AVFormatContext **output_files,
                     ost->topBand = frame_topBand;
                     ost->leftBand = frame_leftBand;
                 } else {
-                    UINT8 *buf;
+                    uint8_t *buf;
                     ost->video_resample = 1;
                     ost->video_crop = 0; // cropping is handled as part of resample
                     buf = av_malloc((codec->width * codec->height * 3) / 2);
@@ -1178,9 +1179,9 @@ static int av_encode(AVFormatContext **output_files,
     for(;;) {
         int file_index, ist_index;
         AVPacket pkt;
-        UINT8 *ptr;
+        uint8_t *ptr;
         int len;
-        UINT8 *data_buf;
+        uint8_t *data_buf;
         int data_size, got_picture;
         AVPicture picture;
         short samples[AVCODEC_MAX_AUDIO_FRAME_SIZE / 2];
@@ -1251,7 +1252,7 @@ static int av_encode(AVFormatContext **output_files,
         ptr = pkt.data;
         pts_set = 0;
         while (len > 0) {
-            INT64 ipts;
+            int64_t ipts;
 
             ipts = AV_NOPTS_VALUE;
 
@@ -1287,7 +1288,7 @@ static int av_encode(AVFormatContext **output_files,
                         len -= ret;
                         continue;
                     }
-                    data_buf = (UINT8 *)samples;
+                    data_buf = (uint8_t *)samples;
                     break;
                 case CODEC_TYPE_VIDEO:
                     if (ist->st->codec.codec_id == CODEC_ID_RAWVIDEO) {
@@ -1347,7 +1348,7 @@ static int av_encode(AVFormatContext **output_files,
             /* XXX: add mpeg4 too ? */
             if (ist->st->codec.codec_id == CODEC_ID_MPEG1VIDEO) {
                 if (ist->st->codec.pict_type != B_TYPE) {
-                    INT64 tmp;
+                    int64_t tmp;
                     tmp = ist->last_ip_pts;
                     ist->last_ip_pts  = ist->frac_pts.val;
                     ist->frac_pts.val = tmp;
@@ -1523,7 +1524,7 @@ int file_read(const char *filename)
 }
 #endif
 
-void show_licence(void)
+static void show_licence(void)
 {
     printf(
     "ffmpeg version " FFMPEG_VERSION "\n"
@@ -1545,7 +1546,7 @@ void show_licence(void)
     exit(1);
 }
 
-void opt_image_format(const char *arg)
+static void opt_image_format(const char *arg)
 {
     AVImageFormat *f;
     
@@ -1560,7 +1561,7 @@ void opt_image_format(const char *arg)
     image_format = f;
 }
 
-void opt_format(const char *arg)
+static void opt_format(const char *arg)
 {
     /* compatibility stuff for pgmyuv */
     if (!strcmp(arg, "pgmyuv")) {
@@ -1576,80 +1577,80 @@ void opt_format(const char *arg)
     }
 }
 
-void opt_video_bitrate(const char *arg)
+static void opt_video_bitrate(const char *arg)
 {
     video_bit_rate = atoi(arg) * 1000;
 }
 
-void opt_video_bitrate_tolerance(const char *arg)
+static void opt_video_bitrate_tolerance(const char *arg)
 {
     video_bit_rate_tolerance = atoi(arg) * 1000;
 }
 
-void opt_video_bitrate_max(const char *arg)
+static void opt_video_bitrate_max(const char *arg)
 {
     video_rc_max_rate = atoi(arg) * 1000;
 }
 
-void opt_video_bitrate_min(const char *arg)
+static void opt_video_bitrate_min(const char *arg)
 {
     video_rc_min_rate = atoi(arg) * 1000;
 }
 
-void opt_video_buffer_size(const char *arg)
+static void opt_video_buffer_size(const char *arg)
 {
     video_rc_buffer_size = atoi(arg) * 1000;
 }
 
-void opt_video_rc_eq(char *arg)
+static void opt_video_rc_eq(char *arg)
 {
     video_rc_eq = arg;
 }
 
-void opt_video_rc_override_string(char *arg)
+static void opt_video_rc_override_string(char *arg)
 {
     video_rc_override_string = arg;
 }
 
 
-void opt_workaround_bugs(const char *arg)
+static void opt_workaround_bugs(const char *arg)
 {
     workaround_bugs = atoi(arg);
 }
 
-void opt_dct_algo(const char *arg)
+static void opt_dct_algo(const char *arg)
 {
     dct_algo = atoi(arg);
 }
 
-void opt_idct_algo(const char *arg)
+static void opt_idct_algo(const char *arg)
 {
     idct_algo = atoi(arg);
 }
 
 
-void opt_error_resilience(const char *arg)
+static void opt_error_resilience(const char *arg)
 {
     error_resilience = atoi(arg);
 }
 
-void opt_error_concealment(const char *arg)
+static void opt_error_concealment(const char *arg)
 {
     error_concealment = atoi(arg);
 }
 
-void opt_debug(const char *arg)
+static void opt_debug(const char *arg)
 {
     debug = atoi(arg);
 }
 
-void opt_frame_rate(const char *arg)
+static void opt_frame_rate(const char *arg)
 {
     frame_rate = (int)(strtod(arg, 0) * FRAME_RATE_BASE);
 }
 
 
-void opt_frame_crop_top(const char *arg)
+static void opt_frame_crop_top(const char *arg)
 {
     frame_topBand = atoi(arg); 
     if (frame_topBand < 0) {
@@ -1667,7 +1668,7 @@ void opt_frame_crop_top(const char *arg)
     frame_height -= frame_topBand;
 }
 
-void opt_frame_crop_bottom(const char *arg)
+static void opt_frame_crop_bottom(const char *arg)
 {
     frame_bottomBand = atoi(arg);
     if (frame_bottomBand < 0) {
@@ -1685,7 +1686,7 @@ void opt_frame_crop_bottom(const char *arg)
     frame_height -= frame_bottomBand;
 }
 
-void opt_frame_crop_left(const char *arg)
+static void opt_frame_crop_left(const char *arg)
 {
     frame_leftBand = atoi(arg);
     if (frame_leftBand < 0) {
@@ -1703,7 +1704,7 @@ void opt_frame_crop_left(const char *arg)
     frame_width -= frame_leftBand;
 }
 
-void opt_frame_crop_right(const char *arg)
+static void opt_frame_crop_right(const char *arg)
 {
     frame_rightBand = atoi(arg);
     if (frame_rightBand < 0) {
@@ -1721,7 +1722,7 @@ void opt_frame_crop_right(const char *arg)
     frame_width -= frame_rightBand;
 }
 
-void opt_frame_size(const char *arg)
+static void opt_frame_size(const char *arg)
 {
     parse_image_size(&frame_width, &frame_height, arg);
     if (frame_width <= 0 || frame_height <= 0) {
@@ -1734,12 +1735,12 @@ void opt_frame_size(const char *arg)
     }
 }
 
-void opt_gop_size(const char *arg)
+static void opt_gop_size(const char *arg)
 {
     gop_size = atoi(arg);
 }
 
-void opt_b_frames(const char *arg)
+static void opt_b_frames(const char *arg)
 {
     b_frames = atoi(arg);
     if (b_frames > FF_MAX_B_FRAMES) {
@@ -1751,7 +1752,7 @@ void opt_b_frames(const char *arg)
     }
 }
 
-void opt_qscale(const char *arg)
+static void opt_qscale(const char *arg)
 {
     video_qscale = atoi(arg);
     if (video_qscale < 0 ||
@@ -1761,7 +1762,7 @@ void opt_qscale(const char *arg)
     }
 }
 
-void opt_qmin(const char *arg)
+static void opt_qmin(const char *arg)
 {
     video_qmin = atoi(arg);
     if (video_qmin < 0 ||
@@ -1771,7 +1772,7 @@ void opt_qmin(const char *arg)
     }
 }
 
-void opt_qmax(const char *arg)
+static void opt_qmax(const char *arg)
 {
     video_qmax = atoi(arg);
     if (video_qmax < 0 ||
@@ -1781,7 +1782,7 @@ void opt_qmax(const char *arg)
     }
 }
 
-void opt_mb_qmin(const char *arg)
+static void opt_mb_qmin(const char *arg)
 {
     video_mb_qmin = atoi(arg);
     if (video_mb_qmin < 0 ||
@@ -1791,7 +1792,7 @@ void opt_mb_qmin(const char *arg)
     }
 }
 
-void opt_mb_qmax(const char *arg)
+static void opt_mb_qmax(const char *arg)
 {
     video_mb_qmax = atoi(arg);
     if (video_mb_qmax < 0 ||
@@ -1801,7 +1802,7 @@ void opt_mb_qmax(const char *arg)
     }
 }
 
-void opt_qdiff(const char *arg)
+static void opt_qdiff(const char *arg)
 {
     video_qdiff = atoi(arg);
     if (video_qdiff < 0 ||
@@ -1811,79 +1812,84 @@ void opt_qdiff(const char *arg)
     }
 }
 
-void opt_qblur(const char *arg)
+static void opt_qblur(const char *arg)
 {
     video_qblur = atof(arg);
 }
 
-void opt_qcomp(const char *arg)
+static void opt_qcomp(const char *arg)
 {
     video_qcomp = atof(arg);
 }
 
-void opt_rc_initial_cplx(const char *arg)
+static void opt_rc_initial_cplx(const char *arg)
 {
     video_rc_initial_cplx = atof(arg);
 }
-void opt_b_qfactor(const char *arg)
+static void opt_b_qfactor(const char *arg)
 {
     video_b_qfactor = atof(arg);
 }
-void opt_i_qfactor(const char *arg)
+static void opt_i_qfactor(const char *arg)
 {
     video_i_qfactor = atof(arg);
 }
-void opt_b_qoffset(const char *arg)
+static void opt_b_qoffset(const char *arg)
 {
     video_b_qoffset = atof(arg);
 }
-void opt_i_qoffset(const char *arg)
+static void opt_i_qoffset(const char *arg)
 {
     video_i_qoffset = atof(arg);
 }
 
-void opt_packet_size(const char *arg)
+static void opt_packet_size(const char *arg)
 {
     packet_size= atoi(arg);
 }
 
-void opt_strict(const char *arg)
+static void opt_strict(const char *arg)
 {
     strict= atoi(arg);
 }
 
-void opt_audio_bitrate(const char *arg)
+static void opt_audio_bitrate(const char *arg)
 {
     audio_bit_rate = atoi(arg) * 1000;
 }
 
-void opt_audio_rate(const char *arg)
+static void opt_audio_rate(const char *arg)
 {
     audio_sample_rate = atoi(arg);
 }
 
-void opt_audio_channels(const char *arg)
+static void opt_audio_channels(const char *arg)
 {
     audio_channels = atoi(arg);
 }
 
-void opt_video_device(const char *arg)
+static void opt_video_device(const char *arg)
 {
-    video_device = strdup(arg);
+    video_device = av_strdup(arg);
 }
 
-void opt_audio_device(const char *arg)
+static void opt_video_channel(const char *arg)
 {
-    audio_device = strdup(arg);
+    video_channel = strtol(arg, NULL, 0);
 }
 
-void opt_dv1394(const char *arg)
+static void opt_audio_device(const char *arg)
+{
+    audio_device = av_strdup(arg);
+}
+
+static void opt_dv1394(const char *arg)
 {
     video_grab_format = "dv1394";
-    audio_grab_format = "none";
+    audio_grab_format = NULL;
 }
 
-void opt_audio_codec(const char *arg)
+static void opt_audio_codec(const char *arg)
 {
     AVCodec *p;
 
@@ -1905,12 +1911,12 @@ void opt_audio_codec(const char *arg)
     }
 }
 
-void add_frame_hooker(const char *arg)
+static void add_frame_hooker(const char *arg)
 {
     int argc = 0;
     char *argv[64];
     int i;
-    char *args = strdup(arg);
+    char *args = av_strdup(arg);
 
     argv[0] = strtok(args, " ");
     while (argc < 62 && (argv[++argc] = strtok(NULL, " "))) {
@@ -1934,7 +1940,7 @@ const char *motion_str[] = {
     NULL,
 };
 
-void opt_motion_estimation(const char *arg)
+static void opt_motion_estimation(const char *arg)
 {
     const char **p;
     p = motion_str;
@@ -1950,7 +1956,7 @@ void opt_motion_estimation(const char *arg)
     me_method = (p - motion_str) + 1;
 }
 
-void opt_video_codec(const char *arg)
+static void opt_video_codec(const char *arg)
 {
     AVCodec *p;
 
@@ -1972,7 +1978,7 @@ void opt_video_codec(const char *arg)
     }
 }
 
-void opt_map(const char *arg)
+static void opt_map(const char *arg)
 {
     AVStreamMap *m;
     const char *p;
@@ -1987,12 +1993,12 @@ void opt_map(const char *arg)
     m->stream_index = strtol(p, (char **)&p, 0);
 }
 
-void opt_recording_time(const char *arg)
+static void opt_recording_time(const char *arg)
 {
     recording_time = parse_date(arg, 1);
 }
 
-void print_error(const char *filename, int err)
+static void print_error(const char *filename, int err)
 {
     switch(err) {
     case AVERROR_NUMEXPECTED:
@@ -2014,7 +2020,7 @@ void print_error(const char *filename, int err)
     }
 }
 
-void opt_input_file(const char *filename)
+static void opt_input_file(const char *filename)
 {
     AVFormatContext *ic;
     AVFormatParameters params, *ap = &params;
@@ -2092,7 +2098,7 @@ void opt_input_file(const char *filename)
     image_format = NULL;
 }
 
-void check_audio_video_inputs(int *has_video_ptr, int *has_audio_ptr)
+static void check_audio_video_inputs(int *has_video_ptr, int *has_audio_ptr)
 {
     int has_video, has_audio, i, j;
     AVFormatContext *ic;
@@ -2119,7 +2125,7 @@ void check_audio_video_inputs(int *has_video_ptr, int *has_audio_ptr)
     *has_audio_ptr = has_audio;
 }
 
-void opt_output_file(const char *filename)
+static void opt_output_file(const char *filename)
 {
     AVStream *st;
     AVFormatContext *oc;
@@ -2228,10 +2234,6 @@ void opt_output_file(const char *filename)
                
             
                 if (b_frames) {
-                    if (codec_id != CODEC_ID_MPEG4) {
-                        fprintf(stderr, "\nB frames encoding only supported by MPEG-4.\n");
-                        exit(1);
-                    }
                     video_enc->max_b_frames = b_frames;
                     video_enc->b_frame_strategy = 0;
                     video_enc->b_quant_factor = 2.0;
@@ -2256,7 +2258,8 @@ void opt_output_file(const char *filename)
                         exit(1);
                     }
                     video_enc->rc_override= 
-                        realloc(video_enc->rc_override, sizeof(RcOverride)*(i+1));
+                        av_realloc(video_enc->rc_override, 
+                                   sizeof(RcOverride)*(i+1));
                     video_enc->rc_override[i].start_frame= start;
                     video_enc->rc_override[i].end_frame  = end;
                     if(q>0){
@@ -2415,7 +2418,7 @@ void opt_output_file(const char *filename)
 }
 
 /* prepare dummy protocols for grab */
-void prepare_grab(void)
+static void prepare_grab(void)
 {
     int has_video, has_audio, i, j;
     AVFormatContext *oc;
@@ -2463,8 +2466,8 @@ void prepare_grab(void)
     if (has_video) {
         AVInputFormat *fmt1;
         fmt1 = av_find_input_format(video_grab_format);
-        vp->device = video_device;
-        /* XXX: set DV video channel ? */
+        vp->device  = video_device;
+        vp->channel = video_channel;
         if (av_open_input_file(&ic, "", fmt1, 0, vp) < 0) {
             fprintf(stderr, "Could not find video grab device\n");
             exit(1);
@@ -2475,7 +2478,7 @@ void prepare_grab(void)
         dump_format(ic, nb_input_files, "", 0);
         nb_input_files++;
     }
-    if (has_audio) {
+    if (has_audio && audio_grab_format) {
         AVInputFormat *fmt1;
         fmt1 = av_find_input_format(audio_grab_format);
         ap->device = audio_device;
@@ -2490,7 +2493,7 @@ void prepare_grab(void)
 }
 
 /* open the necessary output devices for playing */
-void prepare_play(void)
+static void prepare_play(void)
 {
     int has_video, has_audio;
     
@@ -2510,7 +2513,7 @@ void prepare_play(void)
             fprintf(stderr, "Could not find audio device\n");
             exit(1);
         }
-        opt_output_file(audio_device);
+        opt_output_file(audio_device?audio_device:"/dev/dsp0");
     }
 
     if (has_video) {
@@ -2524,7 +2527,7 @@ void prepare_play(void)
 }
 
 /* same option as mencoder */
-void opt_pass(const char *pass_str)
+static void opt_pass(const char *pass_str)
 {
     int pass;
     pass = atoi(pass_str);
@@ -2536,12 +2539,12 @@ void opt_pass(const char *pass_str)
 }
 
 #if defined(CONFIG_WIN32) || defined(CONFIG_OS2)
-INT64 getutime(void)
+static int64_t getutime(void)
 {
   return av_gettime();
 }
 #else
-INT64 getutime(void)
+static int64_t getutime(void)
 {
     struct rusage rusage;
 
@@ -2552,14 +2555,14 @@ INT64 getutime(void)
 
 extern int ffm_nopts;
 
-void opt_bitexact(void)
+static void opt_bitexact(void)
 {
     avcodec_set_bit_exact();
     /* disable generate of real time pts in ffm (need to be supressed anyway) */
     ffm_nopts = 1;
 }
 
-void show_formats(void)
+static void show_formats(void)
 {
     AVInputFormat *ifmt;
     AVOutputFormat *ofmt;
@@ -2723,6 +2726,7 @@ const OptionDef options[] = {
     { "minrate", HAS_ARG, {(void*)opt_video_bitrate_min}, "set min video bitrate tolerance (in kbit/s)", "bitrate" },
     { "bufsize", HAS_ARG, {(void*)opt_video_buffer_size}, "set ratecontrol buffere size (in kbit)", "size" },
     { "vd", HAS_ARG | OPT_EXPERT, {(void*)opt_video_device}, "set video grab device", "device" },
+    { "vc", HAS_ARG | OPT_EXPERT, {(void*)opt_video_channel}, "set video grab channel (DV1394 only)", "channel" },
     { "dv1394", OPT_EXPERT, {(void*)opt_dv1394}, "set DV1394 grab", "" },
     { "vcodec", HAS_ARG | OPT_EXPERT, {(void*)opt_video_codec}, "force video codec ('copy' to copy stream)", "codec" },
     { "me", HAS_ARG | OPT_EXPERT, {(void*)opt_motion_estimation}, "set motion estimation method", 
@@ -2766,8 +2770,8 @@ int main(int argc, char **argv)
     int optindex, i;
     const char *opt, *arg;
     const OptionDef *po;
-    INT64 ti;
-    
+    int64_t ti;
+
     av_register_all();
 
     /* detect if invoked as player */
@@ -2804,12 +2808,12 @@ int main(int argc, char **argv)
             }
             if (po->flags & OPT_STRING) {
                 char *str;
-                str = strdup(arg);
+                str = av_strdup(arg);
                 *po->u.str_arg = str;
             } else if (po->flags & OPT_BOOL) {
                 *po->u.int_arg = 1;
             } else {
-                po->u.func_arg(arg);
+               po->u.func_arg(arg);
             }
         } else {
             if (!do_play) {