OLD | NEW |
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 "media/mojo/services/media_type_converters.h" | 5 #include "media/mojo/services/media_type_converters.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include "media/base/audio_buffer.h" | 9 #include "media/base/audio_buffer.h" |
10 #include "media/base/audio_decoder_config.h" | 10 #include "media/base/audio_decoder_config.h" |
11 #include "media/base/cdm_config.h" | 11 #include "media/base/cdm_config.h" |
12 #include "media/base/decoder_buffer.h" | 12 #include "media/base/decoder_buffer.h" |
13 #include "media/base/media_util.h" | 13 #include "media/base/media_util.h" |
14 #include "media/base/sample_format.h" | 14 #include "media/base/sample_format.h" |
15 #include "media/base/test_helpers.h" | 15 #include "media/base/test_helpers.h" |
16 #include "media/base/video_frame.h" | 16 #include "media/base/video_frame.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
18 | 18 |
19 namespace media { | 19 namespace media { |
20 | 20 |
21 namespace { | 21 namespace { |
22 | 22 |
23 void CompareBytes(uint8* original_data, uint8* result_data, size_t length) { | 23 void CompareBytes(uint8_t* original_data, uint8_t* result_data, size_t length) { |
24 EXPECT_GT(length, 0u); | 24 EXPECT_GT(length, 0u); |
25 EXPECT_EQ(memcmp(original_data, result_data, length), 0); | 25 EXPECT_EQ(memcmp(original_data, result_data, length), 0); |
26 } | 26 } |
27 | 27 |
28 void CompareAudioBuffers(SampleFormat sample_format, | 28 void CompareAudioBuffers(SampleFormat sample_format, |
29 const scoped_refptr<AudioBuffer>& original, | 29 const scoped_refptr<AudioBuffer>& original, |
30 const scoped_refptr<AudioBuffer>& result) { | 30 const scoped_refptr<AudioBuffer>& result) { |
31 EXPECT_EQ(original->frame_count(), result->frame_count()); | 31 EXPECT_EQ(original->frame_count(), result->frame_count()); |
32 EXPECT_EQ(original->timestamp(), result->timestamp()); | 32 EXPECT_EQ(original->timestamp(), result->timestamp()); |
33 EXPECT_EQ(original->duration(), result->duration()); | 33 EXPECT_EQ(original->duration(), result->duration()); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 EXPECT_EQ(original->natural_size().width(), result->natural_size().width()); | 79 EXPECT_EQ(original->natural_size().width(), result->natural_size().width()); |
80 | 80 |
81 CompareVideoPlane(media::VideoFrame::kYPlane, original, result); | 81 CompareVideoPlane(media::VideoFrame::kYPlane, original, result); |
82 CompareVideoPlane(media::VideoFrame::kUPlane, original, result); | 82 CompareVideoPlane(media::VideoFrame::kUPlane, original, result); |
83 CompareVideoPlane(media::VideoFrame::kVPlane, original, result); | 83 CompareVideoPlane(media::VideoFrame::kVPlane, original, result); |
84 } | 84 } |
85 | 85 |
86 } // namespace | 86 } // namespace |
87 | 87 |
88 TEST(MediaTypeConvertersTest, ConvertDecoderBuffer_Normal) { | 88 TEST(MediaTypeConvertersTest, ConvertDecoderBuffer_Normal) { |
89 const uint8 kData[] = "hello, world"; | 89 const uint8_t kData[] = "hello, world"; |
90 const uint8 kSideData[] = "sideshow bob"; | 90 const uint8_t kSideData[] = "sideshow bob"; |
91 const int kDataSize = arraysize(kData); | 91 const int kDataSize = arraysize(kData); |
92 const int kSideDataSize = arraysize(kSideData); | 92 const int kSideDataSize = arraysize(kSideData); |
93 | 93 |
94 // Original. | 94 // Original. |
95 scoped_refptr<DecoderBuffer> buffer(DecoderBuffer::CopyFrom( | 95 scoped_refptr<DecoderBuffer> buffer(DecoderBuffer::CopyFrom( |
96 reinterpret_cast<const uint8*>(&kData), kDataSize, | 96 reinterpret_cast<const uint8_t*>(&kData), kDataSize, |
97 reinterpret_cast<const uint8*>(&kSideData), kSideDataSize)); | 97 reinterpret_cast<const uint8_t*>(&kSideData), kSideDataSize)); |
98 buffer->set_timestamp(base::TimeDelta::FromMilliseconds(123)); | 98 buffer->set_timestamp(base::TimeDelta::FromMilliseconds(123)); |
99 buffer->set_duration(base::TimeDelta::FromMilliseconds(456)); | 99 buffer->set_duration(base::TimeDelta::FromMilliseconds(456)); |
100 buffer->set_splice_timestamp(base::TimeDelta::FromMilliseconds(200)); | 100 buffer->set_splice_timestamp(base::TimeDelta::FromMilliseconds(200)); |
101 buffer->set_discard_padding( | 101 buffer->set_discard_padding( |
102 DecoderBuffer::DiscardPadding(base::TimeDelta::FromMilliseconds(5), | 102 DecoderBuffer::DiscardPadding(base::TimeDelta::FromMilliseconds(5), |
103 base::TimeDelta::FromMilliseconds(6))); | 103 base::TimeDelta::FromMilliseconds(6))); |
104 | 104 |
105 // Convert from and back. | 105 // Convert from and back. |
106 interfaces::DecoderBufferPtr ptr(interfaces::DecoderBuffer::From(buffer)); | 106 interfaces::DecoderBufferPtr ptr(interfaces::DecoderBuffer::From(buffer)); |
107 scoped_refptr<DecoderBuffer> result(ptr.To<scoped_refptr<DecoderBuffer>>()); | 107 scoped_refptr<DecoderBuffer> result(ptr.To<scoped_refptr<DecoderBuffer>>()); |
(...skipping 21 matching lines...) Expand all Loading... |
129 | 129 |
130 // Convert from and back. | 130 // Convert from and back. |
131 interfaces::DecoderBufferPtr ptr(interfaces::DecoderBuffer::From(buffer)); | 131 interfaces::DecoderBufferPtr ptr(interfaces::DecoderBuffer::From(buffer)); |
132 scoped_refptr<DecoderBuffer> result(ptr.To<scoped_refptr<DecoderBuffer>>()); | 132 scoped_refptr<DecoderBuffer> result(ptr.To<scoped_refptr<DecoderBuffer>>()); |
133 | 133 |
134 // Compare. | 134 // Compare. |
135 EXPECT_TRUE(result->end_of_stream()); | 135 EXPECT_TRUE(result->end_of_stream()); |
136 } | 136 } |
137 | 137 |
138 TEST(MediaTypeConvertersTest, ConvertDecoderBuffer_KeyFrame) { | 138 TEST(MediaTypeConvertersTest, ConvertDecoderBuffer_KeyFrame) { |
139 const uint8 kData[] = "hello, world"; | 139 const uint8_t kData[] = "hello, world"; |
140 const int kDataSize = arraysize(kData); | 140 const int kDataSize = arraysize(kData); |
141 | 141 |
142 // Original. | 142 // Original. |
143 scoped_refptr<DecoderBuffer> buffer(DecoderBuffer::CopyFrom( | 143 scoped_refptr<DecoderBuffer> buffer(DecoderBuffer::CopyFrom( |
144 reinterpret_cast<const uint8*>(&kData), kDataSize)); | 144 reinterpret_cast<const uint8_t*>(&kData), kDataSize)); |
145 buffer->set_is_key_frame(true); | 145 buffer->set_is_key_frame(true); |
146 EXPECT_TRUE(buffer->is_key_frame()); | 146 EXPECT_TRUE(buffer->is_key_frame()); |
147 | 147 |
148 // Convert from and back. | 148 // Convert from and back. |
149 interfaces::DecoderBufferPtr ptr(interfaces::DecoderBuffer::From(buffer)); | 149 interfaces::DecoderBufferPtr ptr(interfaces::DecoderBuffer::From(buffer)); |
150 scoped_refptr<DecoderBuffer> result(ptr.To<scoped_refptr<DecoderBuffer>>()); | 150 scoped_refptr<DecoderBuffer> result(ptr.To<scoped_refptr<DecoderBuffer>>()); |
151 | 151 |
152 // Compare. | 152 // Compare. |
153 // Note: We intentionally do not serialize the data section of the | 153 // Note: We intentionally do not serialize the data section of the |
154 // DecoderBuffer; no need to check the data here. | 154 // DecoderBuffer; no need to check the data here. |
155 EXPECT_EQ(kDataSize, result->data_size()); | 155 EXPECT_EQ(kDataSize, result->data_size()); |
156 EXPECT_TRUE(result->is_key_frame()); | 156 EXPECT_TRUE(result->is_key_frame()); |
157 } | 157 } |
158 | 158 |
159 TEST(MediaTypeConvertersTest, ConvertDecoderBuffer_EncryptedBuffer) { | 159 TEST(MediaTypeConvertersTest, ConvertDecoderBuffer_EncryptedBuffer) { |
160 const uint8 kData[] = "hello, world"; | 160 const uint8_t kData[] = "hello, world"; |
161 const int kDataSize = arraysize(kData); | 161 const int kDataSize = arraysize(kData); |
162 const char kKeyId[] = "00112233445566778899aabbccddeeff"; | 162 const char kKeyId[] = "00112233445566778899aabbccddeeff"; |
163 const char kIv[] = "0123456789abcdef"; | 163 const char kIv[] = "0123456789abcdef"; |
164 | 164 |
165 std::vector<SubsampleEntry> subsamples; | 165 std::vector<SubsampleEntry> subsamples; |
166 subsamples.push_back(SubsampleEntry(10, 20)); | 166 subsamples.push_back(SubsampleEntry(10, 20)); |
167 subsamples.push_back(SubsampleEntry(30, 40)); | 167 subsamples.push_back(SubsampleEntry(30, 40)); |
168 subsamples.push_back(SubsampleEntry(50, 60)); | 168 subsamples.push_back(SubsampleEntry(50, 60)); |
169 | 169 |
170 // Original. | 170 // Original. |
171 scoped_refptr<DecoderBuffer> buffer(DecoderBuffer::CopyFrom( | 171 scoped_refptr<DecoderBuffer> buffer(DecoderBuffer::CopyFrom( |
172 reinterpret_cast<const uint8*>(&kData), kDataSize)); | 172 reinterpret_cast<const uint8_t*>(&kData), kDataSize)); |
173 buffer->set_decrypt_config( | 173 buffer->set_decrypt_config( |
174 make_scoped_ptr(new DecryptConfig(kKeyId, kIv, subsamples))); | 174 make_scoped_ptr(new DecryptConfig(kKeyId, kIv, subsamples))); |
175 | 175 |
176 // Convert from and back. | 176 // Convert from and back. |
177 interfaces::DecoderBufferPtr ptr(interfaces::DecoderBuffer::From(buffer)); | 177 interfaces::DecoderBufferPtr ptr(interfaces::DecoderBuffer::From(buffer)); |
178 scoped_refptr<DecoderBuffer> result(ptr.To<scoped_refptr<DecoderBuffer>>()); | 178 scoped_refptr<DecoderBuffer> result(ptr.To<scoped_refptr<DecoderBuffer>>()); |
179 | 179 |
180 // Compare. | 180 // Compare. |
181 // Note: We intentionally do not serialize the data section of the | 181 // Note: We intentionally do not serialize the data section of the |
182 // DecoderBuffer; no need to check the data here. | 182 // DecoderBuffer; no need to check the data here. |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 scoped_refptr<AudioBuffer> result(ptr.To<scoped_refptr<AudioBuffer>>()); | 254 scoped_refptr<AudioBuffer> result(ptr.To<scoped_refptr<AudioBuffer>>()); |
255 | 255 |
256 // Compare. | 256 // Compare. |
257 EXPECT_TRUE(result->end_of_stream()); | 257 EXPECT_TRUE(result->end_of_stream()); |
258 } | 258 } |
259 | 259 |
260 TEST(MediaTypeConvertersTest, ConvertAudioBuffer_MONO) { | 260 TEST(MediaTypeConvertersTest, ConvertAudioBuffer_MONO) { |
261 // Original. | 261 // Original. |
262 const ChannelLayout kChannelLayout = CHANNEL_LAYOUT_MONO; | 262 const ChannelLayout kChannelLayout = CHANNEL_LAYOUT_MONO; |
263 const int kSampleRate = 48000; | 263 const int kSampleRate = 48000; |
264 scoped_refptr<AudioBuffer> buffer = MakeAudioBuffer<uint8>( | 264 scoped_refptr<AudioBuffer> buffer = MakeAudioBuffer<uint8_t>( |
265 kSampleFormatU8, kChannelLayout, | 265 kSampleFormatU8, kChannelLayout, |
266 ChannelLayoutToChannelCount(kChannelLayout), kSampleRate, 1, 1, | 266 ChannelLayoutToChannelCount(kChannelLayout), kSampleRate, 1, 1, |
267 kSampleRate / 100, base::TimeDelta()); | 267 kSampleRate / 100, base::TimeDelta()); |
268 | 268 |
269 // Convert to and back. | 269 // Convert to and back. |
270 interfaces::AudioBufferPtr ptr(interfaces::AudioBuffer::From(buffer)); | 270 interfaces::AudioBufferPtr ptr(interfaces::AudioBuffer::From(buffer)); |
271 scoped_refptr<AudioBuffer> result(ptr.To<scoped_refptr<AudioBuffer>>()); | 271 scoped_refptr<AudioBuffer> result(ptr.To<scoped_refptr<AudioBuffer>>()); |
272 | 272 |
273 // Compare. | 273 // Compare. |
274 CompareAudioBuffers(kSampleFormatU8, buffer, result); | 274 CompareAudioBuffers(kSampleFormatU8, buffer, result); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 | 323 |
324 // Convert to and back. | 324 // Convert to and back. |
325 interfaces::VideoFramePtr ptr(interfaces::VideoFrame::From(buffer)); | 325 interfaces::VideoFramePtr ptr(interfaces::VideoFrame::From(buffer)); |
326 scoped_refptr<VideoFrame> result(ptr.To<scoped_refptr<VideoFrame>>()); | 326 scoped_refptr<VideoFrame> result(ptr.To<scoped_refptr<VideoFrame>>()); |
327 | 327 |
328 // Compare. | 328 // Compare. |
329 CompareVideoFrames(buffer, result); | 329 CompareVideoFrames(buffer, result); |
330 } | 330 } |
331 | 331 |
332 } // namespace media | 332 } // namespace media |
OLD | NEW |