summaryrefslogtreecommitdiffstats
path: root/webkit/plugins/ppapi/ppb_audio_impl.h
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-16 18:15:52 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-16 18:15:52 +0000
commit0bd753681a82634f322d4867b19148474c25566b (patch)
tree2f96cb4494c075ddee5a3e42e6b41c096a5357a9 /webkit/plugins/ppapi/ppb_audio_impl.h
parentd1d0afe664ff43825a4585f88ee8ce412eab0194 (diff)
downloadchromium_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.h116
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_