diff options
author | Anton Khirnov <anton@khirnov.net> | 2023-04-26 14:13:58 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2023-05-08 10:38:59 +0200 |
commit | 2d43c23b812ade93b60f5025dd18bf55dbea5e3d (patch) | |
tree | 8a893d66d308c6b12c8bfeffb644c92fba71983e | |
parent | a0174a235b08f1bc26c7aee25b385d2dd997f8db (diff) | |
download | ffmpeg-2d43c23b812ade93b60f5025dd18bf55dbea5e3d.tar.gz |
fftools/ffmpeg: discard packets for unused streams in demuxing thread
Avoids the pointless overhead of transferring them to the main thread.
-rw-r--r-- | fftools/ffmpeg.c | 4 | ||||
-rw-r--r-- | fftools/ffmpeg_demux.c | 3 |
2 files changed, 2 insertions, 5 deletions
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 1077806121..5cf6a00f50 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -1961,9 +1961,6 @@ static int process_input(int file_index) ist->data_size += pkt->size; ist->nb_packets++; - if (ist->discard) - goto discard_packet; - /* add the stream-global side data to the first packet */ if (ist->nb_packets == 1) { for (i = 0; i < ist->st->nb_side_data; i++) { @@ -2002,7 +1999,6 @@ static int process_input(int file_index) process_input_packet(ist, pkt, 0); -discard_packet: av_packet_free(&pkt); return 0; diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index a0ef68a8a3..630bb1c26b 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -318,7 +318,8 @@ static void *input_thread(void *arg) /* the following test is needed in case new streams appear dynamically in stream : we ignore them */ - if (pkt->stream_index >= f->nb_streams) { + if (pkt->stream_index >= f->nb_streams || + f->streams[pkt->stream_index]->discard) { report_new_stream(d, pkt); av_packet_unref(pkt); continue; |