| Index: webrtc/video/video_receive_stream.cc
|
| diff --git a/webrtc/video/video_receive_stream.cc b/webrtc/video/video_receive_stream.cc
|
| index 174d35256493ce4d166c6e20c59c0ab40eae629c..8956bc4e0cec2ab7076fe8338560643f57f3fb05 100644
|
| --- a/webrtc/video/video_receive_stream.cc
|
| +++ b/webrtc/video/video_receive_stream.cc
|
| @@ -285,6 +285,17 @@ bool VideoReceiveStream::OnRecoveredPacket(const uint8_t* packet,
|
| return rtp_stream_receiver_.OnRecoveredPacket(packet, length);
|
| }
|
|
|
| +void VideoReceiveStream::SetSyncChannel(VoiceEngine* voice_engine,
|
| + int audio_channel_id) {
|
| + if (voice_engine && audio_channel_id != -1) {
|
| + VoEVideoSync* voe_sync_interface = VoEVideoSync::GetInterface(voice_engine);
|
| + rtp_stream_sync_.ConfigureSync(audio_channel_id, voe_sync_interface);
|
| + voe_sync_interface->Release();
|
| + } else {
|
| + rtp_stream_sync_.ConfigureSync(-1, nullptr);
|
| + }
|
| +}
|
| +
|
| void VideoReceiveStream::Start() {
|
| if (decode_thread_.IsRunning())
|
| return;
|
| @@ -362,21 +373,28 @@ void VideoReceiveStream::Stop() {
|
| transport_adapter_.Disable();
|
| }
|
|
|
| -void VideoReceiveStream::SetSyncChannel(VoiceEngine* voice_engine,
|
| - int audio_channel_id) {
|
| - if (voice_engine && audio_channel_id != -1) {
|
| - VoEVideoSync* voe_sync_interface = VoEVideoSync::GetInterface(voice_engine);
|
| - rtp_stream_sync_.ConfigureSync(audio_channel_id, voe_sync_interface);
|
| - voe_sync_interface->Release();
|
| - } else {
|
| - rtp_stream_sync_.ConfigureSync(-1, nullptr);
|
| - }
|
| -}
|
| -
|
| VideoReceiveStream::Stats VideoReceiveStream::GetStats() const {
|
| return stats_proxy_.GetStats();
|
| }
|
|
|
| +void VideoReceiveStream::EnableEncodedFrameRecording(rtc::PlatformFile file,
|
| + size_t byte_limit) {
|
| + {
|
| + rtc::CritScope lock(&ivf_writer_lock_);
|
| + if (file == rtc::kInvalidPlatformFileValue) {
|
| + ivf_writer_.reset();
|
| + } else {
|
| + ivf_writer_ = IvfFileWriter::Wrap(rtc::File(file), byte_limit);
|
| + }
|
| + }
|
| +
|
| + if (file != rtc::kInvalidPlatformFileValue) {
|
| + // Make a keyframe appear as early as possible in the logs, to give actually
|
| + // decodable output.
|
| + RequestKeyFrame();
|
| + }
|
| +}
|
| +
|
| // TODO(tommi): This method grabs a lock 6 times.
|
| void VideoReceiveStream::OnFrame(const VideoFrame& video_frame) {
|
| // TODO(tommi): OnDecodedFrame grabs a lock, incidentally the same lock
|
| @@ -402,13 +420,6 @@ void VideoReceiveStream::OnFrame(const VideoFrame& video_frame) {
|
| stats_proxy_.OnRenderedFrame(video_frame);
|
| }
|
|
|
| -void VideoReceiveStream::OnCompleteFrame(
|
| - std::unique_ptr<video_coding::FrameObject> frame) {
|
| - int last_continuous_pid = frame_buffer_->InsertFrame(std::move(frame));
|
| - if (last_continuous_pid != -1)
|
| - rtp_stream_receiver_.FrameContinuous(last_continuous_pid);
|
| -}
|
| -
|
| // TODO(asapersson): Consider moving callback from video_encoder.h or
|
| // creating a different callback.
|
| EncodedImageCallback::Result VideoReceiveStream::OnEncodedImage(
|
| @@ -434,6 +445,22 @@ EncodedImageCallback::Result VideoReceiveStream::OnEncodedImage(
|
| return Result(Result::OK, encoded_image._timeStamp);
|
| }
|
|
|
| +void VideoReceiveStream::SendNack(
|
| + const std::vector<uint16_t>& sequence_numbers) {
|
| + rtp_stream_receiver_.RequestPacketRetransmit(sequence_numbers);
|
| +}
|
| +
|
| +void VideoReceiveStream::RequestKeyFrame() {
|
| + rtp_stream_receiver_.RequestKeyFrame();
|
| +}
|
| +
|
| +void VideoReceiveStream::OnCompleteFrame(
|
| + std::unique_ptr<video_coding::FrameObject> frame) {
|
| + int last_continuous_pid = frame_buffer_->InsertFrame(std::move(frame));
|
| + if (last_continuous_pid != -1)
|
| + rtp_stream_receiver_.FrameContinuous(last_continuous_pid);
|
| +}
|
| +
|
| bool VideoReceiveStream::DecodeThreadFunction(void* ptr) {
|
| static_cast<VideoReceiveStream*>(ptr)->Decode();
|
| return true;
|
| @@ -463,32 +490,5 @@ void VideoReceiveStream::Decode() {
|
| }
|
| }
|
|
|
| -void VideoReceiveStream::SendNack(
|
| - const std::vector<uint16_t>& sequence_numbers) {
|
| - rtp_stream_receiver_.RequestPacketRetransmit(sequence_numbers);
|
| -}
|
| -
|
| -void VideoReceiveStream::EnableEncodedFrameRecording(rtc::PlatformFile file,
|
| - size_t byte_limit) {
|
| - {
|
| - rtc::CritScope lock(&ivf_writer_lock_);
|
| - if (file == rtc::kInvalidPlatformFileValue) {
|
| - ivf_writer_.reset();
|
| - } else {
|
| - ivf_writer_ = IvfFileWriter::Wrap(rtc::File(file), byte_limit);
|
| - }
|
| - }
|
| -
|
| - if (file != rtc::kInvalidPlatformFileValue) {
|
| - // Make a keyframe appear as early as possible in the logs, to give actually
|
| - // decodable output.
|
| - RequestKeyFrame();
|
| - }
|
| -}
|
| -
|
| -void VideoReceiveStream::RequestKeyFrame() {
|
| - rtp_stream_receiver_.RequestKeyFrame();
|
| -}
|
| -
|
| } // namespace internal
|
| } // namespace webrtc
|
|
|