| Index: media/cast/cast_sender_impl.cc
|
| diff --git a/media/cast/cast_sender_impl.cc b/media/cast/cast_sender_impl.cc
|
| index 571e92ef54093eb37c86221f8139c0eab5c1fe26..85bcc13eeb69e76efe9220c488013d673383b060 100644
|
| --- a/media/cast/cast_sender_impl.cc
|
| +++ b/media/cast/cast_sender_impl.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/logging.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "media/base/video_frame.h"
|
| +#include "media/cast/sender/video_frame_factory.h"
|
|
|
| namespace media {
|
| namespace cast {
|
| @@ -18,8 +19,11 @@ namespace cast {
|
| class LocalVideoFrameInput : public VideoFrameInput {
|
| public:
|
| LocalVideoFrameInput(scoped_refptr<CastEnvironment> cast_environment,
|
| - base::WeakPtr<VideoSender> video_sender)
|
| - : cast_environment_(cast_environment), video_sender_(video_sender) {}
|
| + base::WeakPtr<VideoSender> video_sender,
|
| + scoped_ptr<VideoFrameFactory> video_frame_factory)
|
| + : cast_environment_(cast_environment),
|
| + video_sender_(video_sender),
|
| + video_frame_factory_(video_frame_factory.Pass()) {}
|
|
|
| void InsertRawVideoFrame(const scoped_refptr<media::VideoFrame>& video_frame,
|
| const base::TimeTicks& capture_time) override {
|
| @@ -31,6 +35,16 @@ class LocalVideoFrameInput : public VideoFrameInput {
|
| capture_time));
|
| }
|
|
|
| + scoped_refptr<VideoFrame> CreateOptimizedFrame(
|
| + base::TimeDelta timestamp) override {
|
| + DCHECK(video_frame_factory_.get());
|
| + return video_frame_factory_->CreateFrame(timestamp);
|
| + }
|
| +
|
| + bool SupportsCreateOptimizedFrame() const override {
|
| + return video_frame_factory_.get() != nullptr;
|
| + }
|
| +
|
| protected:
|
| ~LocalVideoFrameInput() override {}
|
|
|
| @@ -39,6 +53,7 @@ class LocalVideoFrameInput : public VideoFrameInput {
|
|
|
| scoped_refptr<CastEnvironment> cast_environment_;
|
| base::WeakPtr<VideoSender> video_sender_;
|
| + scoped_ptr<VideoFrameFactory> video_frame_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(LocalVideoFrameInput);
|
| };
|
| @@ -169,8 +184,11 @@ void CastSenderImpl::OnVideoInitialized(
|
| const CastInitializationCallback& initialization_cb,
|
| media::cast::CastInitializationStatus result) {
|
| DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
|
| - video_frame_input_ =
|
| - new LocalVideoFrameInput(cast_environment_, video_sender_->AsWeakPtr());
|
| + if (result == STATUS_VIDEO_INITIALIZED) {
|
| + video_frame_input_ =
|
| + new LocalVideoFrameInput(cast_environment_, video_sender_->AsWeakPtr(),
|
| + video_sender_->CreateVideoFrameFactory());
|
| + }
|
| initialization_cb.Run(result);
|
| }
|
|
|
|
|