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

Side by Side Diff: webrtc/modules/audio_coding/test/Channel.cc

Issue 1610073003: Switch CriticalSectionWrapper->rtc::CriticalSection in modules/audio_coding. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 11 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/audio_coding/test/Channel.h ('k') | no next file » | 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
11 #include "webrtc/modules/audio_coding/test/Channel.h" 11 #include "webrtc/modules/audio_coding/test/Channel.h"
12 12
13 #include <assert.h> 13 #include <assert.h>
14 #include <iostream> 14 #include <iostream>
15 15
16 #include "webrtc/base/format_macros.h" 16 #include "webrtc/base/format_macros.h"
17 #include "webrtc/system_wrappers/include/tick_util.h" 17 #include "webrtc/system_wrappers/include/tick_util.h"
18 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
19 18
20 namespace webrtc { 19 namespace webrtc {
21 20
22 int32_t Channel::SendData(FrameType frameType, 21 int32_t Channel::SendData(FrameType frameType,
23 uint8_t payloadType, 22 uint8_t payloadType,
24 uint32_t timeStamp, 23 uint32_t timeStamp,
25 const uint8_t* payloadData, 24 const uint8_t* payloadData,
26 size_t payloadSize, 25 size_t payloadSize,
27 const RTPFragmentationHeader* fragmentation) { 26 const RTPFragmentationHeader* fragmentation) {
28 WebRtcRTPHeader rtpInfo; 27 WebRtcRTPHeader rtpInfo;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 _leftChannel = false; 87 _leftChannel = false;
89 rtpInfo.type.Audio.channel = 1; 88 rtpInfo.type.Audio.channel = 1;
90 } else { 89 } else {
91 memcpy(&rtpInfo, &_rtpInfo, sizeof(WebRtcRTPHeader)); 90 memcpy(&rtpInfo, &_rtpInfo, sizeof(WebRtcRTPHeader));
92 _leftChannel = true; 91 _leftChannel = true;
93 rtpInfo.type.Audio.channel = 2; 92 rtpInfo.type.Audio.channel = 2;
94 } 93 }
95 } 94 }
96 } 95 }
97 96
98 _channelCritSect->Enter(); 97 _channelCritSect.Enter();
99 if (_saveBitStream) { 98 if (_saveBitStream) {
100 //fwrite(payloadData, sizeof(uint8_t), payloadSize, _bitStreamFile); 99 //fwrite(payloadData, sizeof(uint8_t), payloadSize, _bitStreamFile);
101 } 100 }
102 101
103 if (!_isStereo) { 102 if (!_isStereo) {
104 CalcStatistics(rtpInfo, payloadSize); 103 CalcStatistics(rtpInfo, payloadSize);
105 } 104 }
106 _useLastFrameSize = false; 105 _useLastFrameSize = false;
107 _lastInTimestamp = timeStamp; 106 _lastInTimestamp = timeStamp;
108 _totalBytes += payloadDataSize; 107 _totalBytes += payloadDataSize;
109 _channelCritSect->Leave(); 108 _channelCritSect.Leave();
110 109
111 if (_useFECTestWithPacketLoss) { 110 if (_useFECTestWithPacketLoss) {
112 _packetLoss += 1; 111 _packetLoss += 1;
113 if (_packetLoss == 3) { 112 if (_packetLoss == 3) {
114 _packetLoss = 0; 113 _packetLoss = 0;
115 return 0; 114 return 0;
116 } 115 }
117 } 116 }
118 117
119 if (num_packets_to_drop_ > 0) { 118 if (num_packets_to_drop_ > 0) {
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 _payloadStats[n].lastTimestamp = rtpInfo.header.timestamp; 217 _payloadStats[n].lastTimestamp = rtpInfo.header.timestamp;
219 _payloadStats[n].payloadType = rtpInfo.header.payloadType; 218 _payloadStats[n].payloadType = rtpInfo.header.payloadType;
220 memset(_payloadStats[n].frameSizeStats, 0, MAX_NUM_FRAMESIZES * 219 memset(_payloadStats[n].frameSizeStats, 0, MAX_NUM_FRAMESIZES *
221 sizeof(ACMTestFrameSizeStats)); 220 sizeof(ACMTestFrameSizeStats));
222 } 221 }
223 } 222 }
224 223
225 Channel::Channel(int16_t chID) 224 Channel::Channel(int16_t chID)
226 : _receiverACM(NULL), 225 : _receiverACM(NULL),
227 _seqNo(0), 226 _seqNo(0),
228 _channelCritSect(CriticalSectionWrapper::CreateCriticalSection()),
229 _bitStreamFile(NULL), 227 _bitStreamFile(NULL),
230 _saveBitStream(false), 228 _saveBitStream(false),
231 _lastPayloadType(-1), 229 _lastPayloadType(-1),
232 _isStereo(false), 230 _isStereo(false),
233 _leftChannel(true), 231 _leftChannel(true),
234 _lastInTimestamp(0), 232 _lastInTimestamp(0),
235 _useLastFrameSize(false), 233 _useLastFrameSize(false),
236 _lastFrameSizeSample(0), 234 _lastFrameSizeSample(0),
237 _packetLoss(0), 235 _packetLoss(0),
238 _useFECTestWithPacketLoss(false), 236 _useFECTestWithPacketLoss(false),
(...skipping 19 matching lines...) Expand all
258 _saveBitStream = true; 256 _saveBitStream = true;
259 char bitStreamFileName[500]; 257 char bitStreamFileName[500];
260 sprintf(bitStreamFileName, "bitStream_%d.dat", chID); 258 sprintf(bitStreamFileName, "bitStream_%d.dat", chID);
261 _bitStreamFile = fopen(bitStreamFileName, "wb"); 259 _bitStreamFile = fopen(bitStreamFileName, "wb");
262 } else { 260 } else {
263 _saveBitStream = false; 261 _saveBitStream = false;
264 } 262 }
265 } 263 }
266 264
267 Channel::~Channel() { 265 Channel::~Channel() {
268 delete _channelCritSect;
269 } 266 }
270 267
271 void Channel::RegisterReceiverACM(AudioCodingModule* acm) { 268 void Channel::RegisterReceiverACM(AudioCodingModule* acm) {
272 _receiverACM = acm; 269 _receiverACM = acm;
273 return; 270 return;
274 } 271 }
275 272
276 void Channel::ResetStats() { 273 void Channel::ResetStats() {
277 int n; 274 int n;
278 int k; 275 int k;
279 _channelCritSect->Enter(); 276 _channelCritSect.Enter();
280 _lastPayloadType = -1; 277 _lastPayloadType = -1;
281 for (n = 0; n < MAX_NUM_PAYLOADS; n++) { 278 for (n = 0; n < MAX_NUM_PAYLOADS; n++) {
282 _payloadStats[n].payloadType = -1; 279 _payloadStats[n].payloadType = -1;
283 _payloadStats[n].newPacket = true; 280 _payloadStats[n].newPacket = true;
284 for (k = 0; k < MAX_NUM_FRAMESIZES; k++) { 281 for (k = 0; k < MAX_NUM_FRAMESIZES; k++) {
285 _payloadStats[n].frameSizeStats[k].frameSizeSample = 0; 282 _payloadStats[n].frameSizeStats[k].frameSizeSample = 0;
286 _payloadStats[n].frameSizeStats[k].maxPayloadLen = 0; 283 _payloadStats[n].frameSizeStats[k].maxPayloadLen = 0;
287 _payloadStats[n].frameSizeStats[k].numPackets = 0; 284 _payloadStats[n].frameSizeStats[k].numPackets = 0;
288 _payloadStats[n].frameSizeStats[k].totalPayloadLenByte = 0; 285 _payloadStats[n].frameSizeStats[k].totalPayloadLenByte = 0;
289 _payloadStats[n].frameSizeStats[k].totalEncodedSamples = 0; 286 _payloadStats[n].frameSizeStats[k].totalEncodedSamples = 0;
290 } 287 }
291 } 288 }
292 _beginTime = TickTime::MillisecondTimestamp(); 289 _beginTime = TickTime::MillisecondTimestamp();
293 _totalBytes = 0; 290 _totalBytes = 0;
294 _channelCritSect->Leave(); 291 _channelCritSect.Leave();
295 } 292 }
296 293
297 int16_t Channel::Stats(CodecInst& codecInst, 294 int16_t Channel::Stats(CodecInst& codecInst,
298 ACMTestPayloadStats& payloadStats) { 295 ACMTestPayloadStats& payloadStats) {
299 _channelCritSect->Enter(); 296 _channelCritSect.Enter();
300 int n; 297 int n;
301 payloadStats.payloadType = -1; 298 payloadStats.payloadType = -1;
302 for (n = 0; n < MAX_NUM_PAYLOADS; n++) { 299 for (n = 0; n < MAX_NUM_PAYLOADS; n++) {
303 if (_payloadStats[n].payloadType == codecInst.pltype) { 300 if (_payloadStats[n].payloadType == codecInst.pltype) {
304 memcpy(&payloadStats, &_payloadStats[n], sizeof(ACMTestPayloadStats)); 301 memcpy(&payloadStats, &_payloadStats[n], sizeof(ACMTestPayloadStats));
305 break; 302 break;
306 } 303 }
307 } 304 }
308 if (payloadStats.payloadType == -1) { 305 if (payloadStats.payloadType == -1) {
309 _channelCritSect->Leave(); 306 _channelCritSect.Leave();
310 return -1; 307 return -1;
311 } 308 }
312 for (n = 0; n < MAX_NUM_FRAMESIZES; n++) { 309 for (n = 0; n < MAX_NUM_FRAMESIZES; n++) {
313 if (payloadStats.frameSizeStats[n].frameSizeSample == 0) { 310 if (payloadStats.frameSizeStats[n].frameSizeSample == 0) {
314 _channelCritSect->Leave(); 311 _channelCritSect.Leave();
315 return 0; 312 return 0;
316 } 313 }
317 payloadStats.frameSizeStats[n].usageLenSec = (double) payloadStats 314 payloadStats.frameSizeStats[n].usageLenSec = (double) payloadStats
318 .frameSizeStats[n].totalEncodedSamples / (double) codecInst.plfreq; 315 .frameSizeStats[n].totalEncodedSamples / (double) codecInst.plfreq;
319 316
320 payloadStats.frameSizeStats[n].rateBitPerSec = 317 payloadStats.frameSizeStats[n].rateBitPerSec =
321 payloadStats.frameSizeStats[n].totalPayloadLenByte * 8 318 payloadStats.frameSizeStats[n].totalPayloadLenByte * 8
322 / payloadStats.frameSizeStats[n].usageLenSec; 319 / payloadStats.frameSizeStats[n].usageLenSec;
323 320
324 } 321 }
325 _channelCritSect->Leave(); 322 _channelCritSect.Leave();
326 return 0; 323 return 0;
327 } 324 }
328 325
329 void Channel::Stats(uint32_t* numPackets) { 326 void Channel::Stats(uint32_t* numPackets) {
330 _channelCritSect->Enter(); 327 _channelCritSect.Enter();
331 int k; 328 int k;
332 int n; 329 int n;
333 memset(numPackets, 0, MAX_NUM_PAYLOADS * sizeof(uint32_t)); 330 memset(numPackets, 0, MAX_NUM_PAYLOADS * sizeof(uint32_t));
334 for (k = 0; k < MAX_NUM_PAYLOADS; k++) { 331 for (k = 0; k < MAX_NUM_PAYLOADS; k++) {
335 if (_payloadStats[k].payloadType == -1) { 332 if (_payloadStats[k].payloadType == -1) {
336 break; 333 break;
337 } 334 }
338 numPackets[k] = 0; 335 numPackets[k] = 0;
339 for (n = 0; n < MAX_NUM_FRAMESIZES; n++) { 336 for (n = 0; n < MAX_NUM_FRAMESIZES; n++) {
340 if (_payloadStats[k].frameSizeStats[n].frameSizeSample == 0) { 337 if (_payloadStats[k].frameSizeStats[n].frameSizeSample == 0) {
341 break; 338 break;
342 } 339 }
343 numPackets[k] += _payloadStats[k].frameSizeStats[n].numPackets; 340 numPackets[k] += _payloadStats[k].frameSizeStats[n].numPackets;
344 } 341 }
345 } 342 }
346 _channelCritSect->Leave(); 343 _channelCritSect.Leave();
347 } 344 }
348 345
349 void Channel::Stats(uint8_t* payloadType, uint32_t* payloadLenByte) { 346 void Channel::Stats(uint8_t* payloadType, uint32_t* payloadLenByte) {
350 _channelCritSect->Enter(); 347 _channelCritSect.Enter();
351 348
352 int k; 349 int k;
353 int n; 350 int n;
354 memset(payloadLenByte, 0, MAX_NUM_PAYLOADS * sizeof(uint32_t)); 351 memset(payloadLenByte, 0, MAX_NUM_PAYLOADS * sizeof(uint32_t));
355 for (k = 0; k < MAX_NUM_PAYLOADS; k++) { 352 for (k = 0; k < MAX_NUM_PAYLOADS; k++) {
356 if (_payloadStats[k].payloadType == -1) { 353 if (_payloadStats[k].payloadType == -1) {
357 break; 354 break;
358 } 355 }
359 payloadType[k] = (uint8_t) _payloadStats[k].payloadType; 356 payloadType[k] = (uint8_t) _payloadStats[k].payloadType;
360 payloadLenByte[k] = 0; 357 payloadLenByte[k] = 0;
361 for (n = 0; n < MAX_NUM_FRAMESIZES; n++) { 358 for (n = 0; n < MAX_NUM_FRAMESIZES; n++) {
362 if (_payloadStats[k].frameSizeStats[n].frameSizeSample == 0) { 359 if (_payloadStats[k].frameSizeStats[n].frameSizeSample == 0) {
363 break; 360 break;
364 } 361 }
365 payloadLenByte[k] += (uint16_t) _payloadStats[k].frameSizeStats[n] 362 payloadLenByte[k] += (uint16_t) _payloadStats[k].frameSizeStats[n]
366 .totalPayloadLenByte; 363 .totalPayloadLenByte;
367 } 364 }
368 } 365 }
369 366
370 _channelCritSect->Leave(); 367 _channelCritSect.Leave();
371 } 368 }
372 369
373 void Channel::PrintStats(CodecInst& codecInst) { 370 void Channel::PrintStats(CodecInst& codecInst) {
374 ACMTestPayloadStats payloadStats; 371 ACMTestPayloadStats payloadStats;
375 Stats(codecInst, payloadStats); 372 Stats(codecInst, payloadStats);
376 printf("%s %d kHz\n", codecInst.plname, codecInst.plfreq / 1000); 373 printf("%s %d kHz\n", codecInst.plname, codecInst.plfreq / 1000);
377 printf("=====================================================\n"); 374 printf("=====================================================\n");
378 if (payloadStats.payloadType == -1) { 375 if (payloadStats.payloadType == -1) {
379 printf("No Packets are sent with payload-type %d (%s)\n\n", 376 printf("No Packets are sent with payload-type %d (%s)\n\n",
380 codecInst.pltype, codecInst.plname); 377 codecInst.pltype, codecInst.plname);
(...skipping 18 matching lines...) Expand all
399 (unsigned int) payloadStats.frameSizeStats[k].numPackets); 396 (unsigned int) payloadStats.frameSizeStats[k].numPackets);
400 printf("Duration...................... %0.3f sec\n\n", 397 printf("Duration...................... %0.3f sec\n\n",
401 payloadStats.frameSizeStats[k].usageLenSec); 398 payloadStats.frameSizeStats[k].usageLenSec);
402 399
403 } 400 }
404 401
405 } 402 }
406 403
407 uint32_t Channel::LastInTimestamp() { 404 uint32_t Channel::LastInTimestamp() {
408 uint32_t timestamp; 405 uint32_t timestamp;
409 _channelCritSect->Enter(); 406 _channelCritSect.Enter();
410 timestamp = _lastInTimestamp; 407 timestamp = _lastInTimestamp;
411 _channelCritSect->Leave(); 408 _channelCritSect.Leave();
412 return timestamp; 409 return timestamp;
413 } 410 }
414 411
415 double Channel::BitRate() { 412 double Channel::BitRate() {
416 double rate; 413 double rate;
417 uint64_t currTime = TickTime::MillisecondTimestamp(); 414 uint64_t currTime = TickTime::MillisecondTimestamp();
418 _channelCritSect->Enter(); 415 _channelCritSect.Enter();
419 rate = ((double) _totalBytes * 8.0) / (double) (currTime - _beginTime); 416 rate = ((double) _totalBytes * 8.0) / (double) (currTime - _beginTime);
420 _channelCritSect->Leave(); 417 _channelCritSect.Leave();
421 return rate; 418 return rate;
422 } 419 }
423 420
424 } // namespace webrtc 421 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/test/Channel.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698