| Index: media/base/filters.h
|
| diff --git a/media/base/filters.h b/media/base/filters.h
|
| index 980e70004816dd77fa28682ec1f603af0d52eb95..c4da5d9143f72477fc4b760903b573db8d41379f 100644
|
| --- a/media/base/filters.h
|
| +++ b/media/base/filters.h
|
| @@ -265,10 +265,24 @@ class VideoDecoder : public MediaFilter {
|
| // Returns the MediaFormat for this filter.
|
| virtual const MediaFormat& media_format() = 0;
|
|
|
| - // Schedules a read. Decoder takes ownership of the callback.
|
| - //
|
| - // TODO(scherkus): switch Read() callback to scoped_refptr<>.
|
| - virtual void Read(Callback1<VideoFrame*>::Type* read_callback) = 0;
|
| + // |set_fill_buffer_done_callback| install permanent callback from downstream
|
| + // filter (i.e. Renderer). The callback is used to deliver video frames at
|
| + // runtime to downstream filter
|
| + typedef Callback1<scoped_refptr<VideoFrame> >::Type FillBufferDoneCallback;
|
| + void set_fill_buffer_done_callback(FillBufferDoneCallback* callback) {
|
| + fill_buffer_done_callback_.reset(callback);
|
| + }
|
| + FillBufferDoneCallback* fill_buffer_done_callback() {
|
| + return fill_buffer_done_callback_.get();
|
| + }
|
| +
|
| + // Render provides an output buffer for Decoder to write to. These buffers
|
| + // will be recycled to renderer by fill_buffer_done_callback_;
|
| + // We could also pass empty pointer here to let decoder provide buffers pool.
|
| + virtual void FillThisBuffer(scoped_refptr<VideoFrame> frame) = 0;
|
| +
|
| + private:
|
| + scoped_ptr<FillBufferDoneCallback> fill_buffer_done_callback_;
|
| };
|
|
|
|
|
| @@ -289,10 +303,24 @@ class AudioDecoder : public MediaFilter {
|
| // Returns the MediaFormat for this filter.
|
| virtual const MediaFormat& media_format() = 0;
|
|
|
| - // Schedules a read. Decoder takes ownership of the callback.
|
| - //
|
| - // TODO(scherkus): switch Read() callback to scoped_refptr<>.
|
| - virtual void Read(Callback1<Buffer*>::Type* read_callback) = 0;
|
| + // |set_fill_buffer_done_callback| install permanent callback from downstream
|
| + // filter (i.e. Renderer). The callback is used to deliver buffers at
|
| + // runtime to downstream filter.
|
| + typedef Callback1<scoped_refptr<Buffer> >::Type FillBufferDoneCallback;
|
| + void set_fill_buffer_done_callback(FillBufferDoneCallback* callback) {
|
| + fill_buffer_done_callback_.reset(callback);
|
| + }
|
| + FillBufferDoneCallback* fill_buffer_done_callback() {
|
| + return fill_buffer_done_callback_.get();
|
| + }
|
| +
|
| + // Render provides an output buffer for Decoder to write to. These buffers
|
| + // will be recycled to renderer by fill_buffer_done_callback_;
|
| + // We could also pass empty pointer here to let decoder provide buffers pool.
|
| + virtual void FillThisBuffer(scoped_refptr<Buffer> buffer) = 0;
|
| +
|
| + private:
|
| + scoped_ptr<FillBufferDoneCallback> fill_buffer_done_callback_;
|
| };
|
|
|
|
|
|
|