diff --git a/mpeg/mpegfile.cpp b/mpeg/mpegfile.cpp index 96a4af0c..bfb56e12 100644 --- a/mpeg/mpegfile.cpp +++ b/mpeg/mpegfile.cpp @@ -167,8 +167,8 @@ namespace TagLib { class MPEG::File::FilePrivate { public: - FilePrivate() : - ID3v2FrameFactory(ID3v2::FrameFactory::instance()), + FilePrivate(ID3v2::FrameFactory *frameFactory = ID3v2::FrameFactory::instance()) : + ID3v2FrameFactory(frameFactory), ID3v2Tag(0), ID3v2Location(-1), ID3v2OriginalSize(0), @@ -219,6 +219,17 @@ MPEG::File::File(const char *file, bool readProperties, } } +MPEG::File::File(const char *file, ID3v2::FrameFactory *frameFactory, + bool readProperties, Properties::ReadStyle propertiesStyle) : + TagLib::File(file) +{ + d = new FilePrivate(frameFactory); + if(isOpen()) { + d->tag = new MPEGTag(this); + read(readProperties, propertiesStyle); + } +} + MPEG::File::~File() { delete d; diff --git a/mpeg/mpegfile.h b/mpeg/mpegfile.h index f76fd693..ff0ddbc6 100644 --- a/mpeg/mpegfile.h +++ b/mpeg/mpegfile.h @@ -69,6 +69,17 @@ namespace TagLib { File(const char *file, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); + /*! + * Contructs an MPEG file from \a file. If \a readProperties is true the + * file's audio properties will also be read using \a propertiesStyle. If + * false, \a propertiesStyle is ignored. The frames will be created using + * \a frameFactory. + */ + // BIC: merge with the above constructor + File(const char *file, ID3v2::FrameFactory *frameFactory, + bool readProperties = true, + Properties::ReadStyle propertiesStyle = Properties::Average); + /*! * Destroys this instance of the File. */