summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2015-11-19 22:54:45 +0100
committerClément Bœsch <clement@stupeflix.com>2015-12-04 15:47:06 +0100
commit7234e04e358bc2afc7569954c8a690c3a713f002 (patch)
tree7870ef2633ba763456f686751b53416adf449e43
parent60532348d2544a6e32e84a2954b14170208d642d (diff)
ffmpeg: enable echoing with command and debug modes
Allow seeing text when pressing 'c' or 'd'.
-rw-r--r--ffmpeg.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 9ed40e55c8..82d9a6cbf1 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -3395,6 +3395,18 @@ static OutputStream *choose_output(void)
return ost_min;
}
+static void set_tty_echo(int on)
+{
+#if HAVE_TERMIOS_H
+ struct termios tty;
+ if (tcgetattr(0, &tty) == 0) {
+ if (on) tty.c_lflag |= ECHO;
+ else tty.c_lflag &= ~ECHO;
+ tcsetattr(0, TCSANOW, &tty);
+ }
+#endif
+}
+
static int check_keyboard_interaction(int64_t cur_time)
{
int i, ret, key;
@@ -3427,10 +3439,13 @@ static int check_keyboard_interaction(int64_t cur_time)
int k, n = 0;
fprintf(stderr, "\nEnter command: <target>|all <time>|-1 <command>[ <argument>]\n");
i = 0;
+ set_tty_echo(1);
while ((k = read_key()) != '\n' && k != '\r' && i < sizeof(buf)-1)
if (k > 0)
buf[i++] = k;
buf[i] = 0;
+ set_tty_echo(0);
+ fprintf(stderr, "\n");
if (k > 0 &&
(n = sscanf(buf, "%63[^ ] %lf %255[^ ] %255[^\n]", target, &time, command, arg)) >= 3) {
av_log(NULL, AV_LOG_DEBUG, "Processing command target:%s time:%f command:%s arg:%s",
@@ -3469,10 +3484,13 @@ static int check_keyboard_interaction(int64_t cur_time)
char buf[32];
int k = 0;
i = 0;
+ set_tty_echo(1);
while ((k = read_key()) != '\n' && k != '\r' && i < sizeof(buf)-1)
if (k > 0)
buf[i++] = k;
buf[i] = 0;
+ set_tty_echo(0);
+ fprintf(stderr, "\n");
if (k <= 0 || sscanf(buf, "%d", &debug)!=1)
fprintf(stderr,"error parsing debug value\n");
}