| 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 <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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |