diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-08-31 14:31:08 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-08-31 14:31:08 +0100 |
| commit | 6c334975aaf31f87dd0283f391671df441022751 (patch) | |
| tree | 0c556e9e377d0657554ebc65e151abaae0d187c8 /src | |
| parent | 695c407ce0f469fb462db3de9d715d86a1ae6af5 (diff) | |
Bail early from subtitle finding if there are no subtitle streams.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/ffmpeg_examiner.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/lib/ffmpeg_examiner.cc b/src/lib/ffmpeg_examiner.cc index 78d97d21e..6ed7b06fe 100644 --- a/src/lib/ffmpeg_examiner.cc +++ b/src/lib/ffmpeg_examiner.cc @@ -92,6 +92,7 @@ FFmpegExaminer::FFmpegExaminer (shared_ptr<const FFmpegContent> c, shared_ptr<Jo * where we should look for subtitles (video and audio are always present, * so they are ok). */ + while (true) { int r = av_read_frame (_format_context, &_packet); if (r < 0) { @@ -108,10 +109,15 @@ FFmpegExaminer::FFmpegExaminer (shared_ptr<const FFmpegContent> c, shared_ptr<Jo video_packet (context); } + bool got_all_audio = true; + for (size_t i = 0; i < _audio_streams.size(); ++i) { if (_audio_streams[i]->uses_index (_format_context, _packet.stream_index)) { audio_packet (context, _audio_streams[i]); } + if (!_audio_streams[i]->first_audio) { + got_all_audio = false; + } } for (size_t i = 0; i < _subtitle_streams.size(); ++i) { @@ -121,6 +127,11 @@ FFmpegExaminer::FFmpegExaminer (shared_ptr<const FFmpegContent> c, shared_ptr<Jo } av_free_packet (&_packet); + + if (_first_video && got_all_audio && _subtitle_streams.empty ()) { + /* All done */ + break; + } } } |
