1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef PPAPI_PROXY_AUDIO_BUFFER_RESOURCE_H_
6#define PPAPI_PROXY_AUDIO_BUFFER_RESOURCE_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "ppapi/proxy/ppapi_proxy_export.h"
11#include "ppapi/shared_impl/resource.h"
12#include "ppapi/thunk/ppb_audio_buffer_api.h"
13
14namespace ppapi {
15
16union MediaStreamBuffer;
17
18namespace proxy {
19
20class PPAPI_PROXY_EXPORT AudioBufferResource
21    : public Resource,
22      public thunk::PPB_AudioBuffer_API {
23 public:
24  AudioBufferResource(PP_Instance instance,
25                     int32_t index,
26                     MediaStreamBuffer* buffer);
27
28  virtual ~AudioBufferResource();
29
30  // PluginResource overrides:
31  virtual thunk::PPB_AudioBuffer_API* AsPPB_AudioBuffer_API() OVERRIDE;
32
33  // PPB_AudioBuffer_API overrides:
34  virtual PP_TimeDelta GetTimestamp() OVERRIDE;
35  virtual void SetTimestamp(PP_TimeDelta timestamp) OVERRIDE;
36  virtual PP_AudioBuffer_SampleRate GetSampleRate() OVERRIDE;
37  virtual PP_AudioBuffer_SampleSize GetSampleSize() OVERRIDE;
38  virtual uint32_t GetNumberOfChannels() OVERRIDE;
39  virtual uint32_t GetNumberOfSamples() OVERRIDE;
40  virtual void* GetDataBuffer() OVERRIDE;
41  virtual uint32_t GetDataBufferSize() OVERRIDE;
42  virtual MediaStreamBuffer* GetBuffer() OVERRIDE;
43  virtual int32_t GetBufferIndex() OVERRIDE;
44  virtual void Invalidate() OVERRIDE;
45
46  // Buffer index
47  int32_t index_;
48
49  MediaStreamBuffer* buffer_;
50
51  DISALLOW_COPY_AND_ASSIGN(AudioBufferResource);
52};
53
54}  // namespace proxy
55}  // namespace ppapi
56
57#endif  // PPAPI_PROXY_AUDIO_BUFFER_RESOURCE_H_
58