]> git.sesse.net Git - ffmpeg/blobdiff - ffmpeg.c
asv2 regression test
[ffmpeg] / ffmpeg.c
index 504e818181929e6bc6de82f1a11bcd7a47b7fd43..0b6da2e62baba91141ea49d549380f865ff8097d 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -114,10 +114,8 @@ static int same_quality = 0;
 static int b_frames = 0;
 static int mb_decision = FF_MB_DECISION_SIMPLE;
 static int use_4mv = 0;
-/* Fx */
 static int use_aic = 0;
 static int use_umv = 0;
-/* /Fx */
 static int do_deinterlace = 0;
 static int workaround_bugs = FF_BUG_AUTODETECT;
 static int error_resilience = 2;
@@ -128,6 +126,7 @@ static int use_part = 0;
 static int packet_size = 0;
 static int strict = 0;
 static int debug = 0;
+extern int loop_input; /* currently a hack */
 
 static int gop_size = 12;
 static int intra_only = 0;
@@ -163,6 +162,8 @@ static char *video_standard = "ntsc";
 static char *audio_grab_format = "audio_device";
 static char *audio_device = NULL;
 
+static int using_stdin = 0;
+
 #define DEFAULT_PASS_LOGFILENAME "ffmpeg2pass"
 
 typedef struct AVOutputStream {
@@ -1140,14 +1141,15 @@ static int av_encode(AVFormatContext **output_files,
     }
 
 #ifndef CONFIG_WIN32
-    fprintf(stderr, "Press [q] to stop encoding\n");
+    if ( !using_stdin )
+        fprintf(stderr, "Press [q] to stop encoding\n");
 #endif
     term_init();
 
     stream_no_data = 0;
     key = -1;
 
-    for(;;) {
+    for(; received_sigterm == 0;) {
         int file_index, ist_index;
         AVPacket pkt;
         uint8_t *ptr;
@@ -1161,7 +1163,7 @@ static int av_encode(AVFormatContext **output_files,
         
     redo:
         /* if 'q' pressed, exits */
-        if (key) {
+        if (!using_stdin) {
             /* read_key() returns 0 on EOF */
             key = read_key();
             if (key == 'q')
@@ -1992,6 +1994,9 @@ static void opt_input_file(const char *filename)
     if (!strcmp(filename, "-"))
         filename = "pipe:";
 
+    using_stdin |= !strcmp(filename, "pipe:" ) || 
+                   !strcmp( filename, "/dev/stdin" );
+
     /* get default parameters from command line */
     memset(ap, 0, sizeof(*ap));
     ap->sample_rate = audio_sample_rate;
@@ -2205,14 +2210,12 @@ static void opt_output_file(const char *filename)
 
                 video_enc->mb_decision = mb_decision;
                 
-               /* Fx */ 
                 if (use_umv) {
                     video_enc->flags |= CODEC_FLAG_H263P_UMV;
                 }
                if (use_aic) {
                     video_enc->flags |= CODEC_FLAG_H263P_AIC;
                 }
-               /* /Fx */ 
                 if (use_4mv) {
                     video_enc->mb_decision = FF_MB_DECISION_BITS; //FIXME remove
                     video_enc->flags |= CODEC_FLAG_4MV;
@@ -2369,13 +2372,19 @@ static void opt_output_file(const char *filename)
             if (url_exist(filename)) {
                 int c;
                 
-                printf("File '%s' already exists. Overwrite ? [y/N] ", filename);
-                fflush(stdout);
-                c = getchar();
-                if (toupper(c) != 'Y') {
-                    fprintf(stderr, "Not overwriting - exiting\n");
+                if ( !using_stdin ) {
+                    fprintf(stderr,"File '%s' already exists. Overwrite ? [y/N] ", filename);
+                    fflush(stderr);
+                    c = getchar();
+                    if (toupper(c) != 'Y') {
+                        fprintf(stderr, "Not overwriting - exiting\n");
+                        exit(1);
+                    }
+                               }
+                               else {
+                    fprintf(stderr,"File '%s' already exists. Exiting.\n", filename);
                     exit(1);
-                }
+                               }
             }
         }
         
@@ -2580,7 +2589,7 @@ static void show_formats(void)
         printf(" %s:", up->name);
     printf("\n");
     
-    printf("Frame size, frame rate abbreviations: ntsc pal film ntsc-film sqcif qcif cif 4cif\n");
+    printf("Frame size, frame rate abbreviations: ntsc pal qntsc qpal sntsc spal film ntsc-film sqcif qcif cif 4cif\n");
     printf("Motion estimation methods:");
     pp = motion_str;
     while (*pp) {
@@ -2618,12 +2627,12 @@ const OptionDef options[] = {
     { "hex", OPT_BOOL | OPT_EXPERT, {(void*)&do_hex_dump}, 
       "dump each input packet" },
     { "bitexact", OPT_EXPERT, {(void*)opt_bitexact}, "only use bit exact algorithms (for codec testing)" }, 
-
+    { "re", OPT_BOOL | OPT_EXPERT, {(void*)&rate_emu}, "read input at native frame rate", "" },
+    { "loop", OPT_BOOL | OPT_EXPERT, {(void*)&loop_input}, "loop (current only works with images)" },
 
     /* video options */
     { "b", HAS_ARG | OPT_VIDEO, {(void*)opt_video_bitrate}, "set video bitrate (in kbit/s)", "bitrate" },
     { "r", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_rate}, "set frame rate (Hz value, fraction or abbreviation)", "rate" },
-    { "re", OPT_BOOL|OPT_EXPERT | OPT_VIDEO, {(void*)&rate_emu}, "read input at native frame rate" },
     { "s", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_size}, "set frame size (WxH or abbreviation)", "size" },
     { "aspect", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_aspect_ratio}, "set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)", "aspect" },
     { "pix_fmt", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_frame_pix_fmt}, "set pixel format", "format" },
@@ -2678,10 +2687,8 @@ const OptionDef options[] = {
     { "psnr", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&do_psnr}, "calculate PSNR of compressed frames" },
     { "vstats", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&do_vstats}, "dump video coding statistics to file" }, 
     { "vhook", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)add_frame_hooker}, "insert video processing module", "module" },
-    /* Fx */
     { "aic", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_aic}, "enable Advanced intra coding (h263+)" },
     { "umv", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_umv}, "enable Unlimited Motion Vector (h263+)" },
-    /* /Fx */
 
     /* audio options */
     { "ab", HAS_ARG | OPT_AUDIO, {(void*)opt_audio_bitrate}, "set audio bitrate (in kbit/s)", "bitrate", },