typedef base::Callback<void(Vp8Encoder*)> PassEncoderCallback;
-void LogFrameEncodedEvent(const base::TimeTicks& now,
- scoped_refptr<CastEnvironment> cast_environment,
- const base::TimeTicks& capture_time) {
- DCHECK(cast_environment->CurrentlyOn(CastEnvironment::MAIN));
- cast_environment->Logging()->InsertFrameEvent(now, kVideoFrameEncoded,
- GetVideoRtpTimestamp(capture_time), kFrameIdUnknown);
-}
-
void InitializeVp8EncoderOnEncoderThread(
const scoped_refptr<CastEnvironment>& environment,
Vp8Encoder* vp8_encoder) {
new transport::EncodedVideoFrame());
bool retval = vp8_encoder->Encode(video_frame, encoded_frame.get());
- base::TimeTicks now = environment->Clock()->NowTicks();
- environment->PostTask(
- CastEnvironment::MAIN, FROM_HERE,
- base::Bind(LogFrameEncodedEvent, now, environment, capture_time));
+ encoded_frame->rtp_timestamp = transport::GetVideoRtpTimestamp(capture_time);
if (!retval) {
VLOG(1) << "Encoding failed";
return;
}
environment->PostTask(
- CastEnvironment::MAIN, FROM_HERE,
+ CastEnvironment::MAIN,
+ FROM_HERE,
base::Bind(
- frame_encoded_callback,
- base::Passed(&encoded_frame),
- capture_time));
+ frame_encoded_callback, base::Passed(&encoded_frame), capture_time));
}
-
} // namespace
VideoEncoderImpl::VideoEncoderImpl(
skip_count_(0) {
if (video_config.codec == transport::kVp8) {
vp8_encoder_.reset(new Vp8Encoder(video_config, max_unacked_frames));
- cast_environment_->PostTask(
- CastEnvironment::VIDEO_ENCODER, FROM_HERE,
- base::Bind(
- &InitializeVp8EncoderOnEncoderThread,
- cast_environment,
- vp8_encoder_.get()));
+ cast_environment_->PostTask(CastEnvironment::VIDEO_ENCODER,
+ FROM_HERE,
+ base::Bind(&InitializeVp8EncoderOnEncoderThread,
+ cast_environment,
+ vp8_encoder_.get()));
} else {
DCHECK(false) << "Invalid config"; // Codec not supported.
}
DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
if (vp8_encoder_) {
cast_environment_->PostTask(
- CastEnvironment::VIDEO_ENCODER, FROM_HERE,
+ CastEnvironment::VIDEO_ENCODER,
+ FROM_HERE,
base::Bind(&base::DeletePointer<Vp8Encoder>, vp8_encoder_.release()));
}
}
const base::TimeTicks& capture_time,
const FrameEncodedCallback& frame_encoded_callback) {
DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
- if (video_config_.codec != transport::kVp8) return false;
+ if (video_config_.codec != transport::kVp8)
+ return false;
if (skip_next_frame_) {
++skip_count_;
}
base::TimeTicks now = cast_environment_->Clock()->NowTicks();
- cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameSentToEncoder,
- GetVideoRtpTimestamp(capture_time), kFrameIdUnknown);
- cast_environment_->PostTask(CastEnvironment::VIDEO_ENCODER, FROM_HERE,
- base::Bind(&EncodeVideoFrameOnEncoderThread,
- cast_environment_,
- vp8_encoder_.get(),
- video_frame,
- capture_time,
- dynamic_config_,
- frame_encoded_callback));
+ cast_environment_->Logging()->InsertFrameEvent(
+ now,
+ kVideoFrameSentToEncoder,
+ GetVideoRtpTimestamp(capture_time),
+ kFrameIdUnknown);
+ cast_environment_->PostTask(CastEnvironment::VIDEO_ENCODER,
+ FROM_HERE,
+ base::Bind(&EncodeVideoFrameOnEncoderThread,
+ cast_environment_,
+ vp8_encoder_.get(),
+ video_frame,
+ capture_time,
+ dynamic_config_,
+ frame_encoded_callback));
dynamic_config_.key_frame_requested = false;
return true;
dynamic_config_.latest_frame_id_to_reference = frame_id;
}
-int VideoEncoderImpl::NumberOfSkippedFrames() const {
- return skip_count_;
-}
+int VideoEncoderImpl::NumberOfSkippedFrames() const { return skip_count_; }
} // namespace cast
} // namespace media