- Timestamp:
- 08/26/10 19:37:23 (21 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/thelib/src/protocols/rtp/streaming/outnetrtpudph264stream.cpp
r103 r106 147 147 uint32_t processedLength, uint32_t totalLength, 148 148 double absoluteTimestamp, bool isAudio) { 149 //#define FeedDataAudioMPEG4Generic FeedDataAudioMPEG4Generic_one_by_one 150 #define FeedDataAudioMPEG4Generic FeedDataAudioMPEG4Generic_aggregate 149 151 return FeedDataAudioMPEG4Generic(pData, dataLength, processedLength, totalLength, 150 152 absoluteTimestamp); … … 277 279 } 278 280 279 bool OutNetRTPUDPH264Stream::FeedDataAudioMPEG4Generic (uint8_t *pData,281 bool OutNetRTPUDPH264Stream::FeedDataAudioMPEG4Generic_aggregate(uint8_t *pData, 280 282 uint32_t dataLength, uint32_t processedLength, uint32_t totalLength, 281 283 double absoluteTimestamp) { … … 343 345 return true; 344 346 } 345 //bool OutNetRTPUDPH264Stream::FeedDataAudioMPEG4Generic_one_by_one(uint8_t *pData, uint32_t dataLength, 346 // uint32_t processedLength, uint32_t totalLength,347 // double absoluteTimestamp) { 348 // return true; 349 ////1. We only support frame-by-frame approach350 //if (dataLength != totalLength) {351 //WARN("Chunked mode not yet supported");352 //return true;353 //}354 ///*355 //0 1 2 3356 //0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1357 //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+358 //|V=2|P|X| CC |M| PT | sequence number |359 //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+360 //| timestamp |361 //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+362 //| synchronization source (SSRC) identifier |363 //+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+364 //| contributing source (CSRC) identifiers |365 //| .... |366 //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+367 // 368 //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+-+369 //|AU-headers-length|AU-header|AU-header| |AU-header|padding|370 //| | (1) | (2) | | (n) | bits |371 //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+-+372 //*/373 // 374 //// _audioData.msg_iov[0].iov_base[00] V,P,X,CC375 //// _audioData.msg_iov[0].iov_base[01] M,PT376 //// _audioData.msg_iov[0].iov_base[02] sequence number377 //// _audioData.msg_iov[0].iov_base[03] sequence number378 //// _audioData.msg_iov[0].iov_base[04] timestamp379 //// _audioData.msg_iov[0].iov_base[05] timestamp380 //// _audioData.msg_iov[0].iov_base[06] timestamp381 //// _audioData.msg_iov[0].iov_base[07] timestamp382 //// _audioData.msg_iov[0].iov_base[08] SSRC383 //// _audioData.msg_iov[0].iov_base[09] SSRC384 //// _audioData.msg_iov[0].iov_base[10] SSRC385 //// _audioData.msg_iov[0].iov_base[11] SSRC386 //// _audioData.msg_iov[0].iov_base[12] AU-headers-length387 //// _audioData.msg_iov[0].iov_base[13] AU-headers-length388 // 389 ////3. counter390 //put_htons(((uint8_t *) _audioData.msg_iov[0].iov_base) + 2, _audioCounter);391 //_audioCounter++;392 // 393 ////4. Timestamp394 //put_htonl(((uint8_t *) _audioData.msg_iov[0].iov_base) + 4,395 //(uint32_t) (absoluteTimestamp396 //* (double) GetCapabilities()->audioCodecInfo.aac.sampleRate / 1000.000));397 // 398 //put_htons(((uint8_t *) _audioData.msg_iov[0].iov_base) + 12, 16);399 // 400 //uint16_t auHeader = (uint16_t) ((dataLength - 7) << 3);401 //put_htons(((uint8_t *) _audioData.msg_iov[1].iov_base), auHeader);402 //_audioData.msg_iov[1].iov_len = 2;403 // 404 // FINEST("%02x%02x %02x%02x %02x%02x%02x%02x %02x%02x%02x%02x - %02x%02x %02x%02x %08x %.2f",405 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[0],406 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[1],407 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[2],408 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[3],409 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[4],410 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[5],411 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[6],412 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[7],413 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[8],414 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[9],415 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[10],416 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[11],417 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[12],418 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[13],419 // ((uint8_t *) _audioData.msg_iov[1].iov_base)[0],420 // ((uint8_t *) _audioData.msg_iov[1].iov_base)[1],421 // dataLength - 7,422 // absoluteTimestamp);423 // 424 ////6. put the actual buffer425 //_audioData.msg_iov[2].iov_len = dataLength - 7;426 //_audioData.msg_iov[2].iov_base = pData + 7;427 // 428 //return _pConnectivity->FeedAudioData(_audioData);429 //}347 348 bool OutNetRTPUDPH264Stream::FeedDataAudioMPEG4Generic_one_by_one(uint8_t *pData, uint32_t dataLength, 349 uint32_t processedLength, uint32_t totalLength, 350 double absoluteTimestamp) { 351 //1. We only support frame-by-frame approach 352 if (dataLength != totalLength) { 353 WARN("Chunked mode not yet supported"); 354 return true; 355 } 356 /* 357 0 1 2 3 358 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 359 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 360 |V=2|P|X| CC |M| PT | sequence number | 361 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 362 | timestamp | 363 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 364 | synchronization source (SSRC) identifier | 365 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 366 | contributing source (CSRC) identifiers | 367 | .... | 368 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 369 370 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+-+ 371 |AU-headers-length|AU-header|AU-header| |AU-header|padding| 372 | | (1) | (2) | | (n) | bits | 373 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+-+ 374 */ 375 376 // _audioData.msg_iov[0].iov_base[00] V,P,X,CC 377 // _audioData.msg_iov[0].iov_base[01] M,PT 378 // _audioData.msg_iov[0].iov_base[02] sequence number 379 // _audioData.msg_iov[0].iov_base[03] sequence number 380 // _audioData.msg_iov[0].iov_base[04] timestamp 381 // _audioData.msg_iov[0].iov_base[05] timestamp 382 // _audioData.msg_iov[0].iov_base[06] timestamp 383 // _audioData.msg_iov[0].iov_base[07] timestamp 384 // _audioData.msg_iov[0].iov_base[08] SSRC 385 // _audioData.msg_iov[0].iov_base[09] SSRC 386 // _audioData.msg_iov[0].iov_base[10] SSRC 387 // _audioData.msg_iov[0].iov_base[11] SSRC 388 // _audioData.msg_iov[0].iov_base[12] AU-headers-length 389 // _audioData.msg_iov[0].iov_base[13] AU-headers-length 390 391 //3. counter 392 put_htons(((uint8_t *) _audioData.msg_iov[0].iov_base) + 2, _audioCounter); 393 _audioCounter++; 394 395 //4. Timestamp 396 put_htonl(((uint8_t *) _audioData.msg_iov[0].iov_base) + 4, 397 (uint32_t) (absoluteTimestamp 398 * (double) GetCapabilities()->audioCodecInfo.aac.sampleRate / 1000.000)); 399 400 put_htons(((uint8_t *) _audioData.msg_iov[0].iov_base) + 12, 16); 401 402 uint16_t auHeader = (uint16_t) ((dataLength - 7) << 3); 403 put_htons(((uint8_t *) _audioData.msg_iov[1].iov_base), auHeader); 404 _audioData.msg_iov[1].iov_len = 2; 405 406 // FINEST("%02x%02x %02x%02x %02x%02x%02x%02x %02x%02x%02x%02x - %02x%02x %02x%02x %08x %.2f", 407 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[0], 408 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[1], 409 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[2], 410 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[3], 411 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[4], 412 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[5], 413 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[6], 414 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[7], 415 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[8], 416 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[9], 417 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[10], 418 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[11], 419 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[12], 420 // ((uint8_t *) _audioData.msg_iov[0].iov_base)[13], 421 // ((uint8_t *) _audioData.msg_iov[1].iov_base)[0], 422 // ((uint8_t *) _audioData.msg_iov[1].iov_base)[1], 423 // dataLength - 7, 424 // absoluteTimestamp); 425 426 //6. put the actual buffer 427 _audioData.msg_iov[2].iov_len = dataLength - 7; 428 _audioData.msg_iov[2].iov_base = pData + 7; 429 430 return _pConnectivity->FeedAudioData(_audioData); 431 } 430 432 #endif /* HAS_PROTOCOL_RTP */ 431 433
Note: See TracChangeset
for help on using the changeset viewer.
