diff options
author | tommycli@chromium.org <tommycli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-08 02:16:38 +0000 |
---|---|---|
committer | tommycli@chromium.org <tommycli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-08 02:16:38 +0000 |
commit | 6c49c27b7b34f6e03aed1e5ef1163a4b11e404e1 (patch) | |
tree | 48ce283ddde661edda8eaa6feff1b3d1ee20ef31 /media/base/audio_video_metadata_extractor_unittest.cc | |
parent | a7af82ac5dc57673d20d39075cc0ad2790b7112e (diff) | |
download | chromium_src-6c49c27b7b34f6e03aed1e5ef1163a4b11e404e1.zip chromium_src-6c49c27b7b34f6e03aed1e5ef1163a4b11e404e1.tar.gz chromium_src-6c49c27b7b34f6e03aed1e5ef1163a4b11e404e1.tar.bz2 |
Media Galleries API Metadata: Add audio video metadata extractor.
This CL adds a class for extraction of audio and video metadata using ffmpeg.
This is needed to implement the Media Galleries Metadata API for Chrome extensions.
BUG=318450
Review URL: https://codereview.chromium.org/121383002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243470 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/audio_video_metadata_extractor_unittest.cc')
-rw-r--r-- | media/base/audio_video_metadata_extractor_unittest.cc | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/media/base/audio_video_metadata_extractor_unittest.cc b/media/base/audio_video_metadata_extractor_unittest.cc new file mode 100644 index 0000000..c55cd5d --- /dev/null +++ b/media/base/audio_video_metadata_extractor_unittest.cc @@ -0,0 +1,78 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/logging.h" +#include "base/memory/scoped_ptr.h" +#include "build/build_config.h" +#include "media/base/audio_video_metadata_extractor.h" +#include "media/base/test_data_util.h" +#include "media/filters/file_data_source.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace media { + +scoped_ptr<AudioVideoMetadataExtractor> GetExtractor( + const std::string& filename, + bool expected_result, + double expected_duration, + int expected_width, + int expected_height) { + FileDataSource source; + EXPECT_TRUE(source.Initialize(GetTestDataFilePath(filename))); + + scoped_ptr<AudioVideoMetadataExtractor> extractor( + new AudioVideoMetadataExtractor); + bool extracted = extractor->Extract(&source); + EXPECT_EQ(expected_result, extracted); + + if (!extracted) + return extractor.Pass(); + + EXPECT_EQ(expected_duration, extractor->duration()); + + EXPECT_EQ(expected_width, extractor->width()); + EXPECT_EQ(expected_height, extractor->height()); + + return extractor.Pass(); +} + +TEST(AudioVideoMetadataExtractorTest, InvalidFile) { + GetExtractor("ten_byte_file", false, 0, -1, -1); +} + +TEST(AudioVideoMetadataExtractorTest, AudioOGG) { + scoped_ptr<AudioVideoMetadataExtractor> extractor = + GetExtractor("9ch.ogg", true, 0, -1, -1); + EXPECT_EQ("Processed by SoX", extractor->comment()); +} + +TEST(AudioVideoMetadataExtractorTest, AudioWAV) { + scoped_ptr<AudioVideoMetadataExtractor> extractor = + GetExtractor("sfx_u8.wav", true, 0, -1, -1); + EXPECT_EQ("Lavf54.37.100", extractor->encoder()); + EXPECT_EQ("Amadeus Pro", extractor->encoded_by()); +} + +TEST(AudioVideoMetadataExtractorTest, VideoWebM) { + scoped_ptr<AudioVideoMetadataExtractor> extractor = + GetExtractor("bear-320x240-multitrack.webm", true, 2, 320, 240); + EXPECT_EQ("Lavf53.9.0", extractor->encoder()); +} + +#if defined(USE_PROPRIETARY_CODECS) +TEST(AudioVideoMetadataExtractorTest, AudioMP3) { + scoped_ptr<AudioVideoMetadataExtractor> extractor = + GetExtractor("id3_png_test.mp3", true, 1, -1, -1); + + EXPECT_EQ("Airbag", extractor->title()); + EXPECT_EQ("Radiohead", extractor->artist()); + EXPECT_EQ("OK Computer", extractor->album()); + EXPECT_EQ(1, extractor->track()); + EXPECT_EQ("Alternative", extractor->genre()); + EXPECT_EQ("1997", extractor->date()); + EXPECT_EQ("Lavf54.4.100", extractor->encoder()); +} +#endif + +} // namespace media |