diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-16 18:15:52 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-16 18:15:52 +0000 |
commit | 0bd753681a82634f322d4867b19148474c25566b (patch) | |
tree | 2f96cb4494c075ddee5a3e42e6b41c096a5357a9 /webkit/plugins/ppapi/ppb_audio_impl.h | |
parent | d1d0afe664ff43825a4585f88ee8ce412eab0194 (diff) | |
download | chromium_src-0bd753681a82634f322d4867b19148474c25566b.zip chromium_src-0bd753681a82634f322d4867b19148474c25566b.tar.gz chromium_src-0bd753681a82634f322d4867b19148474c25566b.tar.bz2 |
Move the Pepper implementation from webkit/glue/plugins/pepper_* to
webkit/plugins/ppapi/*. This renamed the files and interface implementation
classes from foo.cc/Foo to ppb_foo_impl/PPB_Foo_Impl to match the proxy
ppb_foo_proxy/PPB_Foo_Proxy.
This moves plugin_switches.* from webkit/glue/plugins to webkit/plugins.
Review URL: http://codereview.chromium.org/5828003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69424 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/plugins/ppapi/ppb_audio_impl.h')
-rw-r--r-- | webkit/plugins/ppapi/ppb_audio_impl.h | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/webkit/plugins/ppapi/ppb_audio_impl.h b/webkit/plugins/ppapi/ppb_audio_impl.h new file mode 100644 index 0000000..bcab4a4 --- /dev/null +++ b/webkit/plugins/ppapi/ppb_audio_impl.h @@ -0,0 +1,116 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef WEBKIT_PLUGINS_PPAPI_DEVICE_CONTEXT_AUDIO_H_ +#define WEBKIT_PLUGINS_PPAPI_DEVICE_CONTEXT_AUDIO_H_ + +#include "base/basictypes.h" +#include "base/ref_counted.h" +#include "base/shared_memory.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/plugins/ppapi/plugin_delegate.h" +#include "webkit/plugins/ppapi/plugin_module.h" +#include "webkit/plugins/ppapi/ppapi_plugin_instance.h" +#include "webkit/plugins/ppapi/resource.h" + +namespace webkit { +namespace ppapi { + +class PluginInstance; +class PluginModule; + +class PPB_AudioConfig_Impl : public Resource { + public: + PPB_AudioConfig_Impl(PluginModule* module, + PP_AudioSampleRate_Dev sample_rate, + uint32_t sample_frame_count); + size_t BufferSize(); + static const PPB_AudioConfig_Dev* GetInterface(); + + PP_AudioSampleRate_Dev sample_rate() { return sample_rate_; } + uint32_t sample_frame_count() { return sample_frame_count_; } + + private: + // Resource override. + virtual PPB_AudioConfig_Impl* AsPPB_AudioConfig_Impl(); + + PP_AudioSampleRate_Dev sample_rate_; + 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 PPB_Audio_Impl : public Resource, + public pp::shared_impl::AudioImpl, + public PluginDelegate::PlatformAudio::Client { + public: + explicit PPB_Audio_Impl(PluginModule* module, PP_Instance instance_id); + virtual ~PPB_Audio_Impl(); + + 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); + int32_t GetSyncSocket(int* sync_socket); + int32_t GetSharedMemory(int* shm_handle, uint32_t* shm_size); + + // Resource override. + virtual PPB_Audio_Impl* AsPPB_Audio_Impl(); + + private: + // PluginDelegate::PlatformAudio::Client implementation. + virtual void StreamCreated(base::SharedMemoryHandle shared_memory_handle, + size_t shared_memory_size_, + base::SyncSocket::Handle socket); + + // AudioConfig used for creating this Audio object. + scoped_refptr<PPB_AudioConfig_Impl> config_; + + // Plugin instance that owns this audio object. + PP_Instance pp_instance_; + + // PluginDelegate audio object that we delegate audio IPC through. + PluginDelegate::PlatformAudio* audio_; + + // 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 be + // invalid all other times. + 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_; + + DISALLOW_COPY_AND_ASSIGN(PPB_Audio_Impl); +}; + +} // namespace ppapi +} // namespace webkit + +#endif // WEBKIT_PLUGINS_PPAPI_DEVICE_CONTEXT_AUDIO_H_ |