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

Side by Side Diff: media/base/android/media_codec_decoder_unittest.cc

Issue 1184373005: MediaCodecPlayer (stage 1 - play/pause only) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mtplayer-decoder
Patch Set: Restored state machine diagrams Created 5 years, 6 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/logging.h" 6 #include "base/logging.h"
7 #include "base/thread_task_runner_handle.h" 7 #include "base/thread_task_runner_handle.h"
8 #include "base/timer/timer.h" 8 #include "base/timer/timer.h"
9 #include "media/base/android/media_codec_audio_decoder.h" 9 #include "media/base/android/media_codec_audio_decoder.h"
10 #include "media/base/android/media_codec_bridge.h" 10 #include "media/base/android/media_codec_bridge.h"
(...skipping 15 matching lines...) Expand all
26 26
27 namespace { 27 namespace {
28 28
29 const base::TimeDelta kDefaultTimeout = base::TimeDelta::FromMilliseconds(200); 29 const base::TimeDelta kDefaultTimeout = base::TimeDelta::FromMilliseconds(200);
30 const base::TimeDelta kAudioFramePeriod = base::TimeDelta::FromMilliseconds(20); 30 const base::TimeDelta kAudioFramePeriod = base::TimeDelta::FromMilliseconds(20);
31 const base::TimeDelta kVideoFramePeriod = base::TimeDelta::FromMilliseconds(20); 31 const base::TimeDelta kVideoFramePeriod = base::TimeDelta::FromMilliseconds(20);
32 32
33 class AudioFactory : public TestDataFactory { 33 class AudioFactory : public TestDataFactory {
34 public: 34 public:
35 AudioFactory(const base::TimeDelta& duration); 35 AudioFactory(const base::TimeDelta& duration);
36 DemuxerConfigs GetConfigs() override; 36 DemuxerConfigs GetConfigs() const override;
37 37
38 protected: 38 protected:
39 void ModifyAccessUnit(int index_in_chunk, AccessUnit* unit) override; 39 void ModifyAccessUnit(int index_in_chunk, AccessUnit* unit) override;
40 }; 40 };
41 41
42 class VideoFactory : public TestDataFactory { 42 class VideoFactory : public TestDataFactory {
43 public: 43 public:
44 VideoFactory(const base::TimeDelta& duration); 44 VideoFactory(const base::TimeDelta& duration);
45 DemuxerConfigs GetConfigs() override; 45 DemuxerConfigs GetConfigs() const override;
46 46
47 protected: 47 protected:
48 void ModifyAccessUnit(int index_in_chunk, AccessUnit* unit) override; 48 void ModifyAccessUnit(int index_in_chunk, AccessUnit* unit) override;
49 }; 49 };
50 50
51 AudioFactory::AudioFactory(const base::TimeDelta& duration) 51 AudioFactory::AudioFactory(const base::TimeDelta& duration)
52 : TestDataFactory("vorbis-packet-%d", duration, kAudioFramePeriod) { 52 : TestDataFactory("vorbis-packet-%d", duration, kAudioFramePeriod) {
53 } 53 }
54 54
55 DemuxerConfigs AudioFactory::GetConfigs() { 55 DemuxerConfigs AudioFactory::GetConfigs() const {
56 return TestDataFactory::CreateAudioConfigs(kCodecVorbis, duration_); 56 return TestDataFactory::CreateAudioConfigs(kCodecVorbis, duration_);
57 } 57 }
58 58
59 void AudioFactory::ModifyAccessUnit(int index_in_chunk, AccessUnit* unit) { 59 void AudioFactory::ModifyAccessUnit(int index_in_chunk, AccessUnit* unit) {
60 // Vorbis needs 4 extra bytes padding on Android to decode properly. Check 60 // Vorbis needs 4 extra bytes padding on Android to decode properly. Check
61 // NuMediaExtractor.cpp in Android source code. 61 // NuMediaExtractor.cpp in Android source code.
62 uint8 padding[4] = {0xff, 0xff, 0xff, 0xff}; 62 uint8 padding[4] = {0xff, 0xff, 0xff, 0xff};
63 unit->data.insert(unit->data.end(), padding, padding + 4); 63 unit->data.insert(unit->data.end(), padding, padding + 4);
64 } 64 }
65 65
66 VideoFactory::VideoFactory(const base::TimeDelta& duration) 66 VideoFactory::VideoFactory(const base::TimeDelta& duration)
67 : TestDataFactory("h264-320x180-frame-%d", duration, kVideoFramePeriod) { 67 : TestDataFactory("h264-320x180-frame-%d", duration, kVideoFramePeriod) {
68 } 68 }
69 69
70 DemuxerConfigs VideoFactory::GetConfigs() { 70 DemuxerConfigs VideoFactory::GetConfigs() const {
71 return TestDataFactory::CreateVideoConfigs(kCodecH264, duration_, 71 return TestDataFactory::CreateVideoConfigs(kCodecH264, duration_,
72 gfx::Size(320, 180)); 72 gfx::Size(320, 180));
73 } 73 }
74 74
75 void VideoFactory::ModifyAccessUnit(int index_in_chunk, AccessUnit* unit) { 75 void VideoFactory::ModifyAccessUnit(int index_in_chunk, AccessUnit* unit) {
76 // The frames are taken from High profile and some are B-frames. 76 // The frames are taken from High profile and some are B-frames.
77 // The first 4 frames appear in the file in the following order: 77 // The first 4 frames appear in the file in the following order:
78 // 78 //
79 // Frames: I P B P 79 // Frames: I P B P
80 // Decoding order: 0 1 2 3 80 // Decoding order: 0 1 2 3
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 timeout)); 513 timeout));
514 514
515 EXPECT_TRUE(decoder_->IsStopped()); 515 EXPECT_TRUE(decoder_->IsStopped());
516 EXPECT_TRUE(decoder_->IsCompleted()); 516 EXPECT_TRUE(decoder_->IsCompleted());
517 517
518 EXPECT_EQ(26, pts_stat_.num_values()); 518 EXPECT_EQ(26, pts_stat_.num_values());
519 EXPECT_EQ(data_factory_->last_pts(), pts_stat_.max()); 519 EXPECT_EQ(data_factory_->last_pts(), pts_stat_.max());
520 } 520 }
521 521
522 } // namespace media 522 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698