#include "remoting/client/software_video_renderer.h"
#include <memory>
#include <utility>
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/task/single_thread_task_runner.h"
#include "remoting/base/util.h"
#include "remoting/client/client_context.h"
#include "remoting/codec/video_decoder.h"
#include "remoting/codec/video_decoder_verbatim.h"
#include "remoting/codec/video_decoder_vpx.h"
#include "remoting/proto/video.pb.h"
#include "remoting/protocol/frame_consumer.h"
#include "remoting/protocol/frame_stats.h"
#include "remoting/protocol/performance_tracker.h"
#include "remoting/protocol/session_config.h"
#include "third_party/libyuv/include/libyuv/convert_argb.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
ChannelConfig;
SessionConfig;
namespace remoting {
namespace {
std::unique_ptr<webrtc::DesktopFrame> DoDecodeFrame(
VideoDecoder* decoder,
std::unique_ptr<VideoPacket> packet,
std::unique_ptr<webrtc::DesktopFrame> frame) { … }
}
SoftwareVideoRenderer::SoftwareVideoRenderer(protocol::FrameConsumer* consumer)
: … { … }
SoftwareVideoRenderer::SoftwareVideoRenderer(
std::unique_ptr<protocol::FrameConsumer> consumer)
: … { … }
SoftwareVideoRenderer::~SoftwareVideoRenderer() { … }
bool SoftwareVideoRenderer::Initialize(
const ClientContext& client_context,
protocol::FrameStatsConsumer* stats_consumer) { … }
void SoftwareVideoRenderer::OnSessionConfig(
const protocol::SessionConfig& config) { … }
protocol::VideoStub* SoftwareVideoRenderer::GetVideoStub() { … }
protocol::FrameConsumer* SoftwareVideoRenderer::GetFrameConsumer() { … }
protocol::FrameStatsConsumer* SoftwareVideoRenderer::GetFrameStatsConsumer() { … }
void SoftwareVideoRenderer::ProcessVideoPacket(
std::unique_ptr<VideoPacket> packet,
base::OnceClosure done) { … }
void SoftwareVideoRenderer::RenderFrame(
std::unique_ptr<protocol::FrameStats> stats,
base::OnceClosure done,
std::unique_ptr<webrtc::DesktopFrame> frame) { … }
void SoftwareVideoRenderer::OnFrameRendered(
std::unique_ptr<protocol::FrameStats> stats,
base::OnceClosure done) { … }
}