diff options
author | Charles Yates <charles.yates@pandora.be> | 2003-08-29 20:51:10 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2003-08-29 20:51:10 +0000 |
commit | d9a916e22168129efb90c22aa04449533d62d120 (patch) | |
tree | a92078984fe891701e2863793ea39f1c093d942c | |
parent | 572f992eff59313bd098a98e919183f3123b1fe1 (diff) | |
download | ffmpeg-d9a916e22168129efb90c22aa04449533d62d120.tar.gz |
stdin patch by (Charles Yates <charles dot yates at pandora dot be>)
* removes use of read_key and getchar when input is received on stdin
(this was corrupting the packet reading)
* terminates av_encode when a termination signal is received (use of
ctrl-c issued a term_exit and subsequent uses of q failed)
* specific correction to yuv4mpeg pipe reading - the defined header was
too short to allow for extended yuv4mpeg flags [as used by smil2yuv and
y4mscaler and accepted by mjpeg tools]
Originally committed as revision 2183 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | ffmpeg.c | 30 | ||||
-rw-r--r-- | libavformat/yuv4mpeg.c | 3 |
2 files changed, 23 insertions, 10 deletions
@@ -162,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 { @@ -1139,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; @@ -1160,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') @@ -1991,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; @@ -2366,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); - } + } } } diff --git a/libavformat/yuv4mpeg.c b/libavformat/yuv4mpeg.c index 83b5ff2ab1..c898436ce2 100644 --- a/libavformat/yuv4mpeg.c +++ b/libavformat/yuv4mpeg.c @@ -173,7 +173,8 @@ AVOutputFormat yuv4mpegpipe_oformat = { .flags = AVFMT_RAWPICTURE, }; -#define MAX_YUV4_HEADER 50 +/* Header size increased to allow room for optional flags */ +#define MAX_YUV4_HEADER 80 #define MAX_FRAME_HEADER 10 static int yuv4_read_header(AVFormatContext *s, AVFormatParameters *ap) |