aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-02-10 19:12:40 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-02-10 19:12:40 +0000
commit707762b07352f5fa6cf8221ae15e1c5bd738a3d9 (patch)
tree0c30d7477c87552020d464ad84deb1c6cd7c2db3 /src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
parent9fc03abe76a9a5d075760f9ed1aaaa7619576962 (diff)
downloadqmmp-707762b07352f5fa6cf8221ae15e1c5bd738a3d9.tar.gz
qmmp-707762b07352f5fa6cf8221ae15e1c5bd738a3d9.tar.bz2
qmmp-707762b07352f5fa6cf8221ae15e1c5bd738a3d9.zip
ffmpeg: fixed invalid tracks handling
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9723 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp')
-rw-r--r--src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
index b1f9228ee..bab1b9980 100644
--- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
+++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
@@ -250,6 +250,12 @@ QList<TrackInfo *> DecoderFFmpegFactory::createPlayList(const QString &path, Tra
delete info;
return parser.createPlayList(trackNumber);
}
+ else if(trackNumber > 0 && path.startsWith("ffmpeg://")) //invalid track
+ {
+ avformat_close_input(&in);
+ delete info;
+ return QList<TrackInfo*>();
+ }
AVDictionaryEntry *album = av_dict_get(in->metadata,"album",nullptr,0);
AVDictionaryEntry *album_artist = av_dict_get(in->metadata,"album_artist",nullptr,0);
@@ -303,6 +309,12 @@ QList<TrackInfo *> DecoderFFmpegFactory::createPlayList(const QString &path, Tra
delete info;
return tracks;
}
+ else if(trackNumber > 0 && path.startsWith("m4b://")) //invalid chapter
+ {
+ avformat_close_input(&in);
+ delete info;
+ return QList<TrackInfo*>();
+ }
}
avformat_close_input(&in);