diff options
-rw-r--r-- | media/player/wtl_renderer.cc | 24 | ||||
-rw-r--r-- | media/player/wtl_renderer.h | 18 |
2 files changed, 26 insertions, 16 deletions
diff --git a/media/player/wtl_renderer.cc b/media/player/wtl_renderer.cc index 20056d3..45b380b 100644 --- a/media/player/wtl_renderer.cc +++ b/media/player/wtl_renderer.cc @@ -9,16 +9,26 @@ WtlVideoRenderer::WtlVideoRenderer(WtlVideoWindow* window) : window_(window) { } -bool WtlVideoRenderer::OnInitialize(size_t width, size_t height) { +WtlVideoRenderer::~WtlVideoRenderer() { +} + +// static +bool WtlVideoRenderer::IsMediaFormatSupported( + const media::MediaFormat& media_format) { + int width = 0; + int height = 0; + return ParseMediaFormat(media_format, &width, &height); +} + +bool WtlVideoRenderer::OnInitialize(media::VideoDecoder* decoder) { + int width = 0; + int height = 0; + if (!ParseMediaFormat(decoder->media_format(), &width, &height)) + return false; window_->SetSize(width, height); return true; } -void WtlVideoRenderer::OnPaintNeeded() { +void WtlVideoRenderer::OnFrameAvailable() { window_->Invalidate(); } - -void WtlVideoRenderer::GetCurrentFrame( - scoped_refptr<media::VideoFrame>* frame_out) { - return media::VideoRendererBase::GetCurrentFrame(frame_out); -} diff --git a/media/player/wtl_renderer.h b/media/player/wtl_renderer.h index 33724f5..38beb2f 100644 --- a/media/player/wtl_renderer.h +++ b/media/player/wtl_renderer.h @@ -7,24 +7,24 @@ #ifndef MEDIA_PLAYER_WTL_RENDERER_H_ #define MEDIA_PLAYER_WTL_RENDERER_H_ -#include "media/filters/video_renderer_base.h" +#include "media/filters/video_thread.h" class WtlVideoWindow; -class WtlVideoRenderer : public media::VideoRendererBase { +class WtlVideoRenderer : public media::VideoThread { public: explicit WtlVideoRenderer(WtlVideoWindow* window); - virtual bool OnInitialize(size_t width, size_t height); - virtual void OnPaintNeeded(); - void GetCurrentFrame(scoped_refptr<media::VideoFrame>* frame_out); - static bool IsMediaFormatSupported(const media::MediaFormat& format) { - return media::VideoRendererBase::IsMediaFormatSupported(format); - } + static bool IsMediaFormatSupported(const media::MediaFormat& media_format); + + protected: + virtual bool OnInitialize(media::VideoDecoder* decoder); + virtual void OnFrameAvailable(); private: + // Only allow to be deleted by reference counting. friend class scoped_refptr<WtlVideoRenderer>; - virtual ~WtlVideoRenderer() {} + virtual ~WtlVideoRenderer(); WtlVideoWindow* window_; |