Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1595)

Side by Side Diff: media/base/audio_video_metadata_extractor_unittest.cc

Issue 270873003: Media: Add thumbnail extraction to AudioVideoMetadataExtractor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/base/audio_video_metadata_extractor.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/logging.h" 5 #include "base/logging.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "base/sha1.h"
7 #include "build/build_config.h" 8 #include "build/build_config.h"
8 #include "media/base/audio_video_metadata_extractor.h" 9 #include "media/base/audio_video_metadata_extractor.h"
9 #include "media/base/test_data_util.h" 10 #include "media/base/test_data_util.h"
10 #include "media/filters/file_data_source.h" 11 #include "media/filters/file_data_source.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 13
13 namespace media { 14 namespace media {
14 15
15 scoped_ptr<AudioVideoMetadataExtractor> GetExtractor( 16 scoped_ptr<AudioVideoMetadataExtractor> GetExtractor(
16 const std::string& filename, 17 const std::string& filename,
18 bool extract_attached_images,
17 bool expected_result, 19 bool expected_result,
18 double expected_duration, 20 double expected_duration,
19 int expected_width, 21 int expected_width,
20 int expected_height) { 22 int expected_height) {
21 FileDataSource source; 23 FileDataSource source;
22 EXPECT_TRUE(source.Initialize(GetTestDataFilePath(filename))); 24 EXPECT_TRUE(source.Initialize(GetTestDataFilePath(filename)));
23 25
24 scoped_ptr<AudioVideoMetadataExtractor> extractor( 26 scoped_ptr<AudioVideoMetadataExtractor> extractor(
25 new AudioVideoMetadataExtractor); 27 new AudioVideoMetadataExtractor);
26 bool extracted = extractor->Extract(&source); 28 bool extracted = extractor->Extract(&source, extract_attached_images);
27 EXPECT_EQ(expected_result, extracted); 29 EXPECT_EQ(expected_result, extracted);
28 30
29 if (!extracted) 31 if (!extracted)
30 return extractor.Pass(); 32 return extractor.Pass();
31 33
32 EXPECT_EQ(expected_duration, extractor->duration()); 34 EXPECT_EQ(expected_duration, extractor->duration());
33 35
34 EXPECT_EQ(expected_width, extractor->width()); 36 EXPECT_EQ(expected_width, extractor->width());
35 EXPECT_EQ(expected_height, extractor->height()); 37 EXPECT_EQ(expected_height, extractor->height());
36 38
37 return extractor.Pass(); 39 return extractor.Pass();
38 } 40 }
39 41
40 TEST(AudioVideoMetadataExtractorTest, InvalidFile) { 42 TEST(AudioVideoMetadataExtractorTest, InvalidFile) {
41 GetExtractor("ten_byte_file", false, 0, -1, -1); 43 GetExtractor("ten_byte_file", true, false, 0, -1, -1);
42 } 44 }
43 45
44 TEST(AudioVideoMetadataExtractorTest, AudioOGG) { 46 TEST(AudioVideoMetadataExtractorTest, AudioOGG) {
45 scoped_ptr<AudioVideoMetadataExtractor> extractor = 47 scoped_ptr<AudioVideoMetadataExtractor> extractor =
46 GetExtractor("9ch.ogg", true, 0, -1, -1); 48 GetExtractor("9ch.ogg", true, true, 0, -1, -1);
47 EXPECT_EQ("Processed by SoX", extractor->comment()); 49 EXPECT_EQ("Processed by SoX", extractor->comment());
48 50
49 EXPECT_EQ("ogg", extractor->stream_infos()[0].type); 51 EXPECT_EQ("ogg", extractor->stream_infos()[0].type);
50 EXPECT_EQ(2u, extractor->stream_infos().size()); 52 EXPECT_EQ(2u, extractor->stream_infos().size());
51 53
52 EXPECT_EQ(0u, extractor->stream_infos()[0].tags.size()); 54 EXPECT_EQ(0u, extractor->stream_infos()[0].tags.size());
53 55
54 EXPECT_EQ(1u, extractor->stream_infos()[1].tags.size()); 56 EXPECT_EQ(1u, extractor->stream_infos()[1].tags.size());
55 EXPECT_EQ("vorbis", extractor->stream_infos()[1].type); 57 EXPECT_EQ("vorbis", extractor->stream_infos()[1].type);
56 EXPECT_EQ("Processed by SoX", 58 EXPECT_EQ("Processed by SoX",
57 extractor->stream_infos()[1].tags.find("COMMENT")->second); 59 extractor->stream_infos()[1].tags.find("COMMENT")->second);
60
61 EXPECT_EQ(0u, extractor->attached_images_bytes().size());
58 } 62 }
59 63
60 TEST(AudioVideoMetadataExtractorTest, AudioWAV) { 64 TEST(AudioVideoMetadataExtractorTest, AudioWAV) {
61 scoped_ptr<AudioVideoMetadataExtractor> extractor = 65 scoped_ptr<AudioVideoMetadataExtractor> extractor =
62 GetExtractor("sfx_u8.wav", true, 0, -1, -1); 66 GetExtractor("sfx_u8.wav", true, true, 0, -1, -1);
63 EXPECT_EQ("Lavf54.37.100", extractor->encoder()); 67 EXPECT_EQ("Lavf54.37.100", extractor->encoder());
64 EXPECT_EQ("Amadeus Pro", extractor->encoded_by()); 68 EXPECT_EQ("Amadeus Pro", extractor->encoded_by());
65 69
66 EXPECT_EQ("wav", extractor->stream_infos()[0].type); 70 EXPECT_EQ("wav", extractor->stream_infos()[0].type);
67 EXPECT_EQ(2u, extractor->stream_infos().size()); 71 EXPECT_EQ(2u, extractor->stream_infos().size());
68 72
69 EXPECT_EQ(2u, extractor->stream_infos()[0].tags.size()); 73 EXPECT_EQ(2u, extractor->stream_infos()[0].tags.size());
70 EXPECT_EQ("Lavf54.37.100", 74 EXPECT_EQ("Lavf54.37.100",
71 extractor->stream_infos()[0].tags.find("encoder")->second); 75 extractor->stream_infos()[0].tags.find("encoder")->second);
72 EXPECT_EQ("Amadeus Pro", 76 EXPECT_EQ("Amadeus Pro",
73 extractor->stream_infos()[0].tags.find("encoded_by")->second); 77 extractor->stream_infos()[0].tags.find("encoded_by")->second);
74 78
75 EXPECT_EQ("pcm_u8", extractor->stream_infos()[1].type); 79 EXPECT_EQ("pcm_u8", extractor->stream_infos()[1].type);
76 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size()); 80 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size());
81
82 EXPECT_EQ(0u, extractor->attached_images_bytes().size());
77 } 83 }
78 84
79 TEST(AudioVideoMetadataExtractorTest, VideoWebM) { 85 TEST(AudioVideoMetadataExtractorTest, VideoWebM) {
80 scoped_ptr<AudioVideoMetadataExtractor> extractor = 86 scoped_ptr<AudioVideoMetadataExtractor> extractor =
81 GetExtractor("bear-320x240-multitrack.webm", true, 2, 320, 240); 87 GetExtractor("bear-320x240-multitrack.webm", true, true, 2, 320, 240);
82 EXPECT_EQ("Lavf53.9.0", extractor->encoder()); 88 EXPECT_EQ("Lavf53.9.0", extractor->encoder());
83 89
84 EXPECT_EQ(6u, extractor->stream_infos().size()); 90 EXPECT_EQ(6u, extractor->stream_infos().size());
85 91
86 EXPECT_EQ("matroska,webm", extractor->stream_infos()[0].type); 92 EXPECT_EQ("matroska,webm", extractor->stream_infos()[0].type);
87 EXPECT_EQ(1u, extractor->stream_infos()[0].tags.size()); 93 EXPECT_EQ(1u, extractor->stream_infos()[0].tags.size());
88 EXPECT_EQ("Lavf53.9.0", 94 EXPECT_EQ("Lavf53.9.0",
89 extractor->stream_infos()[0].tags.find("ENCODER")->second); 95 extractor->stream_infos()[0].tags.find("ENCODER")->second);
90 96
91 EXPECT_EQ("vp8", extractor->stream_infos()[1].type); 97 EXPECT_EQ("vp8", extractor->stream_infos()[1].type);
92 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size()); 98 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size());
93 99
94 EXPECT_EQ("vorbis", extractor->stream_infos()[2].type); 100 EXPECT_EQ("vorbis", extractor->stream_infos()[2].type);
95 EXPECT_EQ(0u, extractor->stream_infos()[2].tags.size()); 101 EXPECT_EQ(0u, extractor->stream_infos()[2].tags.size());
96 102
97 EXPECT_EQ("subrip", extractor->stream_infos()[3].type); 103 EXPECT_EQ("subrip", extractor->stream_infos()[3].type);
98 EXPECT_EQ(0u, extractor->stream_infos()[3].tags.size()); 104 EXPECT_EQ(0u, extractor->stream_infos()[3].tags.size());
99 105
100 EXPECT_EQ("theora", extractor->stream_infos()[4].type); 106 EXPECT_EQ("theora", extractor->stream_infos()[4].type);
101 EXPECT_EQ(0u, extractor->stream_infos()[4].tags.size()); 107 EXPECT_EQ(0u, extractor->stream_infos()[4].tags.size());
102 108
103 EXPECT_EQ("pcm_s16le", extractor->stream_infos()[5].type); 109 EXPECT_EQ("pcm_s16le", extractor->stream_infos()[5].type);
104 EXPECT_EQ(1u, extractor->stream_infos()[5].tags.size()); 110 EXPECT_EQ(1u, extractor->stream_infos()[5].tags.size());
105 EXPECT_EQ("Lavc52.32.0", 111 EXPECT_EQ("Lavc52.32.0",
106 extractor->stream_infos()[5].tags.find("ENCODER")->second); 112 extractor->stream_infos()[5].tags.find("ENCODER")->second);
113
114 EXPECT_EQ(0u, extractor->attached_images_bytes().size());
107 } 115 }
108 116
109 #if defined(USE_PROPRIETARY_CODECS) 117 #if defined(USE_PROPRIETARY_CODECS)
110 TEST(AudioVideoMetadataExtractorTest, AndroidRotatedMP4Video) { 118 TEST(AudioVideoMetadataExtractorTest, AndroidRotatedMP4Video) {
111 scoped_ptr<AudioVideoMetadataExtractor> extractor = 119 scoped_ptr<AudioVideoMetadataExtractor> extractor =
112 GetExtractor("90rotation.mp4", true, 0, 1920, 1080); 120 GetExtractor("90rotation.mp4", true, true, 0, 1920, 1080);
113 121
114 EXPECT_EQ(90, extractor->rotation()); 122 EXPECT_EQ(90, extractor->rotation());
115 123
116 EXPECT_EQ(3u, extractor->stream_infos().size()); 124 EXPECT_EQ(3u, extractor->stream_infos().size());
117 125
118 EXPECT_EQ("mov,mp4,m4a,3gp,3g2,mj2", extractor->stream_infos()[0].type); 126 EXPECT_EQ("mov,mp4,m4a,3gp,3g2,mj2", extractor->stream_infos()[0].type);
119 EXPECT_EQ(4u, extractor->stream_infos()[0].tags.size()); 127 EXPECT_EQ(4u, extractor->stream_infos()[0].tags.size());
120 EXPECT_EQ( 128 EXPECT_EQ(
121 "isom3gp4", 129 "isom3gp4",
122 extractor->stream_infos()[0].tags.find("compatible_brands")->second); 130 extractor->stream_infos()[0].tags.find("compatible_brands")->second);
(...skipping 14 matching lines...) Expand all
137 EXPECT_EQ("eng", extractor->stream_infos()[1].tags.find("language")->second); 145 EXPECT_EQ("eng", extractor->stream_infos()[1].tags.find("language")->second);
138 EXPECT_EQ("90", extractor->stream_infos()[1].tags.find("rotate")->second); 146 EXPECT_EQ("90", extractor->stream_infos()[1].tags.find("rotate")->second);
139 147
140 EXPECT_EQ("aac", extractor->stream_infos()[2].type); 148 EXPECT_EQ("aac", extractor->stream_infos()[2].type);
141 EXPECT_EQ(3u, extractor->stream_infos()[2].tags.size()); 149 EXPECT_EQ(3u, extractor->stream_infos()[2].tags.size());
142 EXPECT_EQ("2014-02-11 00:39:25", 150 EXPECT_EQ("2014-02-11 00:39:25",
143 extractor->stream_infos()[2].tags.find("creation_time")->second); 151 extractor->stream_infos()[2].tags.find("creation_time")->second);
144 EXPECT_EQ("SoundHandle", 152 EXPECT_EQ("SoundHandle",
145 extractor->stream_infos()[2].tags.find("handler_name")->second); 153 extractor->stream_infos()[2].tags.find("handler_name")->second);
146 EXPECT_EQ("eng", extractor->stream_infos()[2].tags.find("language")->second); 154 EXPECT_EQ("eng", extractor->stream_infos()[2].tags.find("language")->second);
155
156 EXPECT_EQ(0u, extractor->attached_images_bytes().size());
147 } 157 }
148 158
149 TEST(AudioVideoMetadataExtractorTest, AudioMP3) { 159 TEST(AudioVideoMetadataExtractorTest, AudioMP3) {
150 scoped_ptr<AudioVideoMetadataExtractor> extractor = 160 scoped_ptr<AudioVideoMetadataExtractor> extractor =
151 GetExtractor("id3_png_test.mp3", true, 1, -1, -1); 161 GetExtractor("id3_png_test.mp3", true, true, 1, -1, -1);
152 162
153 EXPECT_EQ("Airbag", extractor->title()); 163 EXPECT_EQ("Airbag", extractor->title());
154 EXPECT_EQ("Radiohead", extractor->artist()); 164 EXPECT_EQ("Radiohead", extractor->artist());
155 EXPECT_EQ("OK Computer", extractor->album()); 165 EXPECT_EQ("OK Computer", extractor->album());
156 EXPECT_EQ(1, extractor->track()); 166 EXPECT_EQ(1, extractor->track());
157 EXPECT_EQ("Alternative", extractor->genre()); 167 EXPECT_EQ("Alternative", extractor->genre());
158 EXPECT_EQ("1997", extractor->date()); 168 EXPECT_EQ("1997", extractor->date());
159 EXPECT_EQ("Lavf54.4.100", extractor->encoder()); 169 EXPECT_EQ("Lavf54.4.100", extractor->encoder());
160 170
161 EXPECT_EQ(3u, extractor->stream_infos().size()); 171 EXPECT_EQ(3u, extractor->stream_infos().size());
(...skipping 12 matching lines...) Expand all
174 EXPECT_EQ("Airbag", extractor->stream_infos()[0].tags.find("title")->second); 184 EXPECT_EQ("Airbag", extractor->stream_infos()[0].tags.find("title")->second);
175 EXPECT_EQ("1", extractor->stream_infos()[0].tags.find("track")->second); 185 EXPECT_EQ("1", extractor->stream_infos()[0].tags.find("track")->second);
176 186
177 EXPECT_EQ("mp3", extractor->stream_infos()[1].type); 187 EXPECT_EQ("mp3", extractor->stream_infos()[1].type);
178 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size()); 188 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size());
179 189
180 EXPECT_EQ("png", extractor->stream_infos()[2].type); 190 EXPECT_EQ("png", extractor->stream_infos()[2].type);
181 EXPECT_EQ(2u, extractor->stream_infos()[2].tags.size()); 191 EXPECT_EQ(2u, extractor->stream_infos()[2].tags.size());
182 EXPECT_EQ("Other", extractor->stream_infos()[2].tags.find("comment")->second); 192 EXPECT_EQ("Other", extractor->stream_infos()[2].tags.find("comment")->second);
183 EXPECT_EQ("", extractor->stream_infos()[2].tags.find("title")->second); 193 EXPECT_EQ("", extractor->stream_infos()[2].tags.find("title")->second);
194
195 EXPECT_EQ(1u, extractor->attached_images_bytes().size());
196 EXPECT_EQ(155752u, extractor->attached_images_bytes()[0].size());
197
198 EXPECT_EQ("\x89PNG\r\n\x1a\n",
199 extractor->attached_images_bytes()[0].substr(0, 8));
200 EXPECT_EQ("IEND\xae\x42\x60\x82",
201 extractor->attached_images_bytes()[0].substr(
202 extractor->attached_images_bytes()[0].size() - 8, 8));
203 EXPECT_EQ("\xF3\xED\x8F\xC7\xC7\x98\xB9V|p\xC0u!\xB5\x82\xCF\x95\xF0\xCD\xCE",
204 base::SHA1HashString(extractor->attached_images_bytes()[0]));
184 } 205 }
185 #endif 206 #endif
186 207
187 } // namespace media 208 } // namespace media
OLDNEW
« no previous file with comments | « media/base/audio_video_metadata_extractor.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698