aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/ffmpeg
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Input/ffmpeg')
-rw-r--r--src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp12
-rw-r--r--src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp5
2 files changed, 17 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);
diff --git a/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp b/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp
index e8af72d9d..724c69d33 100644
--- a/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp
+++ b/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp
@@ -36,6 +36,11 @@ FFmpegMetaDataModel::FFmpegMetaDataModel(const QString &path) : MetaDataModel(tr
filePath.remove("ffmpeg://");
filePath.remove(QRegularExpression("#\\d+$"));
}
+ else if(path.startsWith("m4b://"))
+ {
+ filePath.remove("m4b://");
+ filePath.remove(QRegularExpression("#\\d+$"));
+ }
#ifdef Q_OS_WIN
if (avformat_open_input(&in, filePath.toUtf8().constData(), nullptr, nullptr) < 0)