aboutsummaryrefslogtreecommitdiffstats
path: root/avconv.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2015-05-06 13:55:38 +0200
committerAnton Khirnov <anton@khirnov.net>2015-06-27 16:45:41 +0200
commit9a5e4fbec870c7d466b7a0aec92c70778efc96b5 (patch)
tree737e30bdaedd25475baf50e19b31fb058f405f39 /avconv.c
parentb114f6d48a06a4dad6882bc83e07463905f004c4 (diff)
downloadffmpeg-9a5e4fbec870c7d466b7a0aec92c70778efc96b5.tar.gz
avconv: do not stop processing the input packet on decoding error
We still want to flush the filters on EOF and possibly apply streamcopy.
Diffstat (limited to 'avconv.c')
-rw-r--r--avconv.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/avconv.c b/avconv.c
index 4aa40a802a..5efa80d055 100644
--- a/avconv.c
+++ b/avconv.c
@@ -1358,7 +1358,7 @@ static int send_filter_eof(InputStream *ist)
}
/* pkt = NULL means EOF (needed to flush decoder buffers) */
-static int process_input_packet(InputStream *ist, const AVPacket *pkt)
+static void process_input_packet(InputStream *ist, const AVPacket *pkt)
{
int i;
int got_output;
@@ -1415,11 +1415,17 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt)
ret = transcode_subtitles(ist, &avpkt, &got_output);
break;
default:
- return -1;
+ return;
+ }
+
+ if (ret < 0) {
+ av_log(NULL, AV_LOG_ERROR, "Error while decoding stream #%d:%d\n",
+ ist->file_index, ist->st->index);
+ if (exit_on_error)
+ exit_program(1);
+ break;
}
- if (ret < 0)
- return ret;
// touch data and size only if not EOF
if (pkt) {
avpkt.data += ret;
@@ -1466,7 +1472,7 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt)
do_streamcopy(ist, ost, pkt);
}
- return 0;
+ return;
}
static void print_sdp(void)
@@ -2481,13 +2487,7 @@ static int process_input(void)
}
}
- ret = process_input_packet(ist, &pkt);
- if (ret < 0) {
- av_log(NULL, AV_LOG_ERROR, "Error while decoding stream #%d:%d\n",
- ist->file_index, ist->st->index);
- if (exit_on_error)
- exit_program(1);
- }
+ process_input_packet(ist, &pkt);
discard_packet:
av_free_packet(&pkt);