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

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

Issue 250143002: Media Galleries API: Audio/Video attached pictures support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Create Blobs on browser-process, eliminating two IPC copies. 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
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 "build/build_config.h" 7 #include "build/build_config.h"
8 #include "media/base/audio_video_metadata_extractor.h" 8 #include "media/base/audio_video_metadata_extractor.h"
9 #include "media/base/test_data_util.h" 9 #include "media/base/test_data_util.h"
10 #include "media/filters/file_data_source.h" 10 #include "media/filters/file_data_source.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace media { 13 namespace media {
14 14
15 scoped_ptr<AudioVideoMetadataExtractor> GetExtractor( 15 scoped_ptr<AudioVideoMetadataExtractor> GetExtractor(
16 const std::string& filename, 16 const std::string& filename,
17 bool extract_attached_images,
17 bool expected_result, 18 bool expected_result,
18 double expected_duration, 19 double expected_duration,
19 int expected_width, 20 int expected_width,
20 int expected_height) { 21 int expected_height) {
21 FileDataSource source; 22 FileDataSource source;
22 EXPECT_TRUE(source.Initialize(GetTestDataFilePath(filename))); 23 EXPECT_TRUE(source.Initialize(GetTestDataFilePath(filename)));
23 24
24 scoped_ptr<AudioVideoMetadataExtractor> extractor( 25 scoped_ptr<AudioVideoMetadataExtractor> extractor(
25 new AudioVideoMetadataExtractor); 26 new AudioVideoMetadataExtractor);
26 bool extracted = extractor->Extract(&source); 27 bool extracted = extractor->Extract(&source, extract_attached_images);
27 EXPECT_EQ(expected_result, extracted); 28 EXPECT_EQ(expected_result, extracted);
28 29
29 if (!extracted) 30 if (!extracted)
30 return extractor.Pass(); 31 return extractor.Pass();
31 32
32 EXPECT_EQ(expected_duration, extractor->duration()); 33 EXPECT_EQ(expected_duration, extractor->duration());
33 34
34 EXPECT_EQ(expected_width, extractor->width()); 35 EXPECT_EQ(expected_width, extractor->width());
35 EXPECT_EQ(expected_height, extractor->height()); 36 EXPECT_EQ(expected_height, extractor->height());
36 37
37 return extractor.Pass(); 38 return extractor.Pass();
38 } 39 }
39 40
40 TEST(AudioVideoMetadataExtractorTest, InvalidFile) { 41 TEST(AudioVideoMetadataExtractorTest, InvalidFile) {
41 GetExtractor("ten_byte_file", false, 0, -1, -1); 42 GetExtractor("ten_byte_file", true, false, 0, -1, -1);
42 } 43 }
43 44
44 TEST(AudioVideoMetadataExtractorTest, AudioOGG) { 45 TEST(AudioVideoMetadataExtractorTest, AudioOGG) {
45 scoped_ptr<AudioVideoMetadataExtractor> extractor = 46 scoped_ptr<AudioVideoMetadataExtractor> extractor =
46 GetExtractor("9ch.ogg", true, 0, -1, -1); 47 GetExtractor("9ch.ogg", true, true, 0, -1, -1);
47 EXPECT_EQ("Processed by SoX", extractor->comment()); 48 EXPECT_EQ("Processed by SoX", extractor->comment());
48 49
49 EXPECT_EQ("ogg", extractor->stream_infos()[0].type); 50 EXPECT_EQ("ogg", extractor->stream_infos()[0].type);
50 EXPECT_EQ(2u, extractor->stream_infos().size()); 51 EXPECT_EQ(2u, extractor->stream_infos().size());
51 52
52 EXPECT_EQ(0u, extractor->stream_infos()[0].tags.size()); 53 EXPECT_EQ(0u, extractor->stream_infos()[0].tags.size());
53 54
54 EXPECT_EQ(1u, extractor->stream_infos()[1].tags.size()); 55 EXPECT_EQ(1u, extractor->stream_infos()[1].tags.size());
55 EXPECT_EQ("vorbis", extractor->stream_infos()[1].type); 56 EXPECT_EQ("vorbis", extractor->stream_infos()[1].type);
56 EXPECT_EQ("Processed by SoX", 57 EXPECT_EQ("Processed by SoX",
57 extractor->stream_infos()[1].tags.find("COMMENT")->second); 58 extractor->stream_infos()[1].tags.find("COMMENT")->second);
59
60 EXPECT_EQ(0u, extractor->attached_images_bytes().size());
58 } 61 }
59 62
60 TEST(AudioVideoMetadataExtractorTest, AudioWAV) { 63 TEST(AudioVideoMetadataExtractorTest, AudioWAV) {
61 scoped_ptr<AudioVideoMetadataExtractor> extractor = 64 scoped_ptr<AudioVideoMetadataExtractor> extractor =
62 GetExtractor("sfx_u8.wav", true, 0, -1, -1); 65 GetExtractor("sfx_u8.wav", true, true, 0, -1, -1);
63 EXPECT_EQ("Lavf54.37.100", extractor->encoder()); 66 EXPECT_EQ("Lavf54.37.100", extractor->encoder());
64 EXPECT_EQ("Amadeus Pro", extractor->encoded_by()); 67 EXPECT_EQ("Amadeus Pro", extractor->encoded_by());
65 68
66 EXPECT_EQ("wav", extractor->stream_infos()[0].type); 69 EXPECT_EQ("wav", extractor->stream_infos()[0].type);
67 EXPECT_EQ(2u, extractor->stream_infos().size()); 70 EXPECT_EQ(2u, extractor->stream_infos().size());
68 71
69 EXPECT_EQ(2u, extractor->stream_infos()[0].tags.size()); 72 EXPECT_EQ(2u, extractor->stream_infos()[0].tags.size());
70 EXPECT_EQ("Lavf54.37.100", 73 EXPECT_EQ("Lavf54.37.100",
71 extractor->stream_infos()[0].tags.find("encoder")->second); 74 extractor->stream_infos()[0].tags.find("encoder")->second);
72 EXPECT_EQ("Amadeus Pro", 75 EXPECT_EQ("Amadeus Pro",
73 extractor->stream_infos()[0].tags.find("encoded_by")->second); 76 extractor->stream_infos()[0].tags.find("encoded_by")->second);
74 77
75 EXPECT_EQ("pcm_u8", extractor->stream_infos()[1].type); 78 EXPECT_EQ("pcm_u8", extractor->stream_infos()[1].type);
76 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size()); 79 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size());
80
81 EXPECT_EQ(0u, extractor->attached_images_bytes().size());
77 } 82 }
78 83
79 TEST(AudioVideoMetadataExtractorTest, VideoWebM) { 84 TEST(AudioVideoMetadataExtractorTest, VideoWebM) {
80 scoped_ptr<AudioVideoMetadataExtractor> extractor = 85 scoped_ptr<AudioVideoMetadataExtractor> extractor =
81 GetExtractor("bear-320x240-multitrack.webm", true, 2, 320, 240); 86 GetExtractor("bear-320x240-multitrack.webm", true, true, 2, 320, 240);
82 EXPECT_EQ("Lavf53.9.0", extractor->encoder()); 87 EXPECT_EQ("Lavf53.9.0", extractor->encoder());
83 88
84 EXPECT_EQ(6u, extractor->stream_infos().size()); 89 EXPECT_EQ(6u, extractor->stream_infos().size());
85 90
86 EXPECT_EQ("matroska,webm", extractor->stream_infos()[0].type); 91 EXPECT_EQ("matroska,webm", extractor->stream_infos()[0].type);
87 EXPECT_EQ(1u, extractor->stream_infos()[0].tags.size()); 92 EXPECT_EQ(1u, extractor->stream_infos()[0].tags.size());
88 EXPECT_EQ("Lavf53.9.0", 93 EXPECT_EQ("Lavf53.9.0",
89 extractor->stream_infos()[0].tags.find("ENCODER")->second); 94 extractor->stream_infos()[0].tags.find("ENCODER")->second);
90 95
91 EXPECT_EQ("vp8", extractor->stream_infos()[1].type); 96 EXPECT_EQ("vp8", extractor->stream_infos()[1].type);
92 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size()); 97 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size());
93 98
94 EXPECT_EQ("vorbis", extractor->stream_infos()[2].type); 99 EXPECT_EQ("vorbis", extractor->stream_infos()[2].type);
95 EXPECT_EQ(0u, extractor->stream_infos()[2].tags.size()); 100 EXPECT_EQ(0u, extractor->stream_infos()[2].tags.size());
96 101
97 EXPECT_EQ("subrip", extractor->stream_infos()[3].type); 102 EXPECT_EQ("subrip", extractor->stream_infos()[3].type);
98 EXPECT_EQ(0u, extractor->stream_infos()[3].tags.size()); 103 EXPECT_EQ(0u, extractor->stream_infos()[3].tags.size());
99 104
100 EXPECT_EQ("theora", extractor->stream_infos()[4].type); 105 EXPECT_EQ("theora", extractor->stream_infos()[4].type);
101 EXPECT_EQ(0u, extractor->stream_infos()[4].tags.size()); 106 EXPECT_EQ(0u, extractor->stream_infos()[4].tags.size());
102 107
103 EXPECT_EQ("pcm_s16le", extractor->stream_infos()[5].type); 108 EXPECT_EQ("pcm_s16le", extractor->stream_infos()[5].type);
104 EXPECT_EQ(1u, extractor->stream_infos()[5].tags.size()); 109 EXPECT_EQ(1u, extractor->stream_infos()[5].tags.size());
105 EXPECT_EQ("Lavc52.32.0", 110 EXPECT_EQ("Lavc52.32.0",
106 extractor->stream_infos()[5].tags.find("ENCODER")->second); 111 extractor->stream_infos()[5].tags.find("ENCODER")->second);
112
113 EXPECT_EQ(0u, extractor->attached_images_bytes().size());
107 } 114 }
108 115
109 #if defined(USE_PROPRIETARY_CODECS) 116 #if defined(USE_PROPRIETARY_CODECS)
110 TEST(AudioVideoMetadataExtractorTest, AndroidRotatedMP4Video) { 117 TEST(AudioVideoMetadataExtractorTest, AndroidRotatedMP4Video) {
111 scoped_ptr<AudioVideoMetadataExtractor> extractor = 118 scoped_ptr<AudioVideoMetadataExtractor> extractor =
112 GetExtractor("90rotation.mp4", true, 0, 1920, 1080); 119 GetExtractor("90rotation.mp4", true, true, 0, 1920, 1080);
113 120
114 EXPECT_EQ(90, extractor->rotation()); 121 EXPECT_EQ(90, extractor->rotation());
115 122
116 EXPECT_EQ(3u, extractor->stream_infos().size()); 123 EXPECT_EQ(3u, extractor->stream_infos().size());
117 124
118 EXPECT_EQ("mov,mp4,m4a,3gp,3g2,mj2", extractor->stream_infos()[0].type); 125 EXPECT_EQ("mov,mp4,m4a,3gp,3g2,mj2", extractor->stream_infos()[0].type);
119 EXPECT_EQ(4u, extractor->stream_infos()[0].tags.size()); 126 EXPECT_EQ(4u, extractor->stream_infos()[0].tags.size());
120 EXPECT_EQ( 127 EXPECT_EQ(
121 "isom3gp4", 128 "isom3gp4",
122 extractor->stream_infos()[0].tags.find("compatible_brands")->second); 129 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); 144 EXPECT_EQ("eng", extractor->stream_infos()[1].tags.find("language")->second);
138 EXPECT_EQ("90", extractor->stream_infos()[1].tags.find("rotate")->second); 145 EXPECT_EQ("90", extractor->stream_infos()[1].tags.find("rotate")->second);
139 146
140 EXPECT_EQ("aac", extractor->stream_infos()[2].type); 147 EXPECT_EQ("aac", extractor->stream_infos()[2].type);
141 EXPECT_EQ(3u, extractor->stream_infos()[2].tags.size()); 148 EXPECT_EQ(3u, extractor->stream_infos()[2].tags.size());
142 EXPECT_EQ("2014-02-11 00:39:25", 149 EXPECT_EQ("2014-02-11 00:39:25",
143 extractor->stream_infos()[2].tags.find("creation_time")->second); 150 extractor->stream_infos()[2].tags.find("creation_time")->second);
144 EXPECT_EQ("SoundHandle", 151 EXPECT_EQ("SoundHandle",
145 extractor->stream_infos()[2].tags.find("handler_name")->second); 152 extractor->stream_infos()[2].tags.find("handler_name")->second);
146 EXPECT_EQ("eng", extractor->stream_infos()[2].tags.find("language")->second); 153 EXPECT_EQ("eng", extractor->stream_infos()[2].tags.find("language")->second);
154
155 EXPECT_EQ(0u, extractor->attached_images_bytes().size());
147 } 156 }
148 157
149 TEST(AudioVideoMetadataExtractorTest, AudioMP3) { 158 TEST(AudioVideoMetadataExtractorTest, AudioMP3) {
150 scoped_ptr<AudioVideoMetadataExtractor> extractor = 159 scoped_ptr<AudioVideoMetadataExtractor> extractor =
151 GetExtractor("id3_png_test.mp3", true, 1, -1, -1); 160 GetExtractor("id3_png_test.mp3", true, true, 1, -1, -1);
152 161
153 EXPECT_EQ("Airbag", extractor->title()); 162 EXPECT_EQ("Airbag", extractor->title());
154 EXPECT_EQ("Radiohead", extractor->artist()); 163 EXPECT_EQ("Radiohead", extractor->artist());
155 EXPECT_EQ("OK Computer", extractor->album()); 164 EXPECT_EQ("OK Computer", extractor->album());
156 EXPECT_EQ(1, extractor->track()); 165 EXPECT_EQ(1, extractor->track());
157 EXPECT_EQ("Alternative", extractor->genre()); 166 EXPECT_EQ("Alternative", extractor->genre());
158 EXPECT_EQ("1997", extractor->date()); 167 EXPECT_EQ("1997", extractor->date());
159 EXPECT_EQ("Lavf54.4.100", extractor->encoder()); 168 EXPECT_EQ("Lavf54.4.100", extractor->encoder());
160 169
161 EXPECT_EQ(3u, extractor->stream_infos().size()); 170 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); 183 EXPECT_EQ("Airbag", extractor->stream_infos()[0].tags.find("title")->second);
175 EXPECT_EQ("1", extractor->stream_infos()[0].tags.find("track")->second); 184 EXPECT_EQ("1", extractor->stream_infos()[0].tags.find("track")->second);
176 185
177 EXPECT_EQ("mp3", extractor->stream_infos()[1].type); 186 EXPECT_EQ("mp3", extractor->stream_infos()[1].type);
178 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size()); 187 EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size());
179 188
180 EXPECT_EQ("png", extractor->stream_infos()[2].type); 189 EXPECT_EQ("png", extractor->stream_infos()[2].type);
181 EXPECT_EQ(2u, extractor->stream_infos()[2].tags.size()); 190 EXPECT_EQ(2u, extractor->stream_infos()[2].tags.size());
182 EXPECT_EQ("Other", extractor->stream_infos()[2].tags.find("comment")->second); 191 EXPECT_EQ("Other", extractor->stream_infos()[2].tags.find("comment")->second);
183 EXPECT_EQ("", extractor->stream_infos()[2].tags.find("title")->second); 192 EXPECT_EQ("", extractor->stream_infos()[2].tags.find("title")->second);
193
194 EXPECT_EQ(1u, extractor->attached_images_bytes().size());
195 EXPECT_EQ(155752u, extractor->attached_images_bytes()[0].size());
196
197 EXPECT_EQ("\x89PNG\r\n\x1a\n",
198 extractor->attached_images_bytes()[0].substr(0, 8));
199 EXPECT_EQ("IEND\xae\x42\x60\x82",
200 extractor->attached_images_bytes()[0].substr(
201 extractor->attached_images_bytes()[0].size() - 8, 8));
184 } 202 }
185 #endif 203 #endif
186 204
187 } // namespace media 205 } // namespace media
OLDNEW
« extensions/renderer/blob_native_handler.cc ('K') | « 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