15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file.
45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/logging.h"
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/sha1.h"
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "build/build_config.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "media/base/audio_video_metadata_extractor.h"
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "media/base/test_data_util.h"
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "media/filters/file_data_source.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace media {
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)scoped_ptr<AudioVideoMetadataExtractor> GetExtractor(
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    const std::string& filename,
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    bool extract_attached_images,
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    bool expected_result,
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    double expected_duration,
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int expected_width,
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int expected_height) {
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  FileDataSource source;
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(source.Initialize(GetTestDataFilePath(filename)));
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<AudioVideoMetadataExtractor> extractor(
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      new AudioVideoMetadataExtractor);
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  bool extracted = extractor->Extract(&source, extract_attached_images);
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(expected_result, extracted);
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  if (!extracted)
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return extractor.Pass();
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(expected_duration, extractor->duration());
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(expected_width, extractor->width());
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(expected_height, extractor->height());
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return extractor.Pass();
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(AudioVideoMetadataExtractorTest, InvalidFile) {
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetExtractor("ten_byte_file", true, false, 0, -1, -1);
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(AudioVideoMetadataExtractorTest, AudioOGG) {
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<AudioVideoMetadataExtractor> extractor =
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      GetExtractor("9ch.ogg", true, true, 0, -1, -1);
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("Processed by SoX", extractor->comment());
50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("ogg", extractor->stream_infos()[0].type);
520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(2u, extractor->stream_infos().size());
530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(0u, extractor->stream_infos()[0].tags.size());
550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(1u, extractor->stream_infos()[1].tags.size());
570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("vorbis", extractor->stream_infos()[1].type);
580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Processed by SoX",
590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[1].tags.find("COMMENT")->second);
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(0u, extractor->attached_images_bytes().size());
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(AudioVideoMetadataExtractorTest, AudioWAV) {
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<AudioVideoMetadataExtractor> extractor =
66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      GetExtractor("sfx_u8.wav", true, true, 0, -1, -1);
675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("Lavf54.37.100", extractor->encoder());
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("Amadeus Pro", extractor->encoded_by());
69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("wav", extractor->stream_infos()[0].type);
710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(2u, extractor->stream_infos().size());
720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(2u, extractor->stream_infos()[0].tags.size());
740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Lavf54.37.100",
750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[0].tags.find("encoder")->second);
760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Amadeus Pro",
770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[0].tags.find("encoded_by")->second);
780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("pcm_u8", extractor->stream_infos()[1].type);
800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size());
81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(0u, extractor->attached_images_bytes().size());
835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(AudioVideoMetadataExtractorTest, VideoWebM) {
865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<AudioVideoMetadataExtractor> extractor =
87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      GetExtractor("bear-320x240-multitrack.webm", true, true, 2, 320, 240);
885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("Lavf53.9.0", extractor->encoder());
89c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
900529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(6u, extractor->stream_infos().size());
910529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
920529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("matroska,webm", extractor->stream_infos()[0].type);
930529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(1u, extractor->stream_infos()[0].tags.size());
940529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Lavf53.9.0",
950529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[0].tags.find("ENCODER")->second);
960529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
970529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("vp8", extractor->stream_infos()[1].type);
980529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size());
990529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1000529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("vorbis", extractor->stream_infos()[2].type);
1010529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(0u, extractor->stream_infos()[2].tags.size());
1020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("subrip", extractor->stream_infos()[3].type);
1040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(0u, extractor->stream_infos()[3].tags.size());
1050529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1060529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("theora", extractor->stream_infos()[4].type);
1070529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(0u, extractor->stream_infos()[4].tags.size());
1080529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1090529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("pcm_s16le", extractor->stream_infos()[5].type);
1100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(1u, extractor->stream_infos()[5].tags.size());
1110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Lavc52.32.0",
1120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[5].tags.find("ENCODER")->second);
113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(0u, extractor->attached_images_bytes().size());
1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(USE_PROPRIETARY_CODECS)
1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(AudioVideoMetadataExtractorTest, AndroidRotatedMP4Video) {
1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<AudioVideoMetadataExtractor> extractor =
120cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      GetExtractor("90rotation.mp4", true, true, 0, 1920, 1080);
1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(90, extractor->rotation());
123c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
1240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(3u, extractor->stream_infos().size());
1250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("mov,mp4,m4a,3gp,3g2,mj2", extractor->stream_infos()[0].type);
1270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(4u, extractor->stream_infos()[0].tags.size());
1280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(
1290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      "isom3gp4",
1300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      extractor->stream_infos()[0].tags.find("compatible_brands")->second);
1310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(
1320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      "2014-02-11 00:39:25",
1330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      extractor->stream_infos()[0].tags.find("creation_time")->second);
1340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("isom",
1350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[0].tags.find("major_brand")->second);
1360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("0",
1370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[0].tags.find("minor_version")->second);
1380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("h264", extractor->stream_infos()[1].type);
140cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(5u, extractor->stream_infos()[1].tags.size());
1410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("2014-02-11 00:39:25",
1420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[1].tags.find("creation_time")->second);
1430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("VideoHandle",
1440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[1].tags.find("handler_name")->second);
1450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("eng", extractor->stream_infos()[1].tags.find("language")->second);
1460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("90", extractor->stream_infos()[1].tags.find("rotate")->second);
1470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("aac", extractor->stream_infos()[2].type);
1490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(3u, extractor->stream_infos()[2].tags.size());
150c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  EXPECT_EQ("2014-02-11 00:39:25",
1510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[2].tags.find("creation_time")->second);
1520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("SoundHandle",
1530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[2].tags.find("handler_name")->second);
1540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("eng", extractor->stream_infos()[2].tags.find("language")->second);
155cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
156cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(0u, extractor->attached_images_bytes().size());
1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(AudioVideoMetadataExtractorTest, AudioMP3) {
1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<AudioVideoMetadataExtractor> extractor =
161cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      GetExtractor("id3_png_test.mp3", true, true, 1, -1, -1);
1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("Airbag", extractor->title());
1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("Radiohead", extractor->artist());
1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("OK Computer", extractor->album());
1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(1, extractor->track());
1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("Alternative", extractor->genre());
1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("1997", extractor->date());
1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("Lavf54.4.100", extractor->encoder());
170c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
1710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(3u, extractor->stream_infos().size());
1720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("mp3", extractor->stream_infos()[0].type);
1740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(7u, extractor->stream_infos()[0].tags.size());
1750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("OK Computer",
1760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[0].tags.find("album")->second);
1770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Radiohead",
1780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[0].tags.find("artist")->second);
1790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("1997", extractor->stream_infos()[0].tags.find("date")->second);
1800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Lavf54.4.100",
1810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[0].tags.find("encoder")->second);
1820529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Alternative",
1830529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            extractor->stream_infos()[0].tags.find("genre")->second);
1840529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Airbag", extractor->stream_infos()[0].tags.find("title")->second);
1850529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("1", extractor->stream_infos()[0].tags.find("track")->second);
1860529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1870529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("mp3", extractor->stream_infos()[1].type);
1880529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(0u, extractor->stream_infos()[1].tags.size());
1890529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1900529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("png", extractor->stream_infos()[2].type);
1910529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(2u, extractor->stream_infos()[2].tags.size());
1920529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("Other", extractor->stream_infos()[2].tags.find("comment")->second);
1930529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ("", extractor->stream_infos()[2].tags.find("title")->second);
194cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
195cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(1u, extractor->attached_images_bytes().size());
196cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ(155752u, extractor->attached_images_bytes()[0].size());
197cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
198cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ("\x89PNG\r\n\x1a\n",
199cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            extractor->attached_images_bytes()[0].substr(0, 8));
200cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ("IEND\xae\x42\x60\x82",
201cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            extractor->attached_images_bytes()[0].substr(
202cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                extractor->attached_images_bytes()[0].size() - 8, 8));
203cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_EQ("\xF3\xED\x8F\xC7\xC7\x98\xB9V|p\xC0u!\xB5\x82\xCF\x95\xF0\xCD\xCE",
204cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            base::SHA1HashString(extractor->attached_images_bytes()[0]));
2055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
2065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
2075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}  // namespace media
209