OLD | NEW |
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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 // Returns true if the jitter buffer is running. | 122 // Returns true if the jitter buffer is running. |
123 bool Running() const; | 123 bool Running() const; |
124 | 124 |
125 // Empty the jitter buffer of all its data. | 125 // Empty the jitter buffer of all its data. |
126 void Flush(); | 126 void Flush(); |
127 | 127 |
128 // Get the number of received frames, by type, since the jitter buffer | 128 // Get the number of received frames, by type, since the jitter buffer |
129 // was started. | 129 // was started. |
130 FrameCounts FrameStatistics() const; | 130 FrameCounts FrameStatistics() const; |
131 | 131 |
132 // The number of packets discarded by the jitter buffer because the decoder | |
133 // won't be able to decode them. | |
134 int num_not_decodable_packets() const; | |
135 | |
136 // Gets number of packets received. | 132 // Gets number of packets received. |
137 int num_packets() const; | 133 int num_packets() const; |
138 | 134 |
139 // Gets number of duplicated packets received. | 135 // Gets number of duplicated packets received. |
140 int num_duplicated_packets() const; | 136 int num_duplicated_packets() const; |
141 | 137 |
142 // Gets number of packets discarded by the jitter buffer. | 138 // Gets number of packets discarded by the jitter buffer. |
143 int num_discarded_packets() const; | 139 int num_discarded_packets() const; |
144 | 140 |
145 // Statistics, Calculate frame and bit rates. | 141 // Statistics, Calculate frame and bit rates. |
146 void IncomingRateStatistics(unsigned int* framerate, unsigned int* bitrate); | 142 void IncomingRateStatistics(unsigned int* framerate, unsigned int* bitrate); |
147 | 143 |
148 // Checks if the packet sequence will be complete if the next frame would be | |
149 // grabbed for decoding. That is, if a frame has been lost between the | |
150 // last decoded frame and the next, or if the next frame is missing one | |
151 // or more packets. | |
152 bool CompleteSequenceWithNextFrame(); | |
153 | |
154 // Wait |max_wait_time_ms| for a complete frame to arrive. | 144 // Wait |max_wait_time_ms| for a complete frame to arrive. |
155 // If found, a pointer to the frame is returned. Returns nullptr otherwise. | 145 // If found, a pointer to the frame is returned. Returns nullptr otherwise. |
156 VCMEncodedFrame* NextCompleteFrame(uint32_t max_wait_time_ms); | 146 VCMEncodedFrame* NextCompleteFrame(uint32_t max_wait_time_ms); |
157 | 147 |
158 // Locates a frame for decoding (even an incomplete) without delay. | 148 // Locates a frame for decoding (even an incomplete) without delay. |
159 // The function returns true once such a frame is found, its corresponding | 149 // The function returns true once such a frame is found, its corresponding |
160 // timestamp is returned. Otherwise, returns false. | 150 // timestamp is returned. Otherwise, returns false. |
161 bool NextMaybeIncompleteTimestamp(uint32_t* timestamp); | 151 bool NextMaybeIncompleteTimestamp(uint32_t* timestamp); |
162 | 152 |
163 // Extract frame corresponding to input timestamp. | 153 // Extract frame corresponding to input timestamp. |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 | 191 |
202 // Returns the current NACK mode. | 192 // Returns the current NACK mode. |
203 VCMNackMode nack_mode() const; | 193 VCMNackMode nack_mode() const; |
204 | 194 |
205 // Returns a list of the sequence numbers currently missing. | 195 // Returns a list of the sequence numbers currently missing. |
206 std::vector<uint16_t> GetNackList(bool* request_key_frame); | 196 std::vector<uint16_t> GetNackList(bool* request_key_frame); |
207 | 197 |
208 // Set decode error mode - Should not be changed in the middle of the | 198 // Set decode error mode - Should not be changed in the middle of the |
209 // session. Changes will not influence frames already in the buffer. | 199 // session. Changes will not influence frames already in the buffer. |
210 void SetDecodeErrorMode(VCMDecodeErrorMode error_mode); | 200 void SetDecodeErrorMode(VCMDecodeErrorMode error_mode); |
211 int64_t LastDecodedTimestamp() const; | |
212 VCMDecodeErrorMode decode_error_mode() const { return decode_error_mode_; } | 201 VCMDecodeErrorMode decode_error_mode() const { return decode_error_mode_; } |
213 | 202 |
214 void RegisterStatsCallback(VCMReceiveStatisticsCallback* callback); | 203 void RegisterStatsCallback(VCMReceiveStatisticsCallback* callback); |
215 | 204 |
216 int64_t TimeUntilNextProcess(); | 205 int64_t TimeUntilNextProcess(); |
217 void Process(); | 206 void Process(); |
218 | 207 |
219 private: | 208 private: |
220 class SequenceNumberLessThan { | 209 class SequenceNumberLessThan { |
221 public: | 210 public: |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 // frames. | 376 // frames. |
388 int frame_counter_; | 377 int frame_counter_; |
389 | 378 |
390 std::unique_ptr<NackModule> nack_module_; | 379 std::unique_ptr<NackModule> nack_module_; |
391 | 380 |
392 RTC_DISALLOW_COPY_AND_ASSIGN(VCMJitterBuffer); | 381 RTC_DISALLOW_COPY_AND_ASSIGN(VCMJitterBuffer); |
393 }; | 382 }; |
394 } // namespace webrtc | 383 } // namespace webrtc |
395 | 384 |
396 #endif // WEBRTC_MODULES_VIDEO_CODING_JITTER_BUFFER_H_ | 385 #endif // WEBRTC_MODULES_VIDEO_CODING_JITTER_BUFFER_H_ |
OLD | NEW |