summaryrefslogtreecommitdiffstats
path: root/chromium/ppapi/proxy/media_stream_track_resource_base.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ppapi/proxy/media_stream_track_resource_base.h')
-rw-r--r--chromium/ppapi/proxy/media_stream_track_resource_base.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/chromium/ppapi/proxy/media_stream_track_resource_base.h b/chromium/ppapi/proxy/media_stream_track_resource_base.h
new file mode 100644
index 00000000000..087d4a95c98
--- /dev/null
+++ b/chromium/ppapi/proxy/media_stream_track_resource_base.h
@@ -0,0 +1,71 @@
+// Copyright 2014 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_MEDIA_STREAM_TRACK_RESOURCE_BASE_H_
+#define PPAPI_PROXY_MEDIA_STREAM_TRACK_RESOURCE_BASE_H_
+
+#include "ppapi/proxy/plugin_resource.h"
+#include "ppapi/proxy/ppapi_proxy_export.h"
+#include "ppapi/shared_impl/media_stream_buffer_manager.h"
+
+namespace ppapi {
+namespace proxy {
+
+class PPAPI_PROXY_EXPORT MediaStreamTrackResourceBase
+ : public PluginResource,
+ public MediaStreamBufferManager::Delegate {
+ protected:
+ MediaStreamTrackResourceBase(Connection connection,
+ PP_Instance instance,
+ int pending_renderer_id,
+ const std::string& id);
+
+ MediaStreamTrackResourceBase(Connection connection, PP_Instance instance);
+
+ virtual ~MediaStreamTrackResourceBase();
+
+ std::string id() const { return id_; }
+
+ void set_id(const std::string& id) { id_ = id; }
+
+ bool has_ended() const { return has_ended_; }
+
+ MediaStreamBufferManager* buffer_manager() { return &buffer_manager_; }
+
+ void CloseInternal();
+
+ // Sends a buffer index to the corresponding PepperMediaStreamTrackHostBase
+ // via an IPC message. The host adds the buffer index into its
+ // |buffer_manager_| for reading or writing.
+ // Also see |MediaStreamBufferManager|.
+ void SendEnqueueBufferMessageToHost(int32_t index);
+
+ // PluginResource overrides:
+ virtual void OnReplyReceived(const ResourceMessageReplyParams& params,
+ const IPC::Message& msg) OVERRIDE;
+
+ private:
+ // Message handlers:
+ void OnPluginMsgInitBuffers(const ResourceMessageReplyParams& params,
+ int32_t number_of_buffers,
+ int32_t buffer_size,
+ bool readonly);
+ void OnPluginMsgEnqueueBuffer(const ResourceMessageReplyParams& params,
+ int32_t index);
+ void OnPluginMsgEnqueueBuffers(const ResourceMessageReplyParams& params,
+ const std::vector<int32_t>& indices);
+
+ MediaStreamBufferManager buffer_manager_;
+
+ std::string id_;
+
+ bool has_ended_;
+
+ DISALLOW_COPY_AND_ASSIGN(MediaStreamTrackResourceBase);
+};
+
+} // namespace proxy
+} // namespace ppapi
+
+#endif // PPAPI_PROXY_MEDIA_STREAM_TRACK_RESOURCE_BASE_H_