From 91ed3548f106073648814975af87c3bd385d3bdd Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Thu, 21 May 2015 19:05:05 +0900 Subject: [PATCH] ASF: Enable ASF::Properties to get the audio codec information. --- taglib/asf/asffile.cpp | 89 ++++++++++++++++++++++++++++++----- taglib/asf/asffile.h | 1 + taglib/asf/asfproperties.cpp | 51 ++++++++++++++++++++ taglib/asf/asfproperties.h | 64 ++++++++++++++++++++++++- tests/data/lossless.wma | Bin 0 -> 99013 bytes tests/test_asf.cpp | 21 +++++++++ 6 files changed, 214 insertions(+), 12 deletions(-) create mode 100644 tests/data/lossless.wma diff --git a/taglib/asf/asffile.cpp b/taglib/asf/asffile.cpp index e8414ff4..179649fa 100644 --- a/taglib/asf/asffile.cpp +++ b/taglib/asf/asffile.cpp @@ -58,17 +58,18 @@ public: namespace { - static const ByteVector headerGuid("\x30\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C", 16); - static const ByteVector filePropertiesGuid("\xA1\xDC\xAB\x8C\x47\xA9\xCF\x11\x8E\xE4\x00\xC0\x0C\x20\x53\x65", 16); - static const ByteVector streamPropertiesGuid("\x91\x07\xDC\xB7\xB7\xA9\xCF\x11\x8E\xE6\x00\xC0\x0C\x20\x53\x65", 16); - static const ByteVector contentDescriptionGuid("\x33\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C", 16); - static const ByteVector extendedContentDescriptionGuid("\x40\xA4\xD0\xD2\x07\xE3\xD2\x11\x97\xF0\x00\xA0\xC9\x5E\xA8\x50", 16); - static const ByteVector headerExtensionGuid("\xb5\x03\xbf_.\xa9\xcf\x11\x8e\xe3\x00\xc0\x0c Se", 16); - static const ByteVector metadataGuid("\xEA\xCB\xF8\xC5\xAF[wH\204g\xAA\214D\xFAL\xCA", 16); - static const ByteVector metadataLibraryGuid("\224\034#D\230\224\321I\241A\x1d\x13NEpT", 16); - static const ByteVector contentEncryptionGuid("\xFB\xB3\x11\x22\x23\xBD\xD2\x11\xB4\xB7\x00\xA0\xC9\x55\xFC\x6E", 16); - static const ByteVector extendedContentEncryptionGuid("\x14\xE6\x8A\x29\x22\x26 \x17\x4C\xB9\x35\xDA\xE0\x7E\xE9\x28\x9C", 16); - static const ByteVector advancedContentEncryptionGuid("\xB6\x9B\x07\x7A\xA4\xDA\x12\x4E\xA5\xCA\x91\xD3\x8D\xC1\x1A\x8D", 16); + const ByteVector headerGuid("\x30\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C", 16); + const ByteVector filePropertiesGuid("\xA1\xDC\xAB\x8C\x47\xA9\xCF\x11\x8E\xE4\x00\xC0\x0C\x20\x53\x65", 16); + const ByteVector streamPropertiesGuid("\x91\x07\xDC\xB7\xB7\xA9\xCF\x11\x8E\xE6\x00\xC0\x0C\x20\x53\x65", 16); + const ByteVector contentDescriptionGuid("\x33\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C", 16); + const ByteVector extendedContentDescriptionGuid("\x40\xA4\xD0\xD2\x07\xE3\xD2\x11\x97\xF0\x00\xA0\xC9\x5E\xA8\x50", 16); + const ByteVector headerExtensionGuid("\xb5\x03\xbf_.\xa9\xcf\x11\x8e\xe3\x00\xc0\x0c Se", 16); + const ByteVector metadataGuid("\xEA\xCB\xF8\xC5\xAF[wH\204g\xAA\214D\xFAL\xCA", 16); + const ByteVector metadataLibraryGuid("\224\034#D\230\224\321I\241A\x1d\x13NEpT", 16); + const ByteVector codecListGuid("\x40\x52\xd1\x86\x1d\x31\xd0\x11\xa3\xa4\x00\xa0\xc9\x03\x48\xf6", 16); + const ByteVector contentEncryptionGuid("\xFB\xB3\x11\x22\x23\xBD\xD2\x11\xB4\xB7\x00\xA0\xC9\x55\xFC\x6E", 16); + const ByteVector extendedContentEncryptionGuid("\x14\xE6\x8A\x29\x22\x26 \x17\x4C\xB9\x35\xDA\xE0\x7E\xE9\x28\x9C", 16); + const ByteVector advancedContentEncryptionGuid("\xB6\x9B\x07\x7A\xA4\xDA\x12\x4E\xA5\xCA\x91\xD3\x8D\xC1\x1A\x8D", 16); } class ASF::File::BaseObject @@ -148,6 +149,13 @@ public: ByteVector render(ASF::File *file); }; +class ASF::File::CodecListObject : public ASF::File::BaseObject +{ +public: + ByteVector guid(); + void parse(ASF::File *file, uint size); +}; + ASF::File::HeaderExtensionObject::~HeaderExtensionObject() { for(unsigned int i = 0; i < objects.size(); i++) { @@ -209,6 +217,7 @@ void ASF::File::StreamPropertiesObject::parse(ASF::File *file, uint size) return; } + file->d->properties->setCodec(data.toUShort(54, false)); file->d->properties->setChannels(data.toUShort(56, false)); file->d->properties->setSampleRate(data.toUInt(58, false)); file->d->properties->setBitrate(static_cast(data.toUInt(62, false) * 8.0 / 1000.0 + 0.5)); @@ -377,6 +386,61 @@ ByteVector ASF::File::HeaderExtensionObject::render(ASF::File *file) return BaseObject::render(file); } +ByteVector ASF::File::CodecListObject::guid() +{ + return codecListGuid; +} + +void ASF::File::CodecListObject::parse(ASF::File *file, uint size) +{ + BaseObject::parse(file, size); + if(data.size() <= 20) { + debug("ASF::File::CodecListObject::parse() -- data is too short."); + return; + } + + uint pos = 16; + + const int count = data.toUInt(pos, false); + pos += 4; + + for(int i = 0; i < count; ++i) { + + if(pos >= data.size()) + break; + + const int type = data.toUShort(pos, false); + pos += 2; + + int nameLength = data.toUShort(pos, false); + pos += 2; + + const uint namePos = pos; + pos += nameLength * 2; + + const int descLength = data.toUShort(pos, false); + pos += 2; + + const uint descPos = pos; + pos += descLength * 2; + + const int infoLength = data.toUShort(pos, false); + pos += 2 + infoLength * 2; + + if(type == 2) { + // First audio codec found. + + const String name(data.mid(namePos, nameLength * 2), String::UTF16LE); + file->d->properties->setCodecName(name.stripWhiteSpace()); + + const String desc(data.mid(descPos, descLength * 2), String::UTF16LE); + file->d->properties->setCodecDescription(desc.stripWhiteSpace()); + + break; + } + } +} + //////////////////////////////////////////////////////////////////////////////// // public members //////////////////////////////////////////////////////////////////////////////// @@ -491,6 +555,9 @@ void ASF::File::read(bool /*readProperties*/, Properties::ReadStyle /*properties else if(guid == headerExtensionGuid) { obj = new HeaderExtensionObject(); } + else if(guid == codecListGuid) { + obj = new CodecListObject(); + } else { if(guid == contentEncryptionGuid || guid == extendedContentEncryptionGuid || diff --git a/taglib/asf/asffile.h b/taglib/asf/asffile.h index 94b2d076..30d49bc1 100644 --- a/taglib/asf/asffile.h +++ b/taglib/asf/asffile.h @@ -134,6 +134,7 @@ namespace TagLib { class ContentDescriptionObject; class ExtendedContentDescriptionObject; class HeaderExtensionObject; + class CodecListObject; class MetadataObject; class MetadataLibraryObject; diff --git a/taglib/asf/asfproperties.cpp b/taglib/asf/asfproperties.cpp index 1b7c6ec1..a836da30 100644 --- a/taglib/asf/asfproperties.cpp +++ b/taglib/asf/asfproperties.cpp @@ -38,6 +38,7 @@ public: sampleRate(0), channels(0), bitsPerSample(0), + codec(ASF::Properties::Unknown), encrypted(false) {} int length; @@ -45,6 +46,9 @@ public: int sampleRate; int channels; int bitsPerSample; + ASF::Properties::Codec codec; + String codecName; + String codecDescription; bool encrypted; }; @@ -98,6 +102,21 @@ int ASF::Properties::bitsPerSample() const return d->bitsPerSample; } +ASF::Properties::Codec ASF::Properties::codec() const +{ + return d->codec; +} + +String ASF::Properties::codecName() const +{ + return d->codecName; +} + +String ASF::Properties::codecDescription() const +{ + return d->codecDescription; +} + bool ASF::Properties::isEncrypted() const { return d->encrypted; @@ -137,6 +156,38 @@ void ASF::Properties::setBitsPerSample(int value) d->bitsPerSample = value; } +void ASF::Properties::setCodec(int value) +{ + switch(value) + { + case 0x0160: + d->codec = WMA1; + break; + case 0x0161: + d->codec = WMA2; + break; + case 0x0162: + d->codec = WMA9Pro; + break; + case 0x0163: + d->codec = WMA9Lossless; + break; + default: + d->codec = Unknown; + break; + } +} + +void ASF::Properties::setCodecName(const String &value) +{ + d->codecName = value; +} + +void ASF::Properties::setCodecDescription(const String &value) +{ + d->codecDescription = value; +} + void ASF::Properties::setEncrypted(bool value) { d->encrypted = value; diff --git a/taglib/asf/asfproperties.h b/taglib/asf/asfproperties.h index 5275aa1a..b89349b3 100644 --- a/taglib/asf/asfproperties.h +++ b/taglib/asf/asfproperties.h @@ -40,7 +40,38 @@ namespace TagLib { public: /*! - * Create an instance of ASF::Properties. + * Audio codec types can be used in ASF file. + */ + enum Codec + { + /*! + * Couldn't detect the codec. + */ + Unknown = 0, + + /*! + * Windows Media Audio 1 + */ + WMA1, + + /*! + * Windows Media Audio 2 or above + */ + WMA2, + + /*! + * Windows Media Audio 9 Professional + */ + WMA9Pro, + + /*! + * Windows Media Audio 9 Lossless + */ + WMA9Lossless, + }; + + /*! + * Creates an instance of ASF::Properties. */ Properties(); @@ -85,6 +116,7 @@ namespace TagLib { * Returns the sample rate in Hz. */ virtual int sampleRate() const; + /*! * Returns the number of audio channels. */ @@ -95,6 +127,33 @@ namespace TagLib { */ int bitsPerSample() const; + /*! + * Returns the codec used in the file. + * + * \see codecName() + * \see codecDescription() + */ + Codec codec() const; + + /*! + * Returns the concrete codec name, for example "Windows Media Audio 9.1" + * used in the file if available, otherwise an empty string. + * + * \see codec() + * \see codecDescription() + */ + String codecName() const; + + /*! + * Returns the codec description, typically contains the encoder settings, + * for example "VBR Quality 50, 44kHz, stereo 1-pass VBR" if available, + * otherwise an empty string. + * + * \see codec() + * \see codecName() + */ + String codecDescription() const; + /*! * Returns whether or not the file is encrypted. */ @@ -109,6 +168,9 @@ namespace TagLib { void setSampleRate(int value); void setChannels(int value); void setBitsPerSample(int value); + void setCodec(int value); + void setCodecName(const String &value); + void setCodecDescription(const String &value); void setEncrypted(bool value); #endif diff --git a/tests/data/lossless.wma b/tests/data/lossless.wma new file mode 100644 index 0000000000000000000000000000000000000000..e29befcc837ba603af32e9cb54ff523092138d37 GIT binary patch literal 99013 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

QZ{TtP5pu~X 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 literal 0 HcmV?d00001 diff --git a/tests/test_asf.cpp b/tests/test_asf.cpp index 82df4d1d..663ae583 100644 --- a/tests/test_asf.cpp +++ b/tests/test_asf.cpp @@ -15,6 +15,7 @@ class TestASF : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(TestASF); CPPUNIT_TEST(testAudioProperties); + CPPUNIT_TEST(testLosslessProperties); CPPUNIT_TEST(testRead); CPPUNIT_TEST(testSaveMultipleValues); CPPUNIT_TEST(testSaveStream); @@ -39,6 +40,26 @@ public: CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); CPPUNIT_ASSERT_EQUAL(48000, f.audioProperties()->sampleRate()); CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); + CPPUNIT_ASSERT_EQUAL(ASF::Properties::WMA2, f.audioProperties()->codec()); + CPPUNIT_ASSERT_EQUAL(String("Windows Media Audio 9.1"), f.audioProperties()->codecName()); + CPPUNIT_ASSERT_EQUAL(String("64 kbps, 48 kHz, stereo 2-pass CBR"), f.audioProperties()->codecDescription()); + CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isEncrypted()); + } + + void testLosslessProperties() + { + ASF::File f(TEST_FILE_PATH_C("lossless.wma")); + CPPUNIT_ASSERT(f.audioProperties()); + CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->length()); + CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); + CPPUNIT_ASSERT_EQUAL(3549, f.audioProperties()->lengthInMilliseconds()); + CPPUNIT_ASSERT_EQUAL(1152, f.audioProperties()->bitrate()); + CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); + CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); + CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); + CPPUNIT_ASSERT_EQUAL(ASF::Properties::WMA9Lossless, f.audioProperties()->codec()); + CPPUNIT_ASSERT_EQUAL(String("Windows Media Audio 9.2 Lossless"), f.audioProperties()->codecName()); + CPPUNIT_ASSERT_EQUAL(String("VBR Quality 100, 44 kHz, 2 channel 16 bit 1-pass VBR"), f.audioProperties()->codecDescription()); CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isEncrypted()); }