| Index: webkit/plugins/ppapi/plugin_delegate.h
 | 
| diff --git a/webkit/plugins/ppapi/plugin_delegate.h b/webkit/plugins/ppapi/plugin_delegate.h
 | 
| index 6f76384f94e5dbf2174ac6dd2eec301ce751c2a5..65506e7fb48611c287a496ba01f5c4976575ddd2 100644
 | 
| --- a/webkit/plugins/ppapi/plugin_delegate.h
 | 
| +++ b/webkit/plugins/ppapi/plugin_delegate.h
 | 
| @@ -180,19 +180,21 @@ class PluginDelegate {
 | 
|      virtual bool Echo(const base::Callback<void()>& callback) = 0;
 | 
|    };
 | 
|  
 | 
| -  class PlatformAudio {
 | 
| -   public:
 | 
| -    class Client {
 | 
| -     protected:
 | 
| -      virtual ~Client() {}
 | 
| +  // The (interface for the) client used by |PlatformAudio| and
 | 
| +  // |PlatformAudioInput|.
 | 
| +  class PlatformAudioCommonClient {
 | 
| +   protected:
 | 
| +    virtual ~PlatformAudioCommonClient() {}
 | 
|  
 | 
| -     public:
 | 
| -      // Called when the stream is created.
 | 
| -      virtual void StreamCreated(base::SharedMemoryHandle shared_memory_handle,
 | 
| -                                 size_t shared_memory_size,
 | 
| -                                 base::SyncSocket::Handle socket) = 0;
 | 
| -    };
 | 
| +   public:
 | 
| +    // Called when the stream is created.
 | 
| +    virtual void StreamCreated(base::SharedMemoryHandle shared_memory_handle,
 | 
| +                               size_t shared_memory_size,
 | 
| +                               base::SyncSocket::Handle socket) = 0;
 | 
| +  };
 | 
|  
 | 
| +  class PlatformAudio {
 | 
| +   public:
 | 
|      // Starts the playback. Returns false on error or if called before the
 | 
|      // stream is created or after the stream is closed.
 | 
|      virtual bool StartPlayback() = 0;
 | 
| @@ -209,6 +211,24 @@ class PluginDelegate {
 | 
|      virtual ~PlatformAudio() {}
 | 
|    };
 | 
|  
 | 
| +  class PlatformAudioInput {
 | 
| +   public:
 | 
| +    // Starts the playback. Returns false on error or if called before the
 | 
| +    // stream is created or after the stream is closed.
 | 
| +    virtual bool StartCapture() = 0;
 | 
| +
 | 
| +    // Stops the capture. Returns false on error or if called before the stream
 | 
| +    // is created or after the stream is closed.
 | 
| +    virtual bool StopCapture() = 0;
 | 
| +
 | 
| +    // Closes the stream. Make sure to call this before the object is
 | 
| +    // destructed.
 | 
| +    virtual void ShutDown() = 0;
 | 
| +
 | 
| +   protected:
 | 
| +    virtual ~PlatformAudioInput() {}
 | 
| +  };
 | 
| +
 | 
|    // Interface for PlatformVideoDecoder is directly inherited from general media
 | 
|    // VideoDecodeAccelerator interface.
 | 
|    class PlatformVideoDecoder : public media::VideoDecodeAccelerator {
 | 
| @@ -285,7 +305,13 @@ class PluginDelegate {
 | 
|    // to clean up the corresponding resources allocated during this call.
 | 
|    virtual PlatformAudio* CreateAudio(uint32_t sample_rate,
 | 
|                                       uint32_t sample_count,
 | 
| -                                     PlatformAudio::Client* client) = 0;
 | 
| +                                     PlatformAudioCommonClient* client) = 0;
 | 
| +
 | 
| +  // The caller is responsible for calling Shutdown() on the returned pointer
 | 
| +  // to clean up the corresponding resources allocated during this call.
 | 
| +  virtual PlatformAudioInput* CreateAudioInput(uint32_t sample_rate,
 | 
| +      uint32_t sample_count,
 | 
| +      PlatformAudioCommonClient* client) = 0;
 | 
|  
 | 
|    // A pointer is returned immediately, but it is not ready to be used until
 | 
|    // BrokerConnected has been called.
 | 
| 
 |