| Index: media/filters/vpx_video_decoder.h
|
| diff --git a/media/filters/ffmpeg_video_decoder.h b/media/filters/vpx_video_decoder.h
|
| similarity index 59%
|
| copy from media/filters/ffmpeg_video_decoder.h
|
| copy to media/filters/vpx_video_decoder.h
|
| index e26a1943d7aa0859a533f1e45621c73ec1aa9a02..77578fdc90f7e6c82de90090cadff43857e1a886 100644
|
| --- a/media/filters/ffmpeg_video_decoder.h
|
| +++ b/media/filters/vpx_video_decoder.h
|
| @@ -2,16 +2,16 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef MEDIA_FILTERS_FFMPEG_VIDEO_DECODER_H_
|
| -#define MEDIA_FILTERS_FFMPEG_VIDEO_DECODER_H_
|
| +#ifndef MEDIA_FILTERS_VPX_VIDEO_DECODER_H_
|
| +#define MEDIA_FILTERS_VPX_VIDEO_DECODER_H_
|
|
|
| #include "base/callback.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "media/base/demuxer_stream.h"
|
| #include "media/base/video_decoder.h"
|
|
|
| -struct AVCodecContext;
|
| -struct AVFrame;
|
| +struct vpx_codec_ctx;
|
| +struct vpx_image;
|
|
|
| namespace base {
|
| class MessageLoopProxy;
|
| @@ -19,11 +19,9 @@ class MessageLoopProxy;
|
|
|
| namespace media {
|
|
|
| -class DecoderBuffer;
|
| -
|
| -class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
|
| +class MEDIA_EXPORT VpxVideoDecoder : public VideoDecoder {
|
| public:
|
| - explicit FFmpegVideoDecoder(
|
| + explicit VpxVideoDecoder(
|
| const scoped_refptr<base::MessageLoopProxy>& message_loop);
|
|
|
| // VideoDecoder implementation.
|
| @@ -34,13 +32,8 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
|
| virtual void Reset(const base::Closure& closure) OVERRIDE;
|
| virtual void Stop(const base::Closure& closure) OVERRIDE;
|
|
|
| - // Callback called from within FFmpeg to allocate a buffer based on
|
| - // the dimensions of |codec_context|. See AVCodecContext.get_buffer
|
| - // documentation inside FFmpeg.
|
| - int GetVideoBuffer(AVCodecContext *codec_context, AVFrame* frame);
|
| -
|
| protected:
|
| - virtual ~FFmpegVideoDecoder();
|
| + virtual ~VpxVideoDecoder();
|
|
|
| private:
|
| enum DecoderState {
|
| @@ -50,46 +43,44 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
|
| kDecodeFinished
|
| };
|
|
|
| - // Reads from the demuxer stream and corresponding read callback.
|
| + // Handles (re-)initializing the decoder with a (new) config.
|
| + // Returns true when initialization was successful.
|
| + bool ConfigureDecoder();
|
| +
|
| + void CloseDecoder();
|
| void ReadFromDemuxerStream();
|
| - void BufferReady(DemuxerStream::Status status,
|
| - const scoped_refptr<DecoderBuffer>& buffer);
|
|
|
| - // Handles decoding an unencrypted encoded buffer.
|
| + // Carries out the buffer processing operation scheduled by
|
| + // DecryptOrDecodeBuffer().
|
| + void DoDecryptOrDecodeBuffer(DemuxerStream::Status status,
|
| + const scoped_refptr<DecoderBuffer>& buffer);
|
| +
|
| void DecodeBuffer(const scoped_refptr<DecoderBuffer>& buffer);
|
| bool Decode(const scoped_refptr<DecoderBuffer>& buffer,
|
| scoped_refptr<VideoFrame>* video_frame);
|
|
|
| - // Handles (re-)initializing the decoder with a (new) config.
|
| - // Returns true if initialization was successful.
|
| - bool ConfigureDecoder();
|
| -
|
| - // Releases resources associated with |codec_context_| and |av_frame_|
|
| - // and resets them to NULL.
|
| - void ReleaseFFmpegResources();
|
| -
|
| // Reset decoder and call |reset_cb_|.
|
| void DoReset();
|
|
|
| + void CopyVpxImageTo(const vpx_image* vpx_image,
|
| + scoped_refptr<VideoFrame>* video_frame);
|
| +
|
| scoped_refptr<base::MessageLoopProxy> message_loop_;
|
|
|
| DecoderState state_;
|
|
|
| StatisticsCB statistics_cb_;
|
| -
|
| ReadCB read_cb_;
|
| base::Closure reset_cb_;
|
|
|
| - // FFmpeg structures owned by this object.
|
| - AVCodecContext* codec_context_;
|
| - AVFrame* av_frame_;
|
| -
|
| // Pointer to the demuxer stream that will feed us compressed buffers.
|
| scoped_refptr<DemuxerStream> demuxer_stream_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(FFmpegVideoDecoder);
|
| + vpx_codec_ctx* vpx_codec_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(VpxVideoDecoder);
|
| };
|
|
|
| } // namespace media
|
|
|
| -#endif // MEDIA_FILTERS_FFMPEG_VIDEO_DECODER_H_
|
| +#endif // MEDIA_FILTERS_VPX_VIDEO_DECODER_H_
|
|
|