| Index: media/cast/video_sender/video_encoder_impl.cc
|
| diff --git a/media/cast/video_sender/video_encoder_impl.cc b/media/cast/video_sender/video_encoder_impl.cc
|
| deleted file mode 100644
|
| index 445328188c6dfc3a8af2e1598f7e86c3e94d7208..0000000000000000000000000000000000000000
|
| --- a/media/cast/video_sender/video_encoder_impl.cc
|
| +++ /dev/null
|
| @@ -1,138 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "media/cast/video_sender/video_encoder_impl.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| -#include "base/callback.h"
|
| -#include "base/logging.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "media/base/video_frame.h"
|
| -#include "media/cast/cast_defines.h"
|
| -#include "media/cast/video_sender/codecs/vp8/vp8_encoder.h"
|
| -#include "media/cast/video_sender/fake_software_video_encoder.h"
|
| -
|
| -namespace media {
|
| -namespace cast {
|
| -
|
| -namespace {
|
| -
|
| -typedef base::Callback<void(Vp8Encoder*)> PassEncoderCallback;
|
| -
|
| -void InitializeEncoderOnEncoderThread(
|
| - const scoped_refptr<CastEnvironment>& environment,
|
| - SoftwareVideoEncoder* encoder) {
|
| - DCHECK(environment->CurrentlyOn(CastEnvironment::VIDEO));
|
| - encoder->Initialize();
|
| -}
|
| -
|
| -void EncodeVideoFrameOnEncoderThread(
|
| - scoped_refptr<CastEnvironment> environment,
|
| - SoftwareVideoEncoder* encoder,
|
| - const scoped_refptr<media::VideoFrame>& video_frame,
|
| - const base::TimeTicks& capture_time,
|
| - const VideoEncoderImpl::CodecDynamicConfig& dynamic_config,
|
| - const VideoEncoderImpl::FrameEncodedCallback& frame_encoded_callback) {
|
| - DCHECK(environment->CurrentlyOn(CastEnvironment::VIDEO));
|
| - if (dynamic_config.key_frame_requested) {
|
| - encoder->GenerateKeyFrame();
|
| - }
|
| - encoder->LatestFrameIdToReference(
|
| - dynamic_config.latest_frame_id_to_reference);
|
| - encoder->UpdateRates(dynamic_config.bit_rate);
|
| -
|
| - scoped_ptr<transport::EncodedFrame> encoded_frame(
|
| - new transport::EncodedFrame());
|
| - if (!encoder->Encode(video_frame, encoded_frame.get())) {
|
| - VLOG(1) << "Encoding failed";
|
| - return;
|
| - }
|
| - if (encoded_frame->data.empty()) {
|
| - VLOG(1) << "Encoding resulted in an empty frame";
|
| - return;
|
| - }
|
| - encoded_frame->rtp_timestamp = transport::GetVideoRtpTimestamp(capture_time);
|
| - encoded_frame->reference_time = capture_time;
|
| -
|
| - environment->PostTask(
|
| - CastEnvironment::MAIN,
|
| - FROM_HERE,
|
| - base::Bind(
|
| - frame_encoded_callback, base::Passed(&encoded_frame)));
|
| -}
|
| -} // namespace
|
| -
|
| -VideoEncoderImpl::VideoEncoderImpl(
|
| - scoped_refptr<CastEnvironment> cast_environment,
|
| - const VideoSenderConfig& video_config,
|
| - int max_unacked_frames)
|
| - : cast_environment_(cast_environment) {
|
| - if (video_config.codec == transport::CODEC_VIDEO_VP8) {
|
| - encoder_.reset(new Vp8Encoder(video_config, max_unacked_frames));
|
| - cast_environment_->PostTask(CastEnvironment::VIDEO,
|
| - FROM_HERE,
|
| - base::Bind(&InitializeEncoderOnEncoderThread,
|
| - cast_environment,
|
| - encoder_.get()));
|
| -#ifndef OFFICIAL_BUILD
|
| - } else if (video_config.codec == transport::CODEC_VIDEO_FAKE) {
|
| - encoder_.reset(new FakeSoftwareVideoEncoder(video_config));
|
| -#endif
|
| - } else {
|
| - DCHECK(false) << "Invalid config"; // Codec not supported.
|
| - }
|
| -
|
| - dynamic_config_.key_frame_requested = false;
|
| - dynamic_config_.latest_frame_id_to_reference = kStartFrameId;
|
| - dynamic_config_.bit_rate = video_config.start_bitrate;
|
| -}
|
| -
|
| -VideoEncoderImpl::~VideoEncoderImpl() {
|
| - DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
|
| - if (encoder_) {
|
| - cast_environment_->PostTask(
|
| - CastEnvironment::VIDEO,
|
| - FROM_HERE,
|
| - base::Bind(&base::DeletePointer<SoftwareVideoEncoder>,
|
| - encoder_.release()));
|
| - }
|
| -}
|
| -
|
| -bool VideoEncoderImpl::EncodeVideoFrame(
|
| - const scoped_refptr<media::VideoFrame>& video_frame,
|
| - const base::TimeTicks& capture_time,
|
| - const FrameEncodedCallback& frame_encoded_callback) {
|
| - DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
|
| - cast_environment_->PostTask(CastEnvironment::VIDEO,
|
| - FROM_HERE,
|
| - base::Bind(&EncodeVideoFrameOnEncoderThread,
|
| - cast_environment_,
|
| - encoder_.get(),
|
| - video_frame,
|
| - capture_time,
|
| - dynamic_config_,
|
| - frame_encoded_callback));
|
| -
|
| - dynamic_config_.key_frame_requested = false;
|
| - return true;
|
| -}
|
| -
|
| -// Inform the encoder about the new target bit rate.
|
| -void VideoEncoderImpl::SetBitRate(int new_bit_rate) {
|
| - dynamic_config_.bit_rate = new_bit_rate;
|
| -}
|
| -
|
| -// Inform the encoder to encode the next frame as a key frame.
|
| -void VideoEncoderImpl::GenerateKeyFrame() {
|
| - dynamic_config_.key_frame_requested = true;
|
| -}
|
| -
|
| -// Inform the encoder to only reference frames older or equal to frame_id;
|
| -void VideoEncoderImpl::LatestFrameIdToReference(uint32 frame_id) {
|
| - dynamic_config_.latest_frame_id_to_reference = frame_id;
|
| -}
|
| -
|
| -} // namespace cast
|
| -} // namespace media
|
|
|