Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Unified Diff: ppapi/proxy/audio_input_resource.h

Issue 11366038: Rewrite PPB_AudioInput_Dev to use the new-style host/resource. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/ppapi_shared.gypi ('k') | ppapi/proxy/audio_input_resource.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/proxy/audio_input_resource.h
diff --git a/ppapi/proxy/audio_input_resource.h b/ppapi/proxy/audio_input_resource.h
new file mode 100644
index 0000000000000000000000000000000000000000..7ea91b666927b2881866926f411892be9406e8d1
--- /dev/null
+++ b/ppapi/proxy/audio_input_resource.h
@@ -0,0 +1,125 @@
+// Copyright (c) 2012 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 PPAPI_PROXY_AUDIO_INPUT_RESOURCE_H_
+#define PPAPI_PROXY_AUDIO_INPUT_RESOURCE_H_
+
+#include <vector>
+
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/shared_memory.h"
+#include "base/sync_socket.h"
+#include "base/threading/simple_thread.h"
+#include "ppapi/proxy/plugin_resource.h"
+#include "ppapi/shared_impl/scoped_pp_resource.h"
+#include "ppapi/thunk/ppb_audio_input_api.h"
+
+namespace ppapi {
+
+struct DeviceRefData;
+
+namespace proxy {
+
+class ResourceMessageReplyParams;
+class SerializedHandle;
+
+class AudioInputResource : public PluginResource,
+ public thunk::PPB_AudioInput_API,
+ public base::DelegateSimpleThread::Delegate {
+ public:
+ AudioInputResource(Connection connection, PP_Instance instance);
+ virtual ~AudioInputResource();
+
+ // Resource overrides.
+ virtual thunk::PPB_AudioInput_API* AsPPB_AudioInput_API() OVERRIDE;
+
+ // PPB_AudioInput_API implementation.
+ virtual int32_t EnumerateDevices(
+ PP_Resource* devices,
+ scoped_refptr<TrackedCallback> callback) OVERRIDE;
+ virtual int32_t Open(const std::string& device_id,
+ PP_Resource config,
+ PPB_AudioInput_Callback audio_input_callback,
+ void* user_data,
+ scoped_refptr<TrackedCallback> callback) OVERRIDE;
+ virtual PP_Resource GetCurrentConfig() OVERRIDE;
+ virtual PP_Bool StartCapture() OVERRIDE;
+ virtual PP_Bool StopCapture() OVERRIDE;
+ virtual void Close() OVERRIDE;
+
+ private:
+ enum OpenState {
+ BEFORE_OPEN,
+ OPENED,
+ CLOSED
+ };
+
+ void OnPluginMsgEnumerateDevicesReply(
+ PP_Resource* devices_resource,
+ scoped_refptr<TrackedCallback> callback,
+ const ResourceMessageReplyParams& params,
+ const std::vector<DeviceRefData>& devices);
+ void OnPluginMsgOpenReply(const ResourceMessageReplyParams& params);
+
+ // Sets the shared memory and socket handles. This will automatically start
+ // capture if we're currently set to capture.
+ void SetStreamInfo(base::SharedMemoryHandle shared_memory_handle,
+ size_t shared_memory_size,
+ base::SyncSocket::Handle socket_handle);
+
+ // Starts execution of the audio input thread.
+ void StartThread();
+
+ // Stops execution of the audio input thread.
+ void StopThread();
+
+ // DelegateSimpleThread::Delegate implementation.
+ // Run on the audio input thread.
+ virtual void Run() OVERRIDE;
+
+ OpenState open_state_;
+
+ // True if capturing the stream.
+ bool capturing_;
+
+ // Socket used to notify us when new samples are available. This pointer is
+ // created in SetStreamInfo().
+ scoped_ptr<base::CancelableSyncSocket> socket_;
+
+ // Sample buffer in shared memory. This pointer is created in
+ // SetStreamInfo(). 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_input_thread_;
+
+ // Callback to call when new samples are available.
+ PPB_AudioInput_Callback audio_input_callback_;
+
+ // User data pointer passed verbatim to the callback function.
+ void* user_data_;
+
+ bool pending_enumerate_devices_;
+ // The callback is not directly passed to OnPluginMsgOpenReply() because we
+ // would like to be able to cancel it early in Close().
+ scoped_refptr<TrackedCallback> open_callback_;
+
+ // Owning reference to the current config object. This isn't actually used,
+ // we just dish it out as requested by the plugin.
+ ScopedPPResource config_;
+
+ DISALLOW_COPY_AND_ASSIGN(AudioInputResource);
+};
+
+} // namespace proxy
+} // namespace ppapi
+
+#endif // PPAPI_PROXY_AUDIO_INPUT_RESOURCE_H_
« no previous file with comments | « ppapi/ppapi_shared.gypi ('k') | ppapi/proxy/audio_input_resource.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698