Index: media/filters/video_renderer_base.h |
diff --git a/media/filters/video_renderer_base.h b/media/filters/video_renderer_base.h |
index 2125e4586d3a568af41ec8d5e3afda505f8d53ab..1abc59ec5ce2b5279cb0e9f31d563a2ecf9aa613 100644 |
--- a/media/filters/video_renderer_base.h |
+++ b/media/filters/video_renderer_base.h |
@@ -88,25 +88,16 @@ class MEDIA_EXPORT VideoRendererBase |
// class executes on. |
virtual void OnFrameAvailable() = 0; |
- void ReadInput(scoped_refptr<VideoFrame> frame); |
- |
private: |
- // Callback from video decoder to deliver decoded video frames and decrements |
- // |pending_reads_|. |
- void ConsumeVideoFrame(scoped_refptr<VideoFrame> frame); |
- |
- // Helper method that schedules an asynchronous read from the decoder and |
- // increments |pending_reads_|. |
- // |
- // Safe to call from any thread. |
- void ScheduleRead_Locked(); |
+ // Callback from the video decoder delivering decoded video frames. |
+ void FrameReady(scoped_refptr<VideoFrame> frame); |
- // Helper function to finished "flush" operation |
- void OnFlushDone_Locked(); |
+ // Helper method that schedules an asynchronous read from the decoder as long |
+ // as there isn't a pending read and we have capacity. |
+ void AttemptRead_Locked(); |
- // Helper method that flushes all video frame in "ready queue" including |
- // current frame into "done queue". |
- void FlushBuffers_Locked(); |
+ // Attempts to complete flushing and transition into the flushed state. |
+ void AttemptFlush_Locked(); |
// Calculates the duration to sleep for based on |current_frame_|'s timestamp, |
// the next frame timestamp (may be NULL), and the provided playback rate. |
@@ -119,7 +110,7 @@ class MEDIA_EXPORT VideoRendererBase |
void EnterErrorState_Locked(PipelineStatus status); |
// Helper function that flushes the buffers when a Stop() or error occurs. |
- void DoStopOrErrorFlush_Locked(); |
+ void DoStopOrError_Locked(); |
// Used for accessing data members. |
base::Lock lock_; |
@@ -128,9 +119,9 @@ class MEDIA_EXPORT VideoRendererBase |
// Queue of incoming frames as well as the current frame since the last time |
// OnFrameAvailable() was called. |
- typedef std::deque< scoped_refptr<VideoFrame> > VideoFrameQueue; |
+ typedef std::deque<scoped_refptr<VideoFrame> > VideoFrameQueue; |
VideoFrameQueue frames_queue_ready_; |
- VideoFrameQueue frames_queue_done_; |
+ |
scoped_refptr<VideoFrame> current_frame_; |
scoped_refptr<VideoFrame> last_available_frame_; |
@@ -184,10 +175,8 @@ class MEDIA_EXPORT VideoRendererBase |
// Keeps track of our pending buffers. We *must* have no pending reads |
// before executing the flush callback; We decrement it each time we receive |
Ami GONE FROM CHROMIUM
2011/11/01 22:17:40
decrement/increment terminology is misleading in b
scherkus (not reviewing)
2011/11/03 04:55:59
Done.
|
- // a buffer and increment it each time we send a buffer out. therefore if |
- // decoder provides buffer, |pending_reads_| is always non-positive and if |
- // renderer provides buffer, |pending_reads_| is always non-negative. |
- int pending_reads_; |
+ // a buffer and increment it each time we send a buffer out. |
+ bool pending_read_; |
bool pending_paint_; |
bool pending_paint_with_last_available_; |
@@ -200,6 +189,8 @@ class MEDIA_EXPORT VideoRendererBase |
base::TimeDelta seek_timestamp_; |
+ VideoDecoder::FrameReadyCB frame_ready_cb_; |
+ |
DISALLOW_COPY_AND_ASSIGN(VideoRendererBase); |
}; |