Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Side by Side Diff: media/filters/chunk_demuxer_unittest.cc

Issue 10823300: Make ChunkDemuxer::SetTimestampOffset take a TimeDelta instead of double (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: better solution Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "media/base/audio_decoder_config.h" 7 #include "media/base/audio_decoder_config.h"
8 #include "media/base/decoder_buffer.h" 8 #include "media/base/decoder_buffer.h"
9 #include "media/base/mock_callback.h" 9 #include "media/base/mock_callback.h"
10 #include "media/base/mock_demuxer_host.h" 10 #include "media/base/mock_demuxer_host.h"
(...skipping 2178 matching lines...) Expand 10 before | Expand all | Expand 10 after
2189 NewExpectedStatusCB(PIPELINE_OK)); 2189 NewExpectedStatusCB(PIPELINE_OK));
2190 2190
2191 // Verify that no config change is signalled. 2191 // Verify that no config change is signalled.
2192 ExpectRead(stream, 801); 2192 ExpectRead(stream, 801);
2193 ASSERT_TRUE(video_config_1.Matches(stream->video_decoder_config())); 2193 ASSERT_TRUE(video_config_1.Matches(stream->video_decoder_config()));
2194 } 2194 }
2195 2195
2196 TEST_F(ChunkDemuxerTest, TestTimestampPositiveOffset) { 2196 TEST_F(ChunkDemuxerTest, TestTimestampPositiveOffset) {
2197 ASSERT_TRUE(InitDemuxer(true, true, false)); 2197 ASSERT_TRUE(InitDemuxer(true, true, false));
2198 2198
2199 ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, 30)); 2199 ASSERT_TRUE(demuxer_->SetTimestampOffset(
2200 kSourceId, base::TimeDelta::FromSeconds(30)));
2200 scoped_ptr<Cluster> cluster(GenerateCluster(0, 2)); 2201 scoped_ptr<Cluster> cluster(GenerateCluster(0, 2));
2201 ASSERT_TRUE(AppendData(cluster->data(), cluster->size())); 2202 ASSERT_TRUE(AppendData(cluster->data(), cluster->size()));
2202 2203
2203 scoped_refptr<DemuxerStream> audio = 2204 scoped_refptr<DemuxerStream> audio =
2204 demuxer_->GetStream(DemuxerStream::AUDIO); 2205 demuxer_->GetStream(DemuxerStream::AUDIO);
2205 scoped_refptr<DemuxerStream> video = 2206 scoped_refptr<DemuxerStream> video =
2206 demuxer_->GetStream(DemuxerStream::VIDEO); 2207 demuxer_->GetStream(DemuxerStream::VIDEO);
2207 GenerateExpectedReads(30000, 2, audio, video); 2208 GenerateExpectedReads(30000, 2, audio, video);
2208 } 2209 }
2209 2210
2210 TEST_F(ChunkDemuxerTest, TestTimestampNegativeOffset) { 2211 TEST_F(ChunkDemuxerTest, TestTimestampNegativeOffset) {
2211 ASSERT_TRUE(InitDemuxer(true, true, false)); 2212 ASSERT_TRUE(InitDemuxer(true, true, false));
2212 2213
2213 ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, -1)); 2214 ASSERT_TRUE(demuxer_->SetTimestampOffset(
2215 kSourceId, base::TimeDelta::FromSeconds(-1)));
2214 scoped_ptr<Cluster> cluster = GenerateCluster(1000, 2); 2216 scoped_ptr<Cluster> cluster = GenerateCluster(1000, 2);
2215 ASSERT_TRUE(AppendData(cluster->data(), cluster->size())); 2217 ASSERT_TRUE(AppendData(cluster->data(), cluster->size()));
2216 2218
2217 scoped_refptr<DemuxerStream> audio = 2219 scoped_refptr<DemuxerStream> audio =
2218 demuxer_->GetStream(DemuxerStream::AUDIO); 2220 demuxer_->GetStream(DemuxerStream::AUDIO);
2219 scoped_refptr<DemuxerStream> video = 2221 scoped_refptr<DemuxerStream> video =
2220 demuxer_->GetStream(DemuxerStream::VIDEO); 2222 demuxer_->GetStream(DemuxerStream::VIDEO);
2221 GenerateExpectedReads(0, 2, audio, video); 2223 GenerateExpectedReads(0, 2, audio, video);
2222 } 2224 }
2223 2225
(...skipping 18 matching lines...) Expand all
2242 kVideoBlockDuration)); 2244 kVideoBlockDuration));
2243 2245
2244 scoped_ptr<Cluster> cluster_a2( 2246 scoped_ptr<Cluster> cluster_a2(
2245 GenerateSingleStreamCluster( 2247 GenerateSingleStreamCluster(
2246 0, kAudioBlockDuration * 4, kAudioTrackNum, kAudioBlockDuration)); 2248 0, kAudioBlockDuration * 4, kAudioTrackNum, kAudioBlockDuration));
2247 2249
2248 scoped_ptr<Cluster> cluster_v2( 2250 scoped_ptr<Cluster> cluster_v2(
2249 GenerateSingleStreamCluster( 2251 GenerateSingleStreamCluster(
2250 0, kVideoBlockDuration * 4, kVideoTrackNum, kVideoBlockDuration)); 2252 0, kVideoBlockDuration * 4, kVideoTrackNum, kVideoBlockDuration));
2251 2253
2252 ASSERT_TRUE(demuxer_->SetTimestampOffset(audio_id, -2.5)); 2254 ASSERT_TRUE(demuxer_->SetTimestampOffset(
2253 ASSERT_TRUE(demuxer_->SetTimestampOffset(video_id, -2.5)); 2255 audio_id, base::TimeDelta::FromMilliseconds(-2500)));
2256 ASSERT_TRUE(demuxer_->SetTimestampOffset(
2257 video_id, base::TimeDelta::FromMilliseconds(-2500)));
2254 ASSERT_TRUE(AppendData(audio_id, cluster_a1->data(), cluster_a1->size())); 2258 ASSERT_TRUE(AppendData(audio_id, cluster_a1->data(), cluster_a1->size()));
2255 ASSERT_TRUE(AppendData(video_id, cluster_v1->data(), cluster_v1->size())); 2259 ASSERT_TRUE(AppendData(video_id, cluster_v1->data(), cluster_v1->size()));
2256 GenerateSingleStreamExpectedReads(0, 4, audio, kAudioBlockDuration); 2260 GenerateSingleStreamExpectedReads(0, 4, audio, kAudioBlockDuration);
2257 GenerateSingleStreamExpectedReads(0, 4, video, kVideoBlockDuration); 2261 GenerateSingleStreamExpectedReads(0, 4, video, kVideoBlockDuration);
2258 2262
2259 demuxer_->StartWaitingForSeek(); 2263 demuxer_->StartWaitingForSeek();
2260 demuxer_->Seek(base::TimeDelta::FromMilliseconds(27300), 2264 demuxer_->Seek(base::TimeDelta::FromMilliseconds(27300),
2261 NewExpectedStatusCB(PIPELINE_OK)); 2265 NewExpectedStatusCB(PIPELINE_OK));
2262 2266
2263 ASSERT_TRUE(demuxer_->SetTimestampOffset(audio_id, 27.3)); 2267 ASSERT_TRUE(demuxer_->SetTimestampOffset(
2264 ASSERT_TRUE(demuxer_->SetTimestampOffset(video_id, 27.3)); 2268 audio_id, base::TimeDelta::FromMilliseconds(27300)));
2269 ASSERT_TRUE(demuxer_->SetTimestampOffset(
2270 video_id, base::TimeDelta::FromMilliseconds(27300)));
2265 ASSERT_TRUE(AppendData(audio_id, cluster_a2->data(), cluster_a2->size())); 2271 ASSERT_TRUE(AppendData(audio_id, cluster_a2->data(), cluster_a2->size()));
2266 ASSERT_TRUE(AppendData(video_id, cluster_v2->data(), cluster_v2->size())); 2272 ASSERT_TRUE(AppendData(video_id, cluster_v2->data(), cluster_v2->size()));
2267 GenerateSingleStreamExpectedReads(27300, 4, video, kVideoBlockDuration); 2273 GenerateSingleStreamExpectedReads(27300, 4, video, kVideoBlockDuration);
2268 GenerateSingleStreamExpectedReads(27300, 4, audio, kAudioBlockDuration); 2274 GenerateSingleStreamExpectedReads(27300, 4, audio, kAudioBlockDuration);
2269 } 2275 }
2270 2276
2271 TEST_F(ChunkDemuxerTest, TestTimestampOffsetMidParse) { 2277 TEST_F(ChunkDemuxerTest, TestTimestampOffsetMidParse) {
2272 ASSERT_TRUE(InitDemuxer(true, true, false)); 2278 ASSERT_TRUE(InitDemuxer(true, true, false));
2273 2279
2274 scoped_ptr<Cluster> cluster = GenerateCluster(0, 2); 2280 scoped_ptr<Cluster> cluster = GenerateCluster(0, 2);
2275 // Append only part of the cluster data. 2281 // Append only part of the cluster data.
2276 ASSERT_TRUE(AppendData(cluster->data(), cluster->size() - 13)); 2282 ASSERT_TRUE(AppendData(cluster->data(), cluster->size() - 13));
2277 2283
2278 // Setting a timestamp should fail because we're in the middle of a cluster. 2284 // Setting a timestamp should fail because we're in the middle of a cluster.
2279 ASSERT_FALSE(demuxer_->SetTimestampOffset(kSourceId, 25)); 2285 ASSERT_FALSE(demuxer_->SetTimestampOffset(
2286 kSourceId, base::TimeDelta::FromSeconds(25)));
2280 } 2287 }
2281 2288
2282 TEST_F(ChunkDemuxerTest, TestDurationChange) { 2289 TEST_F(ChunkDemuxerTest, TestDurationChange) {
2283 ASSERT_TRUE(InitDemuxer(true, true, false)); 2290 ASSERT_TRUE(InitDemuxer(true, true, false));
2284 static const int kStreamDuration = kDefaultDuration().InMilliseconds(); 2291 static const int kStreamDuration = kDefaultDuration().InMilliseconds();
2285 2292
2286 // Add data leading up to the currently set duration. 2293 // Add data leading up to the currently set duration.
2287 scoped_ptr<Cluster> first_cluster = GenerateCluster( 2294 scoped_ptr<Cluster> first_cluster = GenerateCluster(
2288 kStreamDuration - kAudioBlockDuration, 2295 kStreamDuration - kAudioBlockDuration,
2289 kStreamDuration - kVideoBlockDuration, 2); 2296 kStreamDuration - kVideoBlockDuration, 2);
(...skipping 19 matching lines...) Expand all
2309 base::TimeDelta::FromMilliseconds(kNewStreamDuration))); 2316 base::TimeDelta::FromMilliseconds(kNewStreamDuration)));
2310 ASSERT_TRUE(AppendData(third_cluster->data(), third_cluster->size())); 2317 ASSERT_TRUE(AppendData(third_cluster->data(), third_cluster->size()));
2311 2318
2312 // See that the range has increased appropriately. 2319 // See that the range has increased appropriately.
2313 CheckExpectedRanges(kSourceId, "{ [201191,201270) }"); 2320 CheckExpectedRanges(kSourceId, "{ [201191,201270) }");
2314 } 2321 }
2315 2322
2316 TEST_F(ChunkDemuxerTest, TestDurationChangeTimestampOffset) { 2323 TEST_F(ChunkDemuxerTest, TestDurationChangeTimestampOffset) {
2317 ASSERT_TRUE(InitDemuxer(true, true, false)); 2324 ASSERT_TRUE(InitDemuxer(true, true, false));
2318 2325
2319 ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, 2326 ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, kDefaultDuration()));
2320 kDefaultDuration().InSecondsF()));
2321 scoped_ptr<Cluster> cluster = GenerateCluster(0, 4); 2327 scoped_ptr<Cluster> cluster = GenerateCluster(0, 4);
2322 2328
2323 EXPECT_CALL(host_, SetDuration( 2329 EXPECT_CALL(host_, SetDuration(
2324 kDefaultDuration() + base::TimeDelta::FromMilliseconds( 2330 kDefaultDuration() + base::TimeDelta::FromMilliseconds(
2325 kAudioBlockDuration * 2))); 2331 kAudioBlockDuration * 2)));
2326 ASSERT_TRUE(AppendData(cluster->data(), cluster->size())); 2332 ASSERT_TRUE(AppendData(cluster->data(), cluster->size()));
2327 } 2333 }
2328 2334
2329 TEST_F(ChunkDemuxerTest, TestEndOfStreamTruncateDuration) { 2335 TEST_F(ChunkDemuxerTest, TestEndOfStreamTruncateDuration) {
2330 ASSERT_TRUE(InitDemuxer(true, true, false)); 2336 ASSERT_TRUE(InitDemuxer(true, true, false));
2331 2337
2332 scoped_ptr<Cluster> cluster_a(kDefaultFirstCluster()); 2338 scoped_ptr<Cluster> cluster_a(kDefaultFirstCluster());
2333 ASSERT_TRUE(AppendData(cluster_a->data(), cluster_a->size())); 2339 ASSERT_TRUE(AppendData(cluster_a->data(), cluster_a->size()));
2334 2340
2335 EXPECT_CALL(host_, SetDuration( 2341 EXPECT_CALL(host_, SetDuration(
2336 base::TimeDelta::FromMilliseconds(kDefaultFirstClusterEndTimestamp))); 2342 base::TimeDelta::FromMilliseconds(kDefaultFirstClusterEndTimestamp)));
2337 demuxer_->EndOfStream(PIPELINE_OK); 2343 demuxer_->EndOfStream(PIPELINE_OK);
2338 } 2344 }
2339 2345
2340 } // namespace media 2346 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698