| Index: media/filters/ffmpeg_video_decoder.h
|
| diff --git a/media/filters/ffmpeg_video_decoder.h b/media/filters/ffmpeg_video_decoder.h
|
| index ef4797704580b72a0309981e15819db94602c36d..e89bcbda1acffba2c869a53ca700e0e7beccba7b 100644
|
| --- a/media/filters/ffmpeg_video_decoder.h
|
| +++ b/media/filters/ffmpeg_video_decoder.h
|
| @@ -7,9 +7,9 @@
|
|
|
| #include <deque>
|
|
|
| +#include "base/memory/scoped_ptr.h"
|
| #include "media/base/filters.h"
|
| #include "media/base/pts_stream.h"
|
| -#include "media/video/video_decode_engine.h"
|
| #include "ui/gfx/size.h"
|
|
|
| class MessageLoop;
|
| @@ -18,9 +18,7 @@ namespace media {
|
|
|
| class VideoDecodeEngine;
|
|
|
| -class MEDIA_EXPORT FFmpegVideoDecoder
|
| - : public VideoDecoder,
|
| - public VideoDecodeEngine::EventHandler {
|
| +class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
|
| public:
|
| explicit FFmpegVideoDecoder(MessageLoop* message_loop);
|
| virtual ~FFmpegVideoDecoder();
|
| @@ -35,62 +33,39 @@ class MEDIA_EXPORT FFmpegVideoDecoder
|
| virtual void Initialize(DemuxerStream* demuxer_stream,
|
| const base::Closure& callback,
|
| const StatisticsCallback& stats_callback) OVERRIDE;
|
| - virtual void ProduceVideoFrame(
|
| - scoped_refptr<VideoFrame> video_frame) OVERRIDE;
|
| - virtual gfx::Size natural_size() OVERRIDE;
|
| + virtual void Read(const ReadCB& callback) OVERRIDE;
|
| + virtual const gfx::Size& natural_size() OVERRIDE;
|
|
|
| private:
|
| - // VideoDecodeEngine::EventHandler interface.
|
| - virtual void OnInitializeComplete(bool success) OVERRIDE;
|
| - virtual void OnUninitializeComplete() OVERRIDE;
|
| - virtual void OnFlushComplete() OVERRIDE;
|
| - virtual void OnSeekComplete() OVERRIDE;
|
| - virtual void OnError() OVERRIDE;
|
| - virtual void ProduceVideoSample(scoped_refptr<Buffer> buffer) OVERRIDE;
|
| - virtual void ConsumeVideoFrame(
|
| - scoped_refptr<VideoFrame> frame,
|
| - const PipelineStatistics& statistics) OVERRIDE;
|
| -
|
| enum DecoderState {
|
| - kUnInitialized,
|
| - kInitializing,
|
| + kUninitialized,
|
| kNormal,
|
| kFlushCodec,
|
| kDecodeFinished,
|
| - kPausing,
|
| - kFlushing,
|
| - kStopped
|
| };
|
|
|
| - void OnFlushComplete(const base::Closure& callback);
|
| - void OnSeekComplete(const base::Closure& callback);
|
| + // Carries out the reading operation scheduled by Read().
|
| + void DoRead(const ReadCB& callback);
|
|
|
| - // TODO(scherkus): There are two of these to keep read completions
|
| - // asynchronous and media_unittests passing. Remove.
|
| - void OnReadComplete(const scoped_refptr<Buffer>& buffer);
|
| - void OnReadCompleteTask(const scoped_refptr<Buffer>& buffer);
|
| + // Reads from the demuxer stream with corresponding callback method.
|
| + void ReadFromDemuxerStream();
|
| + void DecodeBuffer(const scoped_refptr<Buffer>& buffer);
|
|
|
| - // Flush the output buffers that we had held in Paused state.
|
| - void FlushBuffers();
|
| + // Carries out the decoding operation scheduled by DecodeBuffer().
|
| + void DoDecodeBuffer(const scoped_refptr<Buffer>& buffer);
|
|
|
| - // Injection point for unittest to provide a mock engine. Takes ownership of
|
| - // the provided engine.
|
| - virtual void SetVideoDecodeEngineForTest(VideoDecodeEngine* engine);
|
| + // Delivers the frame to |read_cb_| and resets the callback.
|
| + void DeliverFrame(const scoped_refptr<VideoFrame>& video_frame);
|
|
|
| MessageLoop* message_loop_;
|
|
|
| - PtsStream pts_stream_; // Stream of presentation timestamps.
|
| + PtsStream pts_stream_;
|
| DecoderState state_;
|
| scoped_ptr<VideoDecodeEngine> decode_engine_;
|
|
|
| - base::Closure initialize_callback_;
|
| - base::Closure uninitialize_callback_;
|
| - base::Closure flush_callback_;
|
| - FilterStatusCB seek_cb_;
|
| StatisticsCallback statistics_callback_;
|
|
|
| - // Hold video frames when flush happens.
|
| - std::deque<scoped_refptr<VideoFrame> > frame_queue_flushed_;
|
| + ReadCB read_cb_;
|
|
|
| // TODO(scherkus): I think this should be calculated by VideoRenderers based
|
| // on information provided by VideoDecoders (i.e., aspect ratio).
|
|
|