Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPanagiotis H.M. Issaris <takis@issaris.org>2011-03-10 18:07:52 +0300
committerMans Rullgard <mans@mansr.com>2011-03-21 00:13:26 +0300
commitcb48e245e6e770f146220fac0a8bd4dc1a5e006c (patch)
treead4c6e8f7c4331a6ab1f894f32b7713653a4c3aa
parente87a6f0dc99c2266e68ef66afaf83462d353964c (diff)
Do no modify terminal parameters using termios.h
Remove usage of tcgetattr and tcsetattr to modify terminal parameters, and rely on ctrl-c to stop instead of pressing 'q'. On systems with conio.h, keep the old behavior. Changing the terminal settings causes problems if multiple instances are running asynchronously on the same terminal, such as during a parallel FATE run, or if the process crashes before restoring the terminal. In both cases, the terminal state is messed up requiring a manual reset. Signed-off-by: Mans Rullgard <mans@mansr.com>
-rwxr-xr-xconfigure2
-rw-r--r--ffmpeg.c60
2 files changed, 6 insertions, 56 deletions
diff --git a/configure b/configure
index 99c67c36ab..4fd71cd8f6 100755
--- a/configure
+++ b/configure
@@ -1114,7 +1114,6 @@ HAVE_LIST="
sys_soundcard_h
sys_videoio_h
ten_operands
- termios_h
threads
truncf
vfp_args
@@ -2791,7 +2790,6 @@ check_header poll.h
check_header sys/mman.h
check_header sys/resource.h
check_header sys/select.h
-check_header termios.h
check_header vdpau/vdpau.h
check_header vdpau/vdpau_x11.h
check_header X11/extensions/XvMClib.h
diff --git a/ffmpeg.c b/ffmpeg.c
index 02bc193668..645fdb6db8 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -69,12 +69,7 @@
#include <sys/select.h>
#endif
-#if HAVE_TERMIOS_H
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <termios.h>
-#elif HAVE_CONIO_H
+#if HAVE_CONIO_H
#include <conio.h>
#endif
#include <time.h>
@@ -340,12 +335,6 @@ typedef struct AVInputFile {
int nb_streams; /* nb streams we are aware of */
} AVInputFile;
-#if HAVE_TERMIOS_H
-
-/* init terminal so that we can grab keys */
-static struct termios oldtty;
-#endif
-
#if CONFIG_AVFILTER
static int configure_filters(AVInputStream *ist, AVOutputStream *ost)
@@ -423,9 +412,6 @@ static int configure_filters(AVInputStream *ist, AVOutputStream *ost)
static void term_exit(void)
{
av_log(NULL, AV_LOG_QUIET, "");
-#if HAVE_TERMIOS_H
- tcsetattr (0, TCSANOW, &oldtty);
-#endif
}
static volatile int received_sigterm = 0;
@@ -439,26 +425,6 @@ sigterm_handler(int sig)
static void term_init(void)
{
-#if HAVE_TERMIOS_H
- struct termios tty;
-
- tcgetattr (0, &tty);
- oldtty = tty;
- atexit(term_exit);
-
- tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
- |INLCR|IGNCR|ICRNL|IXON);
- tty.c_oflag |= OPOST;
- tty.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN);
- tty.c_cflag &= ~(CSIZE|PARENB);
- tty.c_cflag |= CS8;
- tty.c_cc[VMIN] = 1;
- tty.c_cc[VTIME] = 0;
-
- tcsetattr (0, TCSANOW, &tty);
- signal(SIGQUIT, sigterm_handler); /* Quit (POSIX). */
-#endif
-
signal(SIGINT , sigterm_handler); /* Interrupt (ANSI). */
signal(SIGTERM, sigterm_handler); /* Termination (ANSI). */
#ifdef SIGXCPU
@@ -469,25 +435,7 @@ static void term_init(void)
/* read a key without blocking */
static int read_key(void)
{
-#if HAVE_TERMIOS_H
- int n = 1;
- unsigned char ch;
- struct timeval tv;
- fd_set rfds;
-
- FD_ZERO(&rfds);
- FD_SET(0, &rfds);
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- n = select(1, &rfds, NULL, NULL, &tv);
- if (n > 0) {
- n = read(0, &ch, 1);
- if (n == 1)
- return ch;
-
- return n;
- }
-#elif HAVE_CONIO_H
+#if HAVE_CONIO_H
if(kbhit())
return(getch());
#endif
@@ -2489,7 +2437,11 @@ static int transcode(AVFormatContext **output_files,
}
if (!using_stdin && verbose >= 0) {
+#if HAVE_CONIO_H
fprintf(stderr, "Press [q] to stop encoding\n");
+#else
+ fprintf(stderr, "Press ctrl-c to stop encoding\n");
+#endif
url_set_interrupt_cb(decode_interrupt_cb);
}
term_init();