| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "ppapi/proxy/ppb_audio_config_proxy.h" | 5 #include "ppapi/proxy/ppb_audio_config_proxy.h" |
| 6 | 6 |
| 7 #include "ppapi/c/ppb_audio_config.h" | 7 #include "ppapi/c/ppb_audio_config.h" |
| 8 #include "ppapi/proxy/plugin_dispatcher.h" | 8 #include "ppapi/proxy/plugin_dispatcher.h" |
| 9 #include "ppapi/proxy/plugin_resource.h" | 9 #include "ppapi/proxy/plugin_resource.h" |
| 10 #include "ppapi/proxy/ppapi_messages.h" | 10 #include "ppapi/proxy/ppapi_messages.h" |
| 11 | 11 |
| 12 namespace pp { | 12 namespace pp { |
| 13 namespace proxy { | 13 namespace proxy { |
| 14 | 14 |
| 15 class AudioConfig : public PluginResource { | 15 class AudioConfig : public PluginResource { |
| 16 public: | 16 public: |
| 17 AudioConfig(PP_AudioSampleRate sample_rate, uint32_t sample_frame_count) | 17 AudioConfig(PP_Instance instance, |
| 18 : sample_rate_(sample_rate), | 18 PP_AudioSampleRate sample_rate, |
| 19 uint32_t sample_frame_count) |
| 20 : PluginResource(instance), |
| 21 sample_rate_(sample_rate), |
| 19 sample_frame_count_(sample_frame_count) { | 22 sample_frame_count_(sample_frame_count) { |
| 20 } | 23 } |
| 21 virtual ~AudioConfig() {} | 24 virtual ~AudioConfig() {} |
| 22 | 25 |
| 23 // Resource overrides. | 26 // Resource overrides. |
| 24 virtual AudioConfig* AsAudioConfig() { return this; } | 27 virtual AudioConfig* AsAudioConfig() { return this; } |
| 25 | 28 |
| 26 PP_AudioSampleRate sample_rate() const { return sample_rate_; } | 29 PP_AudioSampleRate sample_rate() const { return sample_rate_; } |
| 27 uint32_t sample_frame_count() const { return sample_frame_count_; } | 30 uint32_t sample_frame_count() const { return sample_frame_count_; } |
| 28 | 31 |
| 29 private: | 32 private: |
| 30 PP_AudioSampleRate sample_rate_; | 33 PP_AudioSampleRate sample_rate_; |
| 31 uint32_t sample_frame_count_; | 34 uint32_t sample_frame_count_; |
| 32 | 35 |
| 33 DISALLOW_COPY_AND_ASSIGN(AudioConfig); | 36 DISALLOW_COPY_AND_ASSIGN(AudioConfig); |
| 34 }; | 37 }; |
| 35 | 38 |
| 36 namespace { | 39 namespace { |
| 37 | 40 |
| 38 PP_Resource CreateStereo16bit(PP_Instance instance, | 41 PP_Resource CreateStereo16bit(PP_Instance instance, |
| 39 PP_AudioSampleRate sample_rate, | 42 PP_AudioSampleRate sample_rate, |
| 40 uint32_t sample_frame_count) { | 43 uint32_t sample_frame_count) { |
| 41 PP_Resource result = 0; | 44 PP_Resource result = 0; |
| 42 PluginDispatcher::Get()->Send(new PpapiHostMsg_PPBAudioConfig_Create( | 45 PluginDispatcher::GetForInstance(instance)->Send( |
| 43 INTERFACE_ID_PPB_AUDIO_CONFIG, instance, | 46 new PpapiHostMsg_PPBAudioConfig_Create( |
| 44 static_cast<int32_t>(sample_rate), sample_frame_count, | 47 INTERFACE_ID_PPB_AUDIO_CONFIG, instance, |
| 45 &result)); | 48 static_cast<int32_t>(sample_rate), sample_frame_count, |
| 49 &result)); |
| 46 if (!result) | 50 if (!result) |
| 47 return 0; | 51 return 0; |
| 48 | 52 |
| 49 linked_ptr<AudioConfig> object( | 53 linked_ptr<AudioConfig> object( |
| 50 new AudioConfig(sample_rate, sample_frame_count)); | 54 new AudioConfig(instance, sample_rate, sample_frame_count)); |
| 51 PluginDispatcher::Get()->plugin_resource_tracker()->AddResource( | 55 PluginResourceTracker::GetInstance()->AddResource(result, object); |
| 52 result, object); | |
| 53 return result; | 56 return result; |
| 54 } | 57 } |
| 55 | 58 |
| 56 uint32_t RecommendSampleFrameCount(PP_AudioSampleRate sample_rate, | 59 uint32_t RecommendSampleFrameCount(PP_AudioSampleRate sample_rate, |
| 57 uint32_t requested_sample_frame_count) { | 60 uint32_t requested_sample_frame_count) { |
| 58 uint32_t result = 0; | 61 // TODO(brettw) Currently we don't actually query to get a value from the |
| 59 PluginDispatcher::Get()->Send( | 62 // hardware, so we always return the input for in-range values. |
| 60 new PpapiHostMsg_PPBAudioConfig_RecommendSampleFrameCount( | 63 // |
| 61 INTERFACE_ID_PPB_AUDIO_CONFIG, static_cast<int32_t>(sample_rate), | 64 // Danger: this code is duplicated in the audio config implementation. |
| 62 requested_sample_frame_count, &result)); | 65 if (requested_sample_frame_count < PP_AUDIOMINSAMPLEFRAMECOUNT) |
| 63 return result; | 66 return PP_AUDIOMINSAMPLEFRAMECOUNT; |
| 67 if (requested_sample_frame_count > PP_AUDIOMAXSAMPLEFRAMECOUNT) |
| 68 return PP_AUDIOMAXSAMPLEFRAMECOUNT; |
| 69 return requested_sample_frame_count; |
| 64 } | 70 } |
| 65 | 71 |
| 66 PP_Bool IsAudioConfig(PP_Resource resource) { | 72 PP_Bool IsAudioConfig(PP_Resource resource) { |
| 67 AudioConfig* object = PluginResource::GetAs<AudioConfig>(resource); | 73 AudioConfig* object = PluginResource::GetAs<AudioConfig>(resource); |
| 68 return BoolToPPBool(!!object); | 74 return BoolToPPBool(!!object); |
| 69 } | 75 } |
| 70 | 76 |
| 71 PP_AudioSampleRate GetSampleRate(PP_Resource config_id) { | 77 PP_AudioSampleRate GetSampleRate(PP_Resource config_id) { |
| 72 AudioConfig* object = PluginResource::GetAs<AudioConfig>(config_id); | 78 AudioConfig* object = PluginResource::GetAs<AudioConfig>(config_id); |
| 73 if (!object) | 79 if (!object) |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 int32_t sample_rate, | 139 int32_t sample_rate, |
| 134 uint32_t requested_sample_frame_count, | 140 uint32_t requested_sample_frame_count, |
| 135 uint32_t* result) { | 141 uint32_t* result) { |
| 136 *result = ppb_audio_config_target()->RecommendSampleFrameCount( | 142 *result = ppb_audio_config_target()->RecommendSampleFrameCount( |
| 137 static_cast<PP_AudioSampleRate>(sample_rate), | 143 static_cast<PP_AudioSampleRate>(sample_rate), |
| 138 requested_sample_frame_count); | 144 requested_sample_frame_count); |
| 139 } | 145 } |
| 140 | 146 |
| 141 } // namespace proxy | 147 } // namespace proxy |
| 142 } // namespace pp | 148 } // namespace pp |
| OLD | NEW |