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

Side by Side Diff: chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc

Issue 2710133003: Replace FFmpegDemuxer thread per element with base::TaskScheduler. (Closed)
Patch Set: Give WeakPtr to URLProtocol. Created 3 years, 9 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
« no previous file with comments | « no previous file | media/base/demuxer_perftest.cc » ('j') | media/filters/ffmpeg_demuxer.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include <limits> 7 #include <limits>
8 #include <memory> 8 #include <memory>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/files/file_path.h" 13 #include "base/files/file_path.h"
14 #include "base/files/memory_mapped_file.h" 14 #include "base/files/memory_mapped_file.h"
15 #include "base/logging.h" 15 #include "base/logging.h"
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
18 #include "base/memory/ref_counted.h" 18 #include "base/memory/ref_counted.h"
19 #include "base/memory/scoped_vector.h" 19 #include "base/memory/scoped_vector.h"
20 #include "base/message_loop/message_loop.h" 20 #include "base/message_loop/message_loop.h"
21 #include "base/path_service.h" 21 #include "base/path_service.h"
22 #include "base/run_loop.h" 22 #include "base/run_loop.h"
23 #include "base/single_thread_task_runner.h" 23 #include "base/single_thread_task_runner.h"
24 #include "base/test/scoped_task_scheduler.h"
24 #include "base/threading/thread.h" 25 #include "base/threading/thread.h"
25 #include "base/threading/thread_checker.h" 26 #include "base/threading/thread_checker.h"
26 #include "base/threading/thread_task_runner_handle.h" 27 #include "base/threading/thread_task_runner_handle.h"
27 #include "base/time/time.h" 28 #include "base/time/time.h"
28 #include "chromecast/base/task_runner_impl.h" 29 #include "chromecast/base/task_runner_impl.h"
29 #include "chromecast/media/cma/base/decoder_buffer_adapter.h" 30 #include "chromecast/media/cma/base/decoder_buffer_adapter.h"
30 #include "chromecast/media/cma/base/decoder_config_adapter.h" 31 #include "chromecast/media/cma/base/decoder_config_adapter.h"
31 #include "chromecast/media/cma/test/frame_segmenter_for_test.h" 32 #include "chromecast/media/cma/test/frame_segmenter_for_test.h"
32 #include "chromecast/public/cast_media_shlib.h" 33 #include "chromecast/public/cast_media_shlib.h"
33 #include "chromecast/public/media/cast_decoder_buffer.h" 34 #include "chromecast/public/media/cast_decoder_buffer.h"
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 void RunPlaybackChecks(); 226 void RunPlaybackChecks();
226 void TestBackendStates(); 227 void TestBackendStates();
227 void StartImmediateEosTest(); 228 void StartImmediateEosTest();
228 void EndImmediateEosTest(); 229 void EndImmediateEosTest();
229 230
230 private: 231 private:
231 void MonitorLoop(); 232 void MonitorLoop();
232 233
233 void OnPauseCompleted(); 234 void OnPauseCompleted();
234 235
236 base::test::ScopedTaskScheduler task_scheduler_;
235 MediaPipelineDeviceParams::MediaSyncType sync_type_; 237 MediaPipelineDeviceParams::MediaSyncType sync_type_;
236 MediaPipelineDeviceParams::AudioStreamType audio_type_; 238 MediaPipelineDeviceParams::AudioStreamType audio_type_;
237 std::unique_ptr<TaskRunnerImpl> task_runner_; 239 std::unique_ptr<TaskRunnerImpl> task_runner_;
238 std::unique_ptr<MediaPipelineBackend> backend_; 240 std::unique_ptr<MediaPipelineBackend> backend_;
239 std::vector<std::unique_ptr<MediaPipelineBackend>> effects_backends_; 241 std::vector<std::unique_ptr<MediaPipelineBackend>> effects_backends_;
240 std::vector<std::unique_ptr<BufferFeeder>> effects_feeders_; 242 std::vector<std::unique_ptr<BufferFeeder>> effects_feeders_;
241 std::unique_ptr<BufferFeeder> audio_feeder_; 243 std::unique_ptr<BufferFeeder> audio_feeder_;
242 std::unique_ptr<BufferFeeder> video_feeder_; 244 std::unique_ptr<BufferFeeder> video_feeder_;
243 bool stopped_; 245 bool stopped_;
244 bool ran_playing_playback_checks_; 246 bool ran_playing_playback_checks_;
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 898
897 backend_->Stop(); 899 backend_->Stop();
898 base::RunLoop().RunUntilIdle(); 900 base::RunLoop().RunUntilIdle();
899 901
900 RunStoppedChecks(); 902 RunStoppedChecks();
901 903
902 base::MessageLoop::current()->QuitWhenIdle(); 904 base::MessageLoop::current()->QuitWhenIdle();
903 } 905 }
904 906
905 TEST_F(AudioVideoPipelineDeviceTest, Mp3Playback) { 907 TEST_F(AudioVideoPipelineDeviceTest, Mp3Playback) {
906 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
907
908 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 908 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
909 ConfigureForAudioOnly("sfx.mp3"); 909 ConfigureForAudioOnly("sfx.mp3");
910 PauseBeforeEos(); 910 PauseBeforeEos();
911 Start(); 911 Start();
912 base::RunLoop().Run(); 912 base::RunLoop().Run();
913 } 913 }
914 914
915 TEST_F(AudioVideoPipelineDeviceTest, AacPlayback) { 915 TEST_F(AudioVideoPipelineDeviceTest, AacPlayback) {
916 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
917
918 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 916 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
919 ConfigureForAudioOnly("sfx.m4a"); 917 ConfigureForAudioOnly("sfx.m4a");
920 PauseBeforeEos(); 918 PauseBeforeEos();
921 Start(); 919 Start();
922 base::RunLoop().Run(); 920 base::RunLoop().Run();
923 } 921 }
924 922
925 TEST_F(AudioVideoPipelineDeviceTest, VorbisPlayback) { 923 TEST_F(AudioVideoPipelineDeviceTest, VorbisPlayback) {
926 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
927
928 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts); 924 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts);
929 ConfigureForAudioOnly("sfx.ogg"); 925 ConfigureForAudioOnly("sfx.ogg");
930 Start(); 926 Start();
931 base::RunLoop().Run(); 927 base::RunLoop().Run();
932 } 928 }
933 929
934 // TODO(kmackay) FFmpegDemuxForTest can't handle AC3 or EAC3. 930 // TODO(kmackay) FFmpegDemuxForTest can't handle AC3 or EAC3.
935 931
936 TEST_F(AudioVideoPipelineDeviceTest, OpusPlayback_Optional) { 932 TEST_F(AudioVideoPipelineDeviceTest, OpusPlayback_Optional) {
937 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
938
939 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 933 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
940 ConfigureForAudioOnly("bear-opus.ogg"); 934 ConfigureForAudioOnly("bear-opus.ogg");
941 PauseBeforeEos(); 935 PauseBeforeEos();
942 Start(); 936 Start();
943 base::RunLoop().Run(); 937 base::RunLoop().Run();
944 } 938 }
945 939
946 TEST_F(AudioVideoPipelineDeviceTest, FlacPlayback_Optional) { 940 TEST_F(AudioVideoPipelineDeviceTest, FlacPlayback_Optional) {
947 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
948
949 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 941 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
950 ConfigureForAudioOnly("bear.flac"); 942 ConfigureForAudioOnly("bear.flac");
951 PauseBeforeEos(); 943 PauseBeforeEos();
952 Start(); 944 Start();
953 base::RunLoop().Run(); 945 base::RunLoop().Run();
954 } 946 }
955 947
956 TEST_F(AudioVideoPipelineDeviceTest, H264Playback) { 948 TEST_F(AudioVideoPipelineDeviceTest, H264Playback) {
957 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
958
959 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 949 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
960 ConfigureForVideoOnly("bear.h264", true /* raw_h264 */); 950 ConfigureForVideoOnly("bear.h264", true /* raw_h264 */);
961 PauseBeforeEos(); 951 PauseBeforeEos();
962 Start(); 952 Start();
963 base::RunLoop().Run(); 953 base::RunLoop().Run();
964 } 954 }
965 955
966 TEST_F(AudioVideoPipelineDeviceTest, WebmPlaybackWithPause) { 956 TEST_F(AudioVideoPipelineDeviceTest, WebmPlaybackWithPause) {
967 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
968
969 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 957 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
970 // Setup to pause for 100ms every 500ms 958 // Setup to pause for 100ms every 500ms
971 AddPause(base::TimeDelta::FromMilliseconds(500), 959 AddPause(base::TimeDelta::FromMilliseconds(500),
972 base::TimeDelta::FromMilliseconds(100)); 960 base::TimeDelta::FromMilliseconds(100));
973 961
974 ConfigureForVideoOnly("bear-640x360.webm", false /* raw_h264 */); 962 ConfigureForVideoOnly("bear-640x360.webm", false /* raw_h264 */);
975 Start(); 963 Start();
976 base::RunLoop().Run(); 964 base::RunLoop().Run();
977 } 965 }
978 966
979 TEST_F(AudioVideoPipelineDeviceTest, Vp8Playback) { 967 TEST_F(AudioVideoPipelineDeviceTest, Vp8Playback) {
980 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
981
982 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 968 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
983 ConfigureForVideoOnly("bear-vp8a.webm", false /* raw_h264 */); 969 ConfigureForVideoOnly("bear-vp8a.webm", false /* raw_h264 */);
984 Start(); 970 Start();
985 base::RunLoop().Run(); 971 base::RunLoop().Run();
986 } 972 }
987 973
988 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback) { 974 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback) {
989 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
990
991 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 975 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
992 ConfigureForFile("bear-640x360.webm"); 976 ConfigureForFile("bear-640x360.webm");
993 PauseBeforeEos(); 977 PauseBeforeEos();
994 Start(); 978 Start();
995 base::RunLoop().Run(); 979 base::RunLoop().Run();
996 } 980 }
997 981
998 // TODO(kmackay) FFmpegDemuxForTest can't handle HEVC or VP9. 982 // TODO(kmackay) FFmpegDemuxForTest can't handle HEVC or VP9.
999 983
1000 TEST_F(AudioVideoPipelineDeviceTest, AudioBackendStates) { 984 TEST_F(AudioVideoPipelineDeviceTest, AudioBackendStates) {
1001 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1002 Initialize(); 985 Initialize();
1003 MediaPipelineBackend::AudioDecoder* audio_decoder = 986 MediaPipelineBackend::AudioDecoder* audio_decoder =
1004 backend()->CreateAudioDecoder(); 987 backend()->CreateAudioDecoder();
1005 988
1006 // Test setting config before Initialize(). 989 // Test setting config before Initialize().
1007 std::unique_ptr<BufferFeeder> feeder( 990 std::unique_ptr<BufferFeeder> feeder(
1008 new BufferFeeder(base::Bind(&IgnoreEos))); 991 new BufferFeeder(base::Bind(&IgnoreEos)));
1009 feeder->Initialize(backend(), audio_decoder, BufferList()); 992 feeder->Initialize(backend(), audio_decoder, BufferList());
1010 feeder->SetAudioConfig(DefaultAudioConfig()); 993 feeder->SetAudioConfig(DefaultAudioConfig());
1011 feeder->TestAudioConfigs(); 994 feeder->TestAudioConfigs();
1012 995
1013 SetAudioFeeder(std::move(feeder)); 996 SetAudioFeeder(std::move(feeder));
1014 TestBackendStates(); 997 TestBackendStates();
1015 } 998 }
1016 999
1017 TEST_F(AudioVideoPipelineDeviceTest, AudioEffectsBackendStates) { 1000 TEST_F(AudioVideoPipelineDeviceTest, AudioEffectsBackendStates) {
1018 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1019 set_audio_type(MediaPipelineDeviceParams::kAudioStreamSoundEffects); 1001 set_audio_type(MediaPipelineDeviceParams::kAudioStreamSoundEffects);
1020 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts); 1002 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts);
1021 Initialize(); 1003 Initialize();
1022 MediaPipelineBackend::AudioDecoder* audio_decoder = 1004 MediaPipelineBackend::AudioDecoder* audio_decoder =
1023 backend()->CreateAudioDecoder(); 1005 backend()->CreateAudioDecoder();
1024 1006
1025 std::unique_ptr<BufferFeeder> feeder( 1007 std::unique_ptr<BufferFeeder> feeder(
1026 new BufferFeeder(base::Bind(&IgnoreEos))); 1008 new BufferFeeder(base::Bind(&IgnoreEos)));
1027 feeder->Initialize(backend(), audio_decoder, BufferList()); 1009 feeder->Initialize(backend(), audio_decoder, BufferList());
1028 feeder->SetAudioConfig(DefaultAudioConfig()); 1010 feeder->SetAudioConfig(DefaultAudioConfig());
1029 ASSERT_TRUE(audio_decoder->SetConfig(DefaultAudioConfig())); 1011 ASSERT_TRUE(audio_decoder->SetConfig(DefaultAudioConfig()));
1030 1012
1031 SetAudioFeeder(std::move(feeder)); 1013 SetAudioFeeder(std::move(feeder));
1032 TestBackendStates(); 1014 TestBackendStates();
1033 } 1015 }
1034 1016
1035 TEST_F(AudioVideoPipelineDeviceTest, VideoBackendStates) { 1017 TEST_F(AudioVideoPipelineDeviceTest, VideoBackendStates) {
1036 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1037 Initialize(); 1018 Initialize();
1038 MediaPipelineBackend::VideoDecoder* video_decoder = 1019 MediaPipelineBackend::VideoDecoder* video_decoder =
1039 backend()->CreateVideoDecoder(); 1020 backend()->CreateVideoDecoder();
1040 1021
1041 // Test setting config before Initialize(). 1022 // Test setting config before Initialize().
1042 std::unique_ptr<BufferFeeder> feeder( 1023 std::unique_ptr<BufferFeeder> feeder(
1043 new BufferFeeder(base::Bind(&IgnoreEos))); 1024 new BufferFeeder(base::Bind(&IgnoreEos)));
1044 feeder->Initialize(backend(), video_decoder, BufferList()); 1025 feeder->Initialize(backend(), video_decoder, BufferList());
1045 feeder->SetVideoConfig(DefaultVideoConfig()); 1026 feeder->SetVideoConfig(DefaultVideoConfig());
1046 feeder->TestVideoConfigs(); 1027 feeder->TestVideoConfigs();
1047 1028
1048 SetVideoFeeder(std::move(feeder)); 1029 SetVideoFeeder(std::move(feeder));
1049 TestBackendStates(); 1030 TestBackendStates();
1050 } 1031 }
1051 1032
1052 TEST_F(AudioVideoPipelineDeviceTest, AudioImmediateEos) { 1033 TEST_F(AudioVideoPipelineDeviceTest, AudioImmediateEos) {
1053 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1054 Initialize(); 1034 Initialize();
1055 MediaPipelineBackend::AudioDecoder* audio_decoder = 1035 MediaPipelineBackend::AudioDecoder* audio_decoder =
1056 backend()->CreateAudioDecoder(); 1036 backend()->CreateAudioDecoder();
1057 1037
1058 std::unique_ptr<BufferFeeder> feeder(new BufferFeeder( 1038 std::unique_ptr<BufferFeeder> feeder(new BufferFeeder(
1059 base::Bind(&AudioVideoPipelineDeviceTest::EndImmediateEosTest, 1039 base::Bind(&AudioVideoPipelineDeviceTest::EndImmediateEosTest,
1060 base::Unretained(this)))); 1040 base::Unretained(this))));
1061 feeder->Initialize(backend(), audio_decoder, BufferList()); 1041 feeder->Initialize(backend(), audio_decoder, BufferList());
1062 feeder->SetAudioConfig(DefaultAudioConfig()); 1042 feeder->SetAudioConfig(DefaultAudioConfig());
1063 SetAudioFeeder(std::move(feeder)); 1043 SetAudioFeeder(std::move(feeder));
1064 1044
1065 StartImmediateEosTest(); 1045 StartImmediateEosTest();
1046 base::RunLoop().RunUntilIdle();
1066 } 1047 }
1067 1048
1068 TEST_F(AudioVideoPipelineDeviceTest, VideoImmediateEos) { 1049 TEST_F(AudioVideoPipelineDeviceTest, VideoImmediateEos) {
1069 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1070 Initialize(); 1050 Initialize();
1071 MediaPipelineBackend::VideoDecoder* video_decoder = 1051 MediaPipelineBackend::VideoDecoder* video_decoder =
1072 backend()->CreateVideoDecoder(); 1052 backend()->CreateVideoDecoder();
1073 1053
1074 std::unique_ptr<BufferFeeder> feeder(new BufferFeeder( 1054 std::unique_ptr<BufferFeeder> feeder(new BufferFeeder(
1075 base::Bind(&AudioVideoPipelineDeviceTest::EndImmediateEosTest, 1055 base::Bind(&AudioVideoPipelineDeviceTest::EndImmediateEosTest,
1076 base::Unretained(this)))); 1056 base::Unretained(this))));
1077 feeder->Initialize(backend(), video_decoder, BufferList()); 1057 feeder->Initialize(backend(), video_decoder, BufferList());
1078 feeder->SetVideoConfig(DefaultVideoConfig()); 1058 feeder->SetVideoConfig(DefaultVideoConfig());
1079 SetVideoFeeder(std::move(feeder)); 1059 SetVideoFeeder(std::move(feeder));
1080 1060
1081 StartImmediateEosTest(); 1061 StartImmediateEosTest();
1062 base::RunLoop().RunUntilIdle();
1082 } 1063 }
1083 1064
1084 TEST_F(AudioVideoPipelineDeviceTest, Mp3Playback_WithEffectsStreams) { 1065 TEST_F(AudioVideoPipelineDeviceTest, Mp3Playback_WithEffectsStreams) {
1085 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1086
1087 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 1066 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
1088 ConfigureForAudioOnly("sfx.mp3"); 1067 ConfigureForAudioOnly("sfx.mp3");
1089 PauseBeforeEos(); 1068 PauseBeforeEos();
1090 AddEffectsStreams(); 1069 AddEffectsStreams();
1091 Start(); 1070 Start();
1092 base::RunLoop().Run(); 1071 base::RunLoop().Run();
1093 } 1072 }
1094 1073
1095 TEST_F(AudioVideoPipelineDeviceTest, AacPlayback_WithEffectsStreams) { 1074 TEST_F(AudioVideoPipelineDeviceTest, AacPlayback_WithEffectsStreams) {
1096 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1097
1098 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 1075 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
1099 ConfigureForAudioOnly("sfx.m4a"); 1076 ConfigureForAudioOnly("sfx.m4a");
1100 PauseBeforeEos(); 1077 PauseBeforeEos();
1101 AddEffectsStreams(); 1078 AddEffectsStreams();
1102 Start(); 1079 Start();
1103 base::RunLoop().Run(); 1080 base::RunLoop().Run();
1104 } 1081 }
1105 1082
1106 TEST_F(AudioVideoPipelineDeviceTest, VorbisPlayback_WithEffectsStreams) { 1083 TEST_F(AudioVideoPipelineDeviceTest, VorbisPlayback_WithEffectsStreams) {
1107 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1108
1109 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts); 1084 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts);
1110 ConfigureForAudioOnly("sfx.ogg"); 1085 ConfigureForAudioOnly("sfx.ogg");
1111 AddEffectsStreams(); 1086 AddEffectsStreams();
1112 Start(); 1087 Start();
1113 base::RunLoop().Run(); 1088 base::RunLoop().Run();
1114 } 1089 }
1115 1090
1116 // TODO(kmackay) FFmpegDemuxForTest can't handle AC3 or EAC3. 1091 // TODO(kmackay) FFmpegDemuxForTest can't handle AC3 or EAC3.
1117 1092
1118 TEST_F(AudioVideoPipelineDeviceTest, OpusPlayback_WithEffectsStreams_Optional) { 1093 TEST_F(AudioVideoPipelineDeviceTest, OpusPlayback_WithEffectsStreams_Optional) {
1119 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1120
1121 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 1094 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
1122 ConfigureForAudioOnly("bear-opus.ogg"); 1095 ConfigureForAudioOnly("bear-opus.ogg");
1123 PauseBeforeEos(); 1096 PauseBeforeEos();
1124 AddEffectsStreams(); 1097 AddEffectsStreams();
1125 Start(); 1098 Start();
1126 base::RunLoop().Run(); 1099 base::RunLoop().Run();
1127 } 1100 }
1128 1101
1129 TEST_F(AudioVideoPipelineDeviceTest, FlacPlayback_WithEffectsStreams_Optional) { 1102 TEST_F(AudioVideoPipelineDeviceTest, FlacPlayback_WithEffectsStreams_Optional) {
1130 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1131
1132 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 1103 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
1133 ConfigureForAudioOnly("bear.flac"); 1104 ConfigureForAudioOnly("bear.flac");
1134 PauseBeforeEos(); 1105 PauseBeforeEos();
1135 AddEffectsStreams(); 1106 AddEffectsStreams();
1136 Start(); 1107 Start();
1137 base::RunLoop().Run(); 1108 base::RunLoop().Run();
1138 } 1109 }
1139 1110
1140 TEST_F(AudioVideoPipelineDeviceTest, H264Playback_WithEffectsStreams) { 1111 TEST_F(AudioVideoPipelineDeviceTest, H264Playback_WithEffectsStreams) {
1141 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1142
1143 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 1112 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
1144 ConfigureForVideoOnly("bear.h264", true /* raw_h264 */); 1113 ConfigureForVideoOnly("bear.h264", true /* raw_h264 */);
1145 PauseBeforeEos(); 1114 PauseBeforeEos();
1146 AddEffectsStreams(); 1115 AddEffectsStreams();
1147 Start(); 1116 Start();
1148 base::RunLoop().Run(); 1117 base::RunLoop().Run();
1149 } 1118 }
1150 1119
1151 TEST_F(AudioVideoPipelineDeviceTest, WebmPlaybackWithPause_WithEffectsStreams) { 1120 TEST_F(AudioVideoPipelineDeviceTest, WebmPlaybackWithPause_WithEffectsStreams) {
1152 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1153
1154 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 1121 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
1155 // Setup to pause for 100ms every 500ms 1122 // Setup to pause for 100ms every 500ms
1156 AddPause(base::TimeDelta::FromMilliseconds(500), 1123 AddPause(base::TimeDelta::FromMilliseconds(500),
1157 base::TimeDelta::FromMilliseconds(100)); 1124 base::TimeDelta::FromMilliseconds(100));
1158 1125
1159 ConfigureForVideoOnly("bear-640x360.webm", false /* raw_h264 */); 1126 ConfigureForVideoOnly("bear-640x360.webm", false /* raw_h264 */);
1160 AddEffectsStreams(); 1127 AddEffectsStreams();
1161 Start(); 1128 Start();
1162 base::RunLoop().Run(); 1129 base::RunLoop().Run();
1163 } 1130 }
1164 1131
1165 TEST_F(AudioVideoPipelineDeviceTest, Vp8Playback_WithEffectsStreams) { 1132 TEST_F(AudioVideoPipelineDeviceTest, Vp8Playback_WithEffectsStreams) {
1166 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1167
1168 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 1133 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
1169 ConfigureForVideoOnly("bear-vp8a.webm", false /* raw_h264 */); 1134 ConfigureForVideoOnly("bear-vp8a.webm", false /* raw_h264 */);
1170 AddEffectsStreams(); 1135 AddEffectsStreams();
1171 Start(); 1136 Start();
1172 base::RunLoop().Run(); 1137 base::RunLoop().Run();
1173 } 1138 }
1174 1139
1175 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback_WithEffectsStreams) { 1140 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback_WithEffectsStreams) {
1176 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
1177
1178 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); 1141 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts);
1179 ConfigureForFile("bear-640x360.webm"); 1142 ConfigureForFile("bear-640x360.webm");
1180 PauseBeforeEos(); 1143 PauseBeforeEos();
1181 AddEffectsStreams(); 1144 AddEffectsStreams();
1182 Start(); 1145 Start();
1183 base::RunLoop().Run(); 1146 base::RunLoop().Run();
1184 } 1147 }
1185 1148
1186 } // namespace media 1149 } // namespace media
1187 } // namespace chromecast 1150 } // namespace chromecast
OLDNEW
« no previous file with comments | « no previous file | media/base/demuxer_perftest.cc » ('j') | media/filters/ffmpeg_demuxer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698