| 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/single_thread_task_runner.h" | 23 #include "base/single_thread_task_runner.h" |
| 23 #include "base/threading/thread.h" | 24 #include "base/threading/thread.h" |
| 24 #include "base/threading/thread_checker.h" | 25 #include "base/threading/thread_checker.h" |
| 25 #include "base/threading/thread_task_runner_handle.h" | 26 #include "base/threading/thread_task_runner_handle.h" |
| 26 #include "base/time/time.h" | 27 #include "base/time/time.h" |
| 27 #include "chromecast/base/task_runner_impl.h" | 28 #include "chromecast/base/task_runner_impl.h" |
| 28 #include "chromecast/media/cma/base/decoder_buffer_adapter.h" | 29 #include "chromecast/media/cma/base/decoder_buffer_adapter.h" |
| 29 #include "chromecast/media/cma/base/decoder_config_adapter.h" | 30 #include "chromecast/media/cma/base/decoder_config_adapter.h" |
| 30 #include "chromecast/media/cma/test/frame_segmenter_for_test.h" | 31 #include "chromecast/media/cma/test/frame_segmenter_for_test.h" |
| 31 #include "chromecast/public/cast_media_shlib.h" | 32 #include "chromecast/public/cast_media_shlib.h" |
| (...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 | 842 |
| 842 // Resume playback and frame feeding. | 843 // Resume playback and frame feeding. |
| 843 backend_->Resume(); | 844 backend_->Resume(); |
| 844 RunPlaybackChecks(); | 845 RunPlaybackChecks(); |
| 845 | 846 |
| 846 MonitorLoop(); | 847 MonitorLoop(); |
| 847 } | 848 } |
| 848 | 849 |
| 849 void AudioVideoPipelineDeviceTest::TestBackendStates() { | 850 void AudioVideoPipelineDeviceTest::TestBackendStates() { |
| 850 ASSERT_TRUE(backend()->Initialize()); | 851 ASSERT_TRUE(backend()->Initialize()); |
| 851 base::MessageLoop::current()->RunUntilIdle(); | 852 base::RunLoop().RunUntilIdle(); |
| 852 | 853 |
| 853 RunStoppedChecks(); | 854 RunStoppedChecks(); |
| 854 base::MessageLoop::current()->RunUntilIdle(); | 855 base::RunLoop().RunUntilIdle(); |
| 855 | 856 |
| 856 const int64_t start_pts = 222; | 857 const int64_t start_pts = 222; |
| 857 ASSERT_TRUE(backend()->Start(start_pts)); | 858 ASSERT_TRUE(backend()->Start(start_pts)); |
| 858 base::MessageLoop::current()->RunUntilIdle(); | 859 base::RunLoop().RunUntilIdle(); |
| 859 RunPlaybackChecks(); | 860 RunPlaybackChecks(); |
| 860 | 861 |
| 861 ASSERT_TRUE(backend()->Pause()); | 862 ASSERT_TRUE(backend()->Pause()); |
| 862 base::MessageLoop::current()->RunUntilIdle(); | 863 base::RunLoop().RunUntilIdle(); |
| 863 RunPlaybackChecks(); | 864 RunPlaybackChecks(); |
| 864 | 865 |
| 865 ASSERT_TRUE(backend()->Resume()); | 866 ASSERT_TRUE(backend()->Resume()); |
| 866 base::MessageLoop::current()->RunUntilIdle(); | 867 base::RunLoop().RunUntilIdle(); |
| 867 RunPlaybackChecks(); | 868 RunPlaybackChecks(); |
| 868 | 869 |
| 869 ASSERT_TRUE(backend()->Stop()); | 870 ASSERT_TRUE(backend()->Stop()); |
| 870 base::MessageLoop::current()->RunUntilIdle(); | 871 base::RunLoop().RunUntilIdle(); |
| 871 | 872 |
| 872 RunStoppedChecks(); | 873 RunStoppedChecks(); |
| 873 base::MessageLoop::current()->RunUntilIdle(); | 874 base::RunLoop().RunUntilIdle(); |
| 874 } | 875 } |
| 875 | 876 |
| 876 void AudioVideoPipelineDeviceTest::StartImmediateEosTest() { | 877 void AudioVideoPipelineDeviceTest::StartImmediateEosTest() { |
| 877 RunStoppedChecks(); | 878 RunStoppedChecks(); |
| 878 | 879 |
| 879 ASSERT_TRUE(backend()->Initialize()); | 880 ASSERT_TRUE(backend()->Initialize()); |
| 880 base::MessageLoop::current()->RunUntilIdle(); | 881 base::RunLoop().RunUntilIdle(); |
| 881 | 882 |
| 882 Start(); | 883 Start(); |
| 883 } | 884 } |
| 884 | 885 |
| 885 void AudioVideoPipelineDeviceTest::EndImmediateEosTest() { | 886 void AudioVideoPipelineDeviceTest::EndImmediateEosTest() { |
| 886 EXPECT_EQ(kStartPts, backend_->GetCurrentPts()); | 887 EXPECT_EQ(kStartPts, backend_->GetCurrentPts()); |
| 887 RunPlaybackChecks(); | 888 RunPlaybackChecks(); |
| 888 | 889 |
| 889 ASSERT_TRUE(backend_->Pause()); | 890 ASSERT_TRUE(backend_->Pause()); |
| 890 base::MessageLoop::current()->RunUntilIdle(); | 891 base::RunLoop().RunUntilIdle(); |
| 891 | 892 |
| 892 EXPECT_EQ(kStartPts, backend_->GetCurrentPts()); | 893 EXPECT_EQ(kStartPts, backend_->GetCurrentPts()); |
| 893 RunPlaybackChecks(); | 894 RunPlaybackChecks(); |
| 894 | 895 |
| 895 ASSERT_TRUE(backend_->Stop()); | 896 ASSERT_TRUE(backend_->Stop()); |
| 896 base::MessageLoop::current()->RunUntilIdle(); | 897 base::RunLoop().RunUntilIdle(); |
| 897 | 898 |
| 898 RunStoppedChecks(); | 899 RunStoppedChecks(); |
| 899 | 900 |
| 900 base::MessageLoop::current()->QuitWhenIdle(); | 901 base::MessageLoop::current()->QuitWhenIdle(); |
| 901 } | 902 } |
| 902 | 903 |
| 903 TEST_F(AudioVideoPipelineDeviceTest, Mp3Playback) { | 904 TEST_F(AudioVideoPipelineDeviceTest, Mp3Playback) { |
| 904 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 905 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 905 | 906 |
| 906 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 907 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 907 ConfigureForAudioOnly("sfx.mp3"); | 908 ConfigureForAudioOnly("sfx.mp3"); |
| 908 PauseBeforeEos(); | 909 PauseBeforeEos(); |
| 909 Start(); | 910 Start(); |
| 910 message_loop->Run(); | 911 base::RunLoop().Run(); |
| 911 } | 912 } |
| 912 | 913 |
| 913 TEST_F(AudioVideoPipelineDeviceTest, AacPlayback) { | 914 TEST_F(AudioVideoPipelineDeviceTest, AacPlayback) { |
| 914 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 915 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 915 | 916 |
| 916 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 917 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 917 ConfigureForAudioOnly("sfx.m4a"); | 918 ConfigureForAudioOnly("sfx.m4a"); |
| 918 PauseBeforeEos(); | 919 PauseBeforeEos(); |
| 919 Start(); | 920 Start(); |
| 920 message_loop->Run(); | 921 base::RunLoop().Run(); |
| 921 } | 922 } |
| 922 | 923 |
| 923 TEST_F(AudioVideoPipelineDeviceTest, VorbisPlayback) { | 924 TEST_F(AudioVideoPipelineDeviceTest, VorbisPlayback) { |
| 924 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 925 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 925 | 926 |
| 926 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts); | 927 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts); |
| 927 ConfigureForAudioOnly("sfx.ogg"); | 928 ConfigureForAudioOnly("sfx.ogg"); |
| 928 Start(); | 929 Start(); |
| 929 message_loop->Run(); | 930 base::RunLoop().Run(); |
| 930 } | 931 } |
| 931 | 932 |
| 932 // TODO(kmackay) FFmpegDemuxForTest can't handle AC3 or EAC3. | 933 // TODO(kmackay) FFmpegDemuxForTest can't handle AC3 or EAC3. |
| 933 | 934 |
| 934 TEST_F(AudioVideoPipelineDeviceTest, OpusPlayback_Optional) { | 935 TEST_F(AudioVideoPipelineDeviceTest, OpusPlayback_Optional) { |
| 935 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 936 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 936 | 937 |
| 937 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 938 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 938 ConfigureForAudioOnly("bear-opus.ogg"); | 939 ConfigureForAudioOnly("bear-opus.ogg"); |
| 939 PauseBeforeEos(); | 940 PauseBeforeEos(); |
| 940 Start(); | 941 Start(); |
| 941 message_loop->Run(); | 942 base::RunLoop().Run(); |
| 942 } | 943 } |
| 943 | 944 |
| 944 TEST_F(AudioVideoPipelineDeviceTest, FlacPlayback_Optional) { | 945 TEST_F(AudioVideoPipelineDeviceTest, FlacPlayback_Optional) { |
| 945 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 946 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 946 | 947 |
| 947 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 948 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 948 ConfigureForAudioOnly("bear.flac"); | 949 ConfigureForAudioOnly("bear.flac"); |
| 949 PauseBeforeEos(); | 950 PauseBeforeEos(); |
| 950 Start(); | 951 Start(); |
| 951 message_loop->Run(); | 952 base::RunLoop().Run(); |
| 952 } | 953 } |
| 953 | 954 |
| 954 TEST_F(AudioVideoPipelineDeviceTest, H264Playback) { | 955 TEST_F(AudioVideoPipelineDeviceTest, H264Playback) { |
| 955 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 956 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 956 | 957 |
| 957 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePtsAndVSync); | 958 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePtsAndVSync); |
| 958 ConfigureForVideoOnly("bear.h264", true /* raw_h264 */); | 959 ConfigureForVideoOnly("bear.h264", true /* raw_h264 */); |
| 959 PauseBeforeEos(); | 960 PauseBeforeEos(); |
| 960 Start(); | 961 Start(); |
| 961 message_loop->Run(); | 962 base::RunLoop().Run(); |
| 962 } | 963 } |
| 963 | 964 |
| 964 TEST_F(AudioVideoPipelineDeviceTest, WebmPlaybackWithPause) { | 965 TEST_F(AudioVideoPipelineDeviceTest, WebmPlaybackWithPause) { |
| 965 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 966 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 966 | 967 |
| 967 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 968 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 968 // Setup to pause for 100ms every 500ms | 969 // Setup to pause for 100ms every 500ms |
| 969 AddPause(base::TimeDelta::FromMilliseconds(500), | 970 AddPause(base::TimeDelta::FromMilliseconds(500), |
| 970 base::TimeDelta::FromMilliseconds(100)); | 971 base::TimeDelta::FromMilliseconds(100)); |
| 971 | 972 |
| 972 ConfigureForVideoOnly("bear-640x360.webm", false /* raw_h264 */); | 973 ConfigureForVideoOnly("bear-640x360.webm", false /* raw_h264 */); |
| 973 Start(); | 974 Start(); |
| 974 message_loop->Run(); | 975 base::RunLoop().Run(); |
| 975 } | 976 } |
| 976 | 977 |
| 977 TEST_F(AudioVideoPipelineDeviceTest, Vp8Playback) { | 978 TEST_F(AudioVideoPipelineDeviceTest, Vp8Playback) { |
| 978 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 979 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 979 | 980 |
| 980 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 981 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 981 ConfigureForVideoOnly("bear-vp8a.webm", false /* raw_h264 */); | 982 ConfigureForVideoOnly("bear-vp8a.webm", false /* raw_h264 */); |
| 982 Start(); | 983 Start(); |
| 983 message_loop->Run(); | 984 base::RunLoop().Run(); |
| 984 } | 985 } |
| 985 | 986 |
| 986 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback) { | 987 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback) { |
| 987 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 988 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 988 | 989 |
| 989 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePtsAndVSync); | 990 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePtsAndVSync); |
| 990 ConfigureForFile("bear-640x360.webm"); | 991 ConfigureForFile("bear-640x360.webm"); |
| 991 PauseBeforeEos(); | 992 PauseBeforeEos(); |
| 992 Start(); | 993 Start(); |
| 993 message_loop->Run(); | 994 base::RunLoop().Run(); |
| 994 } | 995 } |
| 995 | 996 |
| 996 // TODO(kmackay) FFmpegDemuxForTest can't handle HEVC or VP9. | 997 // TODO(kmackay) FFmpegDemuxForTest can't handle HEVC or VP9. |
| 997 | 998 |
| 998 TEST_F(AudioVideoPipelineDeviceTest, AudioBackendStates) { | 999 TEST_F(AudioVideoPipelineDeviceTest, AudioBackendStates) { |
| 999 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1000 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1000 Initialize(); | 1001 Initialize(); |
| 1001 MediaPipelineBackend::AudioDecoder* audio_decoder = | 1002 MediaPipelineBackend::AudioDecoder* audio_decoder = |
| 1002 backend()->CreateAudioDecoder(); | 1003 backend()->CreateAudioDecoder(); |
| 1003 | 1004 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1080 } | 1081 } |
| 1081 | 1082 |
| 1082 TEST_F(AudioVideoPipelineDeviceTest, Mp3Playback_WithEffectsStreams) { | 1083 TEST_F(AudioVideoPipelineDeviceTest, Mp3Playback_WithEffectsStreams) { |
| 1083 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1084 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1084 | 1085 |
| 1085 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 1086 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 1086 ConfigureForAudioOnly("sfx.mp3"); | 1087 ConfigureForAudioOnly("sfx.mp3"); |
| 1087 PauseBeforeEos(); | 1088 PauseBeforeEos(); |
| 1088 AddEffectsStreams(); | 1089 AddEffectsStreams(); |
| 1089 Start(); | 1090 Start(); |
| 1090 message_loop->Run(); | 1091 base::RunLoop().Run(); |
| 1091 } | 1092 } |
| 1092 | 1093 |
| 1093 TEST_F(AudioVideoPipelineDeviceTest, AacPlayback_WithEffectsStreams) { | 1094 TEST_F(AudioVideoPipelineDeviceTest, AacPlayback_WithEffectsStreams) { |
| 1094 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1095 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1095 | 1096 |
| 1096 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 1097 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 1097 ConfigureForAudioOnly("sfx.m4a"); | 1098 ConfigureForAudioOnly("sfx.m4a"); |
| 1098 PauseBeforeEos(); | 1099 PauseBeforeEos(); |
| 1099 AddEffectsStreams(); | 1100 AddEffectsStreams(); |
| 1100 Start(); | 1101 Start(); |
| 1101 message_loop->Run(); | 1102 base::RunLoop().Run(); |
| 1102 } | 1103 } |
| 1103 | 1104 |
| 1104 TEST_F(AudioVideoPipelineDeviceTest, VorbisPlayback_WithEffectsStreams) { | 1105 TEST_F(AudioVideoPipelineDeviceTest, VorbisPlayback_WithEffectsStreams) { |
| 1105 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1106 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1106 | 1107 |
| 1107 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts); | 1108 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePts); |
| 1108 ConfigureForAudioOnly("sfx.ogg"); | 1109 ConfigureForAudioOnly("sfx.ogg"); |
| 1109 AddEffectsStreams(); | 1110 AddEffectsStreams(); |
| 1110 Start(); | 1111 Start(); |
| 1111 message_loop->Run(); | 1112 base::RunLoop().Run(); |
| 1112 } | 1113 } |
| 1113 | 1114 |
| 1114 // TODO(kmackay) FFmpegDemuxForTest can't handle AC3 or EAC3. | 1115 // TODO(kmackay) FFmpegDemuxForTest can't handle AC3 or EAC3. |
| 1115 | 1116 |
| 1116 TEST_F(AudioVideoPipelineDeviceTest, OpusPlayback_WithEffectsStreams_Optional) { | 1117 TEST_F(AudioVideoPipelineDeviceTest, OpusPlayback_WithEffectsStreams_Optional) { |
| 1117 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1118 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1118 | 1119 |
| 1119 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 1120 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 1120 ConfigureForAudioOnly("bear-opus.ogg"); | 1121 ConfigureForAudioOnly("bear-opus.ogg"); |
| 1121 PauseBeforeEos(); | 1122 PauseBeforeEos(); |
| 1122 AddEffectsStreams(); | 1123 AddEffectsStreams(); |
| 1123 Start(); | 1124 Start(); |
| 1124 message_loop->Run(); | 1125 base::RunLoop().Run(); |
| 1125 } | 1126 } |
| 1126 | 1127 |
| 1127 TEST_F(AudioVideoPipelineDeviceTest, FlacPlayback_WithEffectsStreams_Optional) { | 1128 TEST_F(AudioVideoPipelineDeviceTest, FlacPlayback_WithEffectsStreams_Optional) { |
| 1128 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1129 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1129 | 1130 |
| 1130 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 1131 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 1131 ConfigureForAudioOnly("bear.flac"); | 1132 ConfigureForAudioOnly("bear.flac"); |
| 1132 PauseBeforeEos(); | 1133 PauseBeforeEos(); |
| 1133 AddEffectsStreams(); | 1134 AddEffectsStreams(); |
| 1134 Start(); | 1135 Start(); |
| 1135 message_loop->Run(); | 1136 base::RunLoop().Run(); |
| 1136 } | 1137 } |
| 1137 | 1138 |
| 1138 TEST_F(AudioVideoPipelineDeviceTest, H264Playback_WithEffectsStreams) { | 1139 TEST_F(AudioVideoPipelineDeviceTest, H264Playback_WithEffectsStreams) { |
| 1139 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1140 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1140 | 1141 |
| 1141 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePtsAndVSync); | 1142 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePtsAndVSync); |
| 1142 ConfigureForVideoOnly("bear.h264", true /* raw_h264 */); | 1143 ConfigureForVideoOnly("bear.h264", true /* raw_h264 */); |
| 1143 PauseBeforeEos(); | 1144 PauseBeforeEos(); |
| 1144 AddEffectsStreams(); | 1145 AddEffectsStreams(); |
| 1145 Start(); | 1146 Start(); |
| 1146 message_loop->Run(); | 1147 base::RunLoop().Run(); |
| 1147 } | 1148 } |
| 1148 | 1149 |
| 1149 TEST_F(AudioVideoPipelineDeviceTest, WebmPlaybackWithPause_WithEffectsStreams) { | 1150 TEST_F(AudioVideoPipelineDeviceTest, WebmPlaybackWithPause_WithEffectsStreams) { |
| 1150 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1151 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1151 | 1152 |
| 1152 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 1153 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 1153 // Setup to pause for 100ms every 500ms | 1154 // Setup to pause for 100ms every 500ms |
| 1154 AddPause(base::TimeDelta::FromMilliseconds(500), | 1155 AddPause(base::TimeDelta::FromMilliseconds(500), |
| 1155 base::TimeDelta::FromMilliseconds(100)); | 1156 base::TimeDelta::FromMilliseconds(100)); |
| 1156 | 1157 |
| 1157 ConfigureForVideoOnly("bear-640x360.webm", false /* raw_h264 */); | 1158 ConfigureForVideoOnly("bear-640x360.webm", false /* raw_h264 */); |
| 1158 AddEffectsStreams(); | 1159 AddEffectsStreams(); |
| 1159 Start(); | 1160 Start(); |
| 1160 message_loop->Run(); | 1161 base::RunLoop().Run(); |
| 1161 } | 1162 } |
| 1162 | 1163 |
| 1163 TEST_F(AudioVideoPipelineDeviceTest, Vp8Playback_WithEffectsStreams) { | 1164 TEST_F(AudioVideoPipelineDeviceTest, Vp8Playback_WithEffectsStreams) { |
| 1164 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1165 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1165 | 1166 |
| 1166 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); | 1167 set_sync_type(MediaPipelineDeviceParams::kModeSyncPts); |
| 1167 ConfigureForVideoOnly("bear-vp8a.webm", false /* raw_h264 */); | 1168 ConfigureForVideoOnly("bear-vp8a.webm", false /* raw_h264 */); |
| 1168 AddEffectsStreams(); | 1169 AddEffectsStreams(); |
| 1169 Start(); | 1170 Start(); |
| 1170 message_loop->Run(); | 1171 base::RunLoop().Run(); |
| 1171 } | 1172 } |
| 1172 | 1173 |
| 1173 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback_WithEffectsStreams) { | 1174 TEST_F(AudioVideoPipelineDeviceTest, WebmPlayback_WithEffectsStreams) { |
| 1174 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); | 1175 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); |
| 1175 | 1176 |
| 1176 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePtsAndVSync); | 1177 set_sync_type(MediaPipelineDeviceParams::kModeIgnorePtsAndVSync); |
| 1177 ConfigureForFile("bear-640x360.webm"); | 1178 ConfigureForFile("bear-640x360.webm"); |
| 1178 PauseBeforeEos(); | 1179 PauseBeforeEos(); |
| 1179 AddEffectsStreams(); | 1180 AddEffectsStreams(); |
| 1180 Start(); | 1181 Start(); |
| 1181 message_loop->Run(); | 1182 base::RunLoop().Run(); |
| 1182 } | 1183 } |
| 1183 | 1184 |
| 1184 } // namespace media | 1185 } // namespace media |
| 1185 } // namespace chromecast | 1186 } // namespace chromecast |
| OLD | NEW |