Chromium Code Reviews| Index: webkit/glue/plugins/pepper_audio.h |
| =================================================================== |
| --- webkit/glue/plugins/pepper_audio.h (revision 67884) |
| +++ webkit/glue/plugins/pepper_audio.h (working copy) |
| @@ -6,14 +6,13 @@ |
| #define WEBKIT_GLUE_PLUGINS_PEPPER_DEVICE_CONTEXT_AUDIO_H_ |
| #include "base/ref_counted.h" |
| -#include "base/scoped_ptr.h" |
| #include "base/shared_memory.h" |
| -#include "base/simple_thread.h" |
| #include "base/sync_socket.h" |
| #include "ppapi/c/dev/ppb_audio_dev.h" |
| #include "ppapi/c/dev/ppb_audio_config_dev.h" |
| #include "ppapi/c/dev/ppb_audio_trusted_dev.h" |
| #include "ppapi/c/pp_completion_callback.h" |
| +#include "ppapi/shared_impl/audio_impl.h" |
| #include "webkit/glue/plugins/pepper_plugin_delegate.h" |
| #include "webkit/glue/plugins/pepper_plugin_instance.h" |
| #include "webkit/glue/plugins/pepper_plugin_module.h" |
| @@ -43,9 +42,11 @@ |
| uint32_t sample_frame_count_; |
| }; |
| +// Some of the backend functionality of this class is implemented by the |
| +// AudioImpl so it can be shared with the proxy. |
| class Audio : public Resource, |
| - public PluginDelegate::PlatformAudio::Client, |
| - public base::DelegateSimpleThread::Delegate { |
| + public pp::shared_impl::AudioImpl, |
| + public PluginDelegate::PlatformAudio::Client { |
| public: |
| explicit Audio(PluginModule* module, PP_Instance instance_id); |
| virtual ~Audio(); |
| @@ -53,30 +54,25 @@ |
| static const PPB_Audio_Dev* GetInterface(); |
| static const PPB_AudioTrusted_Dev* GetTrustedInterface(); |
| + PP_Instance pp_instance() { |
| + return pp_instance_; |
| + } |
| + |
| + // PPB_Audio implementation. |
| bool Init(PluginDelegate* plugin_delegate, |
| PP_Resource config_id, |
| PPB_Audio_Callback user_callback, void* user_data); |
| + PP_Resource GetCurrentConfig(); |
| + bool StartPlayback(); |
| + bool StopPlayback(); |
| + // PPB_Audio_Trusted implementation. |
| int32_t Open(PluginDelegate* plugin_delegate, |
| PP_Resource config_id, |
| PP_CompletionCallback create_callback); |
| - |
| - PP_Resource GetCurrentConfiguration() { |
| - return config_->GetReference(); |
| - } |
| - |
| - PP_Instance pp_instance() { |
| - return pp_instance_; |
| - } |
| - |
| int32_t GetSyncSocket(int* sync_socket); |
| - |
| int32_t GetSharedMemory(int* shm_handle, uint32_t* shm_size); |
| - bool StartPlayback(); |
| - |
| - bool StopPlayback(); |
| - |
| // Resource override. |
| virtual Audio* AsAudio(); |
| @@ -85,50 +81,29 @@ |
| virtual void StreamCreated(base::SharedMemoryHandle shared_memory_handle, |
| size_t shared_memory_size_, |
| base::SyncSocket::Handle socket); |
| - // End of pepper::PluginDelegate::PlatformAudio::Client implementation. |
| - // Audio thread. DelegateSimpleThread::Delegate implementation. |
| - virtual void Run(); |
| - // End of DelegateSimpleThread::Delegate implementation. |
| - |
| - // True if playing the stream. |
| - bool playing_; |
| - |
| // AudioConfig used for creating this Audio object. |
| scoped_refptr<AudioConfig> config_; |
| - // Instance id |
| + // Plugin instance that owns this audio object. |
| PP_Instance pp_instance_; |
| // PluginDelegate audio object that we delegate audio IPC through. |
| PluginDelegate::PlatformAudio* audio_; |
| - // Socket used to notify us when audio is ready to accept new samples. This |
| - // pointer is created in StreamCreated(). |
| - scoped_ptr<base::SyncSocket> socket_; |
| - |
| - // Sample buffer in shared memory. This pointer is created in |
| - // StreamCreated(). The memory is only mapped when the audio thread is |
| - // created. |
| - scoped_ptr<base::SharedMemory> shared_memory_; |
| - |
| - // The size of the sample buffer in bytes. |
| - size_t shared_memory_size_; |
| - |
| - // When the callback is set, this thread is spawned for calling it. |
| - scoped_ptr<base::DelegateSimpleThread> audio_thread_; |
| - |
| - // Callback to call when audio is ready to accept new samples. |
| - volatile PPB_Audio_Callback callback_; |
| - |
| - // User data pointer passed verbatim to the callback function. |
| - void* user_data_; |
| - |
| // Is a create callback pending to fire? |
| bool create_callback_pending_; |
| // Trusted callback invoked from StreamCreated. |
| PP_CompletionCallback create_callback_; |
| + |
| + // When a create callback is being issued, these will save the info for |
| + // querying from the callback. The proxy uses this to get the handles to the |
| + // other process instead of mapping them in the renderer. These will are |
| + // invalid all other times. |
|
nfullagar
2010/12/01 23:34:21
check last sentence above. "These will are..."
|
| + scoped_ptr<base::SharedMemory> shared_memory_for_create_callback_; |
| + size_t shared_memory_size_for_create_callback_; |
| + scoped_ptr<base::SyncSocket> socket_for_create_callback_; |
| }; |
| } // namespace pepper |