Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Side by Side Diff: webrtc/modules/video_coding/receiver.cc

Issue 1778503002: Experiment for the nack module. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added histogram to BUILD.gn. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/modules/video_coding/receiver.h ('k') | webrtc/modules/video_coding/video_coding_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 12 matching lines...) Expand all
23 #include "webrtc/modules/video_coding/media_opt_util.h" 23 #include "webrtc/modules/video_coding/media_opt_util.h"
24 #include "webrtc/system_wrappers/include/clock.h" 24 #include "webrtc/system_wrappers/include/clock.h"
25 25
26 namespace webrtc { 26 namespace webrtc {
27 27
28 enum { kMaxReceiverDelayMs = 10000 }; 28 enum { kMaxReceiverDelayMs = 10000 };
29 29
30 VCMReceiver::VCMReceiver(VCMTiming* timing, 30 VCMReceiver::VCMReceiver(VCMTiming* timing,
31 Clock* clock, 31 Clock* clock,
32 EventFactory* event_factory) 32 EventFactory* event_factory)
33 : VCMReceiver::VCMReceiver(timing,
34 clock,
35 event_factory,
36 nullptr, // NackSender
37 nullptr) // KeyframeRequestSender
38 {}
39
40 VCMReceiver::VCMReceiver(VCMTiming* timing,
41 Clock* clock,
42 EventFactory* event_factory,
43 NackSender* nack_sender,
44 KeyFrameRequestSender* keyframe_request_sender)
33 : VCMReceiver(timing, 45 : VCMReceiver(timing,
34 clock, 46 clock,
35 std::unique_ptr<EventWrapper>(event_factory->CreateEvent()), 47 std::unique_ptr<EventWrapper>(event_factory->CreateEvent()),
36 std::unique_ptr<EventWrapper>(event_factory->CreateEvent())) { 48 std::unique_ptr<EventWrapper>(event_factory->CreateEvent()),
37 } 49 nack_sender,
50 keyframe_request_sender) {}
38 51
39 VCMReceiver::VCMReceiver(VCMTiming* timing, 52 VCMReceiver::VCMReceiver(VCMTiming* timing,
40 Clock* clock, 53 Clock* clock,
41 std::unique_ptr<EventWrapper> receiver_event, 54 std::unique_ptr<EventWrapper> receiver_event,
42 std::unique_ptr<EventWrapper> jitter_buffer_event) 55 std::unique_ptr<EventWrapper> jitter_buffer_event)
56 : VCMReceiver::VCMReceiver(timing,
57 clock,
58 std::move(receiver_event),
59 std::move(jitter_buffer_event),
60 nullptr, // NackSender
61 nullptr) // KeyframeRequestSender
62 {}
63
64 VCMReceiver::VCMReceiver(VCMTiming* timing,
65 Clock* clock,
66 std::unique_ptr<EventWrapper> receiver_event,
67 std::unique_ptr<EventWrapper> jitter_buffer_event,
68 NackSender* nack_sender,
69 KeyFrameRequestSender* keyframe_request_sender)
43 : crit_sect_(CriticalSectionWrapper::CreateCriticalSection()), 70 : crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
44 clock_(clock), 71 clock_(clock),
45 jitter_buffer_(clock_, std::move(jitter_buffer_event)), 72 jitter_buffer_(clock_,
73 std::move(jitter_buffer_event),
74 nack_sender,
75 keyframe_request_sender),
46 timing_(timing), 76 timing_(timing),
47 render_wait_event_(std::move(receiver_event)), 77 render_wait_event_(std::move(receiver_event)),
48 max_video_delay_ms_(kMaxVideoDelayMs) { 78 max_video_delay_ms_(kMaxVideoDelayMs) {
49 Reset(); 79 Reset();
50 } 80 }
51 81
52 VCMReceiver::~VCMReceiver() { 82 VCMReceiver::~VCMReceiver() {
53 render_wait_event_->Set(); 83 render_wait_event_->Set();
54 delete crit_sect_; 84 delete crit_sect_;
55 } 85 }
56 86
57 void VCMReceiver::Reset() { 87 void VCMReceiver::Reset() {
58 CriticalSectionScoped cs(crit_sect_); 88 CriticalSectionScoped cs(crit_sect_);
59 if (!jitter_buffer_.Running()) { 89 if (!jitter_buffer_.Running()) {
60 jitter_buffer_.Start(); 90 jitter_buffer_.Start();
61 } else { 91 } else {
62 jitter_buffer_.Flush(); 92 jitter_buffer_.Flush();
63 } 93 }
64 } 94 }
65 95
66 void VCMReceiver::UpdateRtt(int64_t rtt) { 96 void VCMReceiver::UpdateRtt(int64_t rtt) {
67 jitter_buffer_.UpdateRtt(rtt); 97 jitter_buffer_.UpdateRtt(rtt);
68 } 98 }
69 99
100 int64_t VCMReceiver::TimeUntilNextProcess() {
101 return jitter_buffer_.TimeUntilNextProcess();
102 }
103
104 void VCMReceiver::Process() {
105 jitter_buffer_.Process();
106 }
107
70 int32_t VCMReceiver::InsertPacket(const VCMPacket& packet, 108 int32_t VCMReceiver::InsertPacket(const VCMPacket& packet,
71 uint16_t frame_width, 109 uint16_t frame_width,
72 uint16_t frame_height) { 110 uint16_t frame_height) {
73 // Insert the packet into the jitter buffer. The packet can either be empty or 111 // Insert the packet into the jitter buffer. The packet can either be empty or
74 // contain media at this point. 112 // contain media at this point.
75 bool retransmitted = false; 113 bool retransmitted = false;
76 const VCMFrameBufferEnum ret = 114 const VCMFrameBufferEnum ret =
77 jitter_buffer_.InsertPacket(packet, &retransmitted); 115 jitter_buffer_.InsertPacket(packet, &retransmitted);
78 if (ret == kOldPacket) { 116 if (ret == kOldPacket) {
79 return VCM_OK; 117 return VCM_OK;
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 uint32_t render_end = timing_->RenderTimeMs(timestamp_end, now_ms); 298 uint32_t render_end = timing_->RenderTimeMs(timestamp_end, now_ms);
261 return render_end - render_start; 299 return render_end - render_start;
262 } 300 }
263 301
264 void VCMReceiver::RegisterStatsCallback( 302 void VCMReceiver::RegisterStatsCallback(
265 VCMReceiveStatisticsCallback* callback) { 303 VCMReceiveStatisticsCallback* callback) {
266 jitter_buffer_.RegisterStatsCallback(callback); 304 jitter_buffer_.RegisterStatsCallback(callback);
267 } 305 }
268 306
269 } // namespace webrtc 307 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/receiver.h ('k') | webrtc/modules/video_coding/video_coding_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698