| Index: media/filters/ffmpeg_glue_unittest.cc
|
| diff --git a/media/filters/ffmpeg_glue_unittest.cc b/media/filters/ffmpeg_glue_unittest.cc
|
| index 5781bf3e2afb0d20c8c0530c09ba2dde24eb1d2a..cda290e9695501eb81902a1d74b7523d0f22eab3 100644
|
| --- a/media/filters/ffmpeg_glue_unittest.cc
|
| +++ b/media/filters/ffmpeg_glue_unittest.cc
|
| @@ -10,6 +10,8 @@
|
|
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| +#include "base/test/histogram_tester.h"
|
| +#include "media/base/container_names.h"
|
| #include "media/base/mock_filters.h"
|
| #include "media/base/test_data_util.h"
|
| #include "media/ffmpeg/ffmpeg_common.h"
|
| @@ -61,8 +63,8 @@ class FFmpegGlueTest : public ::testing::Test {
|
| }
|
|
|
| int ReadPacket(int size, uint8_t* data) {
|
| - return glue_->format_context()->pb->read_packet(
|
| - protocol_.get(), data, size);
|
| + return glue_->format_context()->pb->read_packet(protocol_.get(), data,
|
| + size);
|
| }
|
|
|
| int64_t Seek(int64_t offset, int whence) {
|
| @@ -113,6 +115,29 @@ class FFmpegGlueDestructionTest : public ::testing::Test {
|
| DISALLOW_COPY_AND_ASSIGN(FFmpegGlueDestructionTest);
|
| };
|
|
|
| +// Tests that ensure we are using the correct AVInputFormat name given by ffmpeg
|
| +// for supported containers.
|
| +class FFmpegGlueContainerTest : public FFmpegGlueDestructionTest {
|
| + public:
|
| + FFmpegGlueContainerTest() {}
|
| + ~FFmpegGlueContainerTest() override {}
|
| +
|
| + protected:
|
| + void InitializeAndOpen(const char* filename) {
|
| + Initialize(filename);
|
| + ASSERT_TRUE(glue_->OpenContext());
|
| + }
|
| +
|
| + void ExpectContainer(container_names::MediaContainerName container) {
|
| + histogram_tester_.ExpectUniqueSample("Media.DetectedContainer", container,
|
| + 1);
|
| + }
|
| +
|
| + private:
|
| + base::HistogramTester histogram_tester_;
|
| + DISALLOW_COPY_AND_ASSIGN(FFmpegGlueContainerTest);
|
| +};
|
| +
|
| // Ensure writing has been disabled.
|
| TEST_F(FFmpegGlueTest, Write) {
|
| ASSERT_FALSE(glue_->format_context()->pb->write_packet);
|
| @@ -253,4 +278,60 @@ TEST_F(FFmpegGlueDestructionTest, WithOpenWithOpenStreams) {
|
| avcodec_find_decoder(context->codec_id), nullptr));
|
| }
|
|
|
| +TEST_F(FFmpegGlueContainerTest, OGG) {
|
| + InitializeAndOpen("sfx.ogg");
|
| + ExpectContainer(container_names::CONTAINER_OGG);
|
| +}
|
| +
|
| +TEST_F(FFmpegGlueContainerTest, WEBM) {
|
| + InitializeAndOpen("sfx-opus-441.webm");
|
| + ExpectContainer(container_names::CONTAINER_WEBM);
|
| +}
|
| +
|
| +TEST_F(FFmpegGlueContainerTest, FLAC) {
|
| + InitializeAndOpen("sfx.flac");
|
| + ExpectContainer(container_names::CONTAINER_FLAC);
|
| +}
|
| +
|
| +TEST_F(FFmpegGlueContainerTest, WAV) {
|
| + InitializeAndOpen("sfx_s16le.wav");
|
| + ExpectContainer(container_names::CONTAINER_WAV);
|
| +}
|
| +
|
| +#if BUILDFLAG(USE_PROPRIETARY_CODECS)
|
| +TEST_F(FFmpegGlueContainerTest, MOV) {
|
| + InitializeAndOpen("sfx.m4a");
|
| + ExpectContainer(container_names::CONTAINER_MOV);
|
| +}
|
| +
|
| +TEST_F(FFmpegGlueContainerTest, MP3) {
|
| + InitializeAndOpen("sfx.mp3");
|
| + ExpectContainer(container_names::CONTAINER_MP3);
|
| +}
|
| +
|
| +TEST_F(FFmpegGlueContainerTest, AAC) {
|
| + InitializeAndOpen("sfx.adts");
|
| + ExpectContainer(container_names::CONTAINER_AAC);
|
| +}
|
| +
|
| +#if defined(OS_CHROMEOS)
|
| +TEST_F(FFmpegGlueContainerTest, AVI) {
|
| + InitializeAndOpen("bear.avi");
|
| + ExpectContainer(container_names::CONTAINER_AVI);
|
| +}
|
| +
|
| +TEST_F(FFmpegGlueContainerTest, AMR) {
|
| + InitializeAndOpen("bear.amr");
|
| + ExpectContainer(container_names::CONTAINER_AMR);
|
| +}
|
| +#endif // defined(OS_CHROMEOS)
|
| +#endif // BUILDFLAG(USE_PROPRIETARY_CODECS)
|
| +
|
| +// Probe something unsupported to ensure we fall back to the our internal guess.
|
| +TEST_F(FFmpegGlueContainerTest, FLV) {
|
| + Initialize("bear.flv");
|
| + ASSERT_FALSE(glue_->OpenContext());
|
| + ExpectContainer(container_names::CONTAINER_FLV);
|
| +}
|
| +
|
| } // namespace media
|
|
|