test_audio.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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
  3. // found in the LICENSE file.
  4. #ifndef PPAPI_TESTS_TEST_AUDIO_H_
  5. #define PPAPI_TESTS_TEST_AUDIO_H_
  6. #include <stdint.h>
  7. #include <string>
  8. #include "ppapi/c/ppb_audio.h"
  9. #include "ppapi/c/ppb_audio_config.h"
  10. #include "ppapi/c/ppb_core.h"
  11. #include "ppapi/tests/test_case.h"
  12. class TestAudio : public TestCase {
  13. public:
  14. explicit TestAudio(TestingInstance* instance);
  15. ~TestAudio();
  16. // TestCase implementation.
  17. virtual bool Init();
  18. virtual void RunTests(const std::string& filter);
  19. private:
  20. std::string TestCreation();
  21. std::string TestDestroyNoStop();
  22. std::string TestFailures();
  23. std::string TestAudioCallback1();
  24. std::string TestAudioCallback2();
  25. std::string TestAudioCallback3();
  26. std::string TestAudioCallback4();
  27. #if defined(__native_client__)
  28. std::string TestAudioThreadCreatorIsRequired();
  29. std::string TestAudioThreadCreatorIsCalled();
  30. #endif
  31. // Calls |audio_callback_method_| (where |user_data| is "this").
  32. static void AudioCallbackTrampoline(void* sample_buffer,
  33. uint32_t buffer_size_in_bytes,
  34. PP_TimeDelta latency,
  35. void* user_data);
  36. static void AudioCallbackTrampoline1_0(void* sample_buffer,
  37. uint32_t buffer_size_in_bytes,
  38. void* user_data);
  39. typedef void (TestAudio::*AudioCallbackMethod)(void* sample_buffer,
  40. uint32_t buffer_size_in_bytes,
  41. PP_TimeDelta latency);
  42. // Method called by |AudioCallbackTrampoline()|. Set only when the callback
  43. // can't be running (before |StartPlayback()|, after |StopPlayback()| or
  44. // releasing the last reference to the audio resource).
  45. AudioCallbackMethod audio_callback_method_;
  46. // An |AudioCallbackMethod| that just clears |sample_buffer|.
  47. void AudioCallbackTrivial(void* sample_buffer,
  48. uint32_t buffer_size_in_bytes,
  49. PP_TimeDelta latency);
  50. // |AudioCallbackMethod| used by |TestAudioCallbackN()|.
  51. void AudioCallbackTest(void* sample_buffer,
  52. uint32_t buffer_size_in_bytes,
  53. PP_TimeDelta latency);
  54. PP_Resource CreateAudioConfig(PP_AudioSampleRate sample_rate,
  55. uint32_t requested_sample_frame_count);
  56. // Used by |TestAudioCallbackN()|.
  57. NestedEvent audio_callback_event_;
  58. bool test_done_;
  59. // Raw C-level interfaces, set in |Init()|; do not modify them elsewhere.
  60. const PPB_Audio_1_1* audio_interface_;
  61. const PPB_Audio_1_0* audio_interface_1_0_;
  62. const PPB_AudioConfig* audio_config_interface_;
  63. const PPB_Core* core_interface_;
  64. };
  65. #endif // PPAPI_TESTS_TEST_AUDIO_H_