Home | History | Annotate | Download | only in services
      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
      3 // found in the LICENSE file.
      4 
      5 #include "media/mojo/services/media_type_converters.h"
      6 
      7 #include "media/base/audio_decoder_config.h"
      8 #include "media/base/decoder_buffer.h"
      9 #include "testing/gtest/include/gtest/gtest.h"
     10 
     11 using media::DecoderBuffer;
     12 
     13 namespace mojo {
     14 namespace test {
     15 
     16 TEST(MediaTypeConvertersTest, ConvertDecoderBuffer) {
     17   const uint8 kData[] = "hello, world";
     18   const uint8 kSideData[] = "sideshow bob";
     19   const int kDataSize = arraysize(kData);
     20   const int kSideDataSize = arraysize(kSideData);
     21 
     22   // Original.
     23   scoped_refptr<DecoderBuffer> buffer(DecoderBuffer::CopyFrom(
     24       reinterpret_cast<const uint8*>(&kData), kDataSize,
     25       reinterpret_cast<const uint8*>(&kSideData), kSideDataSize));
     26   buffer->set_timestamp(base::TimeDelta::FromMilliseconds(123));
     27   buffer->set_duration(base::TimeDelta::FromMilliseconds(456));
     28   buffer->set_splice_timestamp(base::TimeDelta::FromMilliseconds(200));
     29   buffer->set_discard_padding(media::DecoderBuffer::DiscardPadding(
     30       base::TimeDelta::FromMilliseconds(5),
     31       base::TimeDelta::FromMilliseconds(6)));
     32 
     33   // Convert from and back.
     34   MediaDecoderBufferPtr ptr(MediaDecoderBuffer::From(buffer));
     35   scoped_refptr<DecoderBuffer> result(ptr.To<scoped_refptr<DecoderBuffer> >());
     36 
     37   // Compare.
     38   EXPECT_EQ(kDataSize, result->data_size());
     39   EXPECT_EQ(0, memcmp(result->data(), kData, kDataSize));
     40   EXPECT_EQ(kSideDataSize, result->side_data_size());
     41   EXPECT_EQ(0, memcmp(result->side_data(), kSideData, kSideDataSize));
     42   EXPECT_EQ(buffer->timestamp(), result->timestamp());
     43   EXPECT_EQ(buffer->duration(), result->duration());
     44   EXPECT_EQ(buffer->splice_timestamp(), result->splice_timestamp());
     45   EXPECT_EQ(buffer->discard_padding(), result->discard_padding());
     46 }
     47 
     48 // TODO(tim): Handle EOS, check other properties.
     49 
     50 TEST(MediaTypeConvertersTest, ConvertAudioDecoderConfig) {
     51   const uint8 kExtraData[] = "config extra data";
     52   const int kExtraDataSize = arraysize(kExtraData);
     53   media::AudioDecoderConfig config;
     54   config.Initialize(media::kCodecAAC,
     55                     media::kSampleFormatU8,
     56                     media::CHANNEL_LAYOUT_SURROUND,
     57                     48000,
     58                     reinterpret_cast<const uint8*>(&kExtraData),
     59                     kExtraDataSize,
     60                     false,
     61                     false,
     62                     base::TimeDelta(),
     63                     0);
     64   AudioDecoderConfigPtr ptr(AudioDecoderConfig::From(config));
     65   media::AudioDecoderConfig result(ptr.To<media::AudioDecoderConfig>());
     66   EXPECT_TRUE(result.Matches(config));
     67 }
     68 
     69 }  // namespace test
     70 }  // namespace mojo
     71