190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file.
490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h"
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "media/base/container_names.h"
790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "media/base/test_data_util.h"
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace media {
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace container_names {
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Using a macros to simplify tests. Since EXPECT_EQ outputs the second argument
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// as a string when it fails, this lets the output identify what item actually
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// failed.
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define VERIFY(buffer, name)                                           \
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  EXPECT_EQ(name,                                                      \
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)            DetermineContainer(reinterpret_cast<const uint8*>(buffer), \
2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                               sizeof(buffer)))
2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Test that small buffers are handled correctly.
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(ContainerNamesTest, CheckSmallBuffer) {
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Empty buffer.
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  char buffer[1];  // ([0] not allowed on win)
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(buffer, CONTAINER_UNKNOWN);
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Try a simple SRT file.
2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  char buffer1[] =
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      "1\n"
3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      "00:03:23,550 --> 00:03:24,375\n"
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      "You always had a hard time finding your place in this world.\n"
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      "\n"
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      "2\n"
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      "00:03:24,476 --> 00:03:25,175\n"
3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      "What are you talking about?\n";
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(buffer1, CONTAINER_SRT);
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // HLS has it's own loop.
4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  char buffer2[] = "#EXTM3U"
4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                   "some other random stuff"
4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                   "#EXT-X-MEDIA-SEQUENCE:";
4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(buffer2, CONTAINER_HLS);
4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Try a large buffer all zeros.
4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  char buffer3[4096];
4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  memset(buffer3, 0, sizeof(buffer3));
4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(buffer3, CONTAINER_UNKNOWN);
4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Reuse buffer, but all \n this time.
5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  memset(buffer3, '\n', sizeof(buffer3));
5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(buffer3, CONTAINER_UNKNOWN);
5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define BYTE_ORDER_MARK "\xef\xbb\xbf"
5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Note that the comparisons need at least 12 bytes, so make sure the buffer is
5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// at least that size.
5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kAmrBuffer[12] = "#!AMR";
6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)uint8 kAsfBuffer[] = { 0x30, 0x26, 0xb2, 0x75, 0x8e, 0x66, 0xcf, 0x11, 0xa6,
6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                       0xd9, 0x00, 0xaa, 0x00, 0x62, 0xce, 0x6c };
6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kAss1Buffer[] = "[Script Info]";
6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kAss2Buffer[] = BYTE_ORDER_MARK "[Script Info]";
6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)uint8 kCafBuffer[] = { 'c', 'a', 'f', 'f', 0, 1, 0, 0, 'd', 'e', 's', 'c', 0, 0,
6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                       0, 0, 0, 0, 0, 32, 64, 229, 136, 128, 0, 0, 0, 0, 'a',
6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                       'a', 'c', ' ', 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                       0, 2, 0, 0, 0, 0 };
6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kDtshdBuffer[12] = "DTSHDHDR";
6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kDxaBuffer[16] = "DEXA";
7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kFlacBuffer[12] = "fLaC";
7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)uint8 kFlvBuffer[12] = { 'F', 'L', 'V', 0, 0, 0, 0, 1, 0, 0, 0, 0 };
72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)uint8 kIrcamBuffer[] = { 0x64, 0xa3, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1 };
7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kRm1Buffer[12] = ".RMF\0\0";
7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const char kRm2Buffer[12] = ".ra\xfd";
7590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)uint8 kWtvBuffer[] = { 0xb7, 0xd8, 0x00, 0x20, 0x37, 0x49, 0xda, 0x11, 0xa6,
7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                       0x4e, 0x00, 0x07, 0xe9, 0x5e, 0xad, 0x8d };
77a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)uint8 kBug263073Buffer[] = {
78a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70, 0x6d, 0x70, 0x34, 0x32,
79a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    0x00, 0x00, 0x00, 0x00, 0x69, 0x73, 0x6f, 0x6d, 0x6d, 0x70, 0x34, 0x32,
80a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    0x00, 0x00, 0x00, 0x01, 0x6d, 0x64, 0x61, 0x74, 0x00, 0x00, 0x00, 0x00,
81a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    0xaa, 0x2e, 0x22, 0xcf, 0x00, 0x00, 0x00, 0x37, 0x67, 0x64, 0x00, 0x28,
82a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    0xac, 0x2c, 0xa4, 0x01, 0xe0, 0x08, 0x9f, 0x97, 0x01, 0x52, 0x02, 0x02,
83a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    0x02, 0x80, 0x00, 0x01};
8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
8590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Test that containers that start with fixed strings are handled correctly.
8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// This is to verify that the TAG matches the first 4 characters of the string.
8790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(ContainerNamesTest, CheckFixedStrings) {
8890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kAmrBuffer, CONTAINER_AMR);
8990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kAsfBuffer, CONTAINER_ASF);
9090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kAss1Buffer, CONTAINER_ASS);
9190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kAss2Buffer, CONTAINER_ASS);
9290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kCafBuffer, CONTAINER_CAF);
9390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kDtshdBuffer, CONTAINER_DTSHD);
9490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kDxaBuffer, CONTAINER_DXA);
9590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kFlacBuffer, CONTAINER_FLAC);
9690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kFlvBuffer, CONTAINER_FLV);
9790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kIrcamBuffer, CONTAINER_IRCAM);
9890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kRm1Buffer, CONTAINER_RM);
9990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kRm2Buffer, CONTAINER_RM);
10090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VERIFY(kWtvBuffer, CONTAINER_WTV);
101a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  VERIFY(kBug263073Buffer, CONTAINER_MOV);
10290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
10390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
10490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Determine the container type of a specified file.
10590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void TestFile(MediaContainerName expected, const base::FilePath& filename) {
10690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  char buffer[8192];
10790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
10890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Windows implementation of ReadFile fails if file smaller than desired size,
10990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // so use file length if file less than 8192 bytes (http://crbug.com/243885).
11090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  int read_size = sizeof(buffer);
11190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  int64 actual_size;
112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (base::GetFileSize(filename, &actual_size) && actual_size < read_size)
11390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    read_size = actual_size;
114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int read = base::ReadFile(filename, buffer, read_size);
11590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
11690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Now verify the type.
11790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  EXPECT_EQ(expected,
11890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)            DetermineContainer(reinterpret_cast<const uint8*>(buffer), read))
11990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      << "Failure with file " << filename.value();
12090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
12190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
12290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(ContainerNamesTest, FileCheckOGG) {
12390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_OGG, GetTestDataFilePath("bear.ogv"));
12490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_OGG, GetTestDataFilePath("9ch.ogg"));
12590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
12690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
12790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(ContainerNamesTest, FileCheckWAV) {
12890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_WAV, GetTestDataFilePath("4ch.wav"));
12990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_WAV, GetTestDataFilePath("sfx_f32le.wav"));
13090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_WAV, GetTestDataFilePath("sfx_s16le.wav"));
13190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
13290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
13390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(ContainerNamesTest, FileCheckMOV) {
13490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_MOV, GetTestDataFilePath("bear-1280x720.mp4"));
13590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_MOV, GetTestDataFilePath("sfx.m4a"));
13690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
13790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
13890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(ContainerNamesTest, FileCheckWEBM) {
13990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_WEBM, GetTestDataFilePath("bear-320x240.webm"));
14090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_WEBM, GetTestDataFilePath("no_streams.webm"));
14190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_WEBM, GetTestDataFilePath("webm_ebml_element"));
14290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
14390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
14490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(ContainerNamesTest, FileCheckMP3) {
14590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_MP3, GetTestDataFilePath("id3_test.mp3"));
14690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_MP3, GetTestDataFilePath("sfx.mp3"));
14790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
14890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
149868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckAC3) {
150868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_AC3, GetTestDataFilePath("bear.ac3"));
151868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
152868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
153868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckAAC) {
154868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_AAC, GetTestDataFilePath("bear.adts"));
155868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
156868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
157868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckAIFF) {
158868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_AIFF, GetTestDataFilePath("bear.aiff"));
159868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
160868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
161868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckASF) {
162868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_ASF, GetTestDataFilePath("bear.asf"));
163868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
164868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
165868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckAVI) {
166868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_AVI, GetTestDataFilePath("bear.avi"));
167868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
168868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
169868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckEAC3) {
170868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_EAC3, GetTestDataFilePath("bear.eac3"));
171868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
172868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
173868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckFLAC) {
174868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_FLAC, GetTestDataFilePath("bear.flac"));
175868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
176868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
177868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckFLV) {
178868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_FLV, GetTestDataFilePath("bear.flv"));
179868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
180868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
181868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckH261) {
182868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_H261, GetTestDataFilePath("bear.h261"));
183868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
184868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
185868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckH263) {
186868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_H263, GetTestDataFilePath("bear.h263"));
187868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
188868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
189868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckMJPEG) {
190868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_MJPEG, GetTestDataFilePath("bear.mjpeg"));
191868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
192868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
193868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckMPEG2PS) {
194868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_MPEG2PS, GetTestDataFilePath("bear.mpeg"));
195868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
196868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
197868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckMPEG2TS) {
198868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_MPEG2TS, GetTestDataFilePath("bear.m2ts"));
199868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
200868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
201868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckRM) {
202868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_RM, GetTestDataFilePath("bear.rm"));
203868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
204868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
205868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(ContainerNamesTest, FileCheckSWF) {
206868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  TestFile(CONTAINER_SWF, GetTestDataFilePath("bear.swf"));
207868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
208868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
20990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Try a few non containers.
21090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(ContainerNamesTest, FileCheckUNKNOWN) {
21190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_UNKNOWN, GetTestDataFilePath("ten_byte_file"));
21290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_UNKNOWN, GetTestDataFilePath("README"));
21390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_UNKNOWN, GetTestDataFilePath("bali_640x360_P422.yuv"));
21490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_UNKNOWN, GetTestDataFilePath("bali_640x360_RGB24.rgb"));
21590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  TestFile(CONTAINER_UNKNOWN, GetTestDataFilePath("webm_vp8_track_entry"));
21690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
21790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
21890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace container_names
21990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
22090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace media
221