aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharles Yates <charles.yates@pandora.be>2003-08-29 20:51:10 +0000
committerMichael Niedermayer <michaelni@gmx.at>2003-08-29 20:51:10 +0000
commitd9a916e22168129efb90c22aa04449533d62d120 (patch)
treea92078984fe891701e2863793ea39f1c093d942c
parent572f992eff59313bd098a98e919183f3123b1fe1 (diff)
downloadffmpeg-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.c30
-rw-r--r--libavformat/yuv4mpeg.c3
2 files changed, 23 insertions, 10 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index e62280ddda..0b6da2e62b 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -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)