- Timestamp:
- Jun 8, 2017 6:23:56 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia-codec/h264_packetizer.c
r4537 r5603 95 95 if (cfg && 96 96 cfg->mode != PJMEDIA_H264_PACKETIZER_MODE_NON_INTERLEAVED && 97 cfg->mode != PJMEDIA_H264_PACKETIZER_MODE_SINGLE_NAL) 97 cfg->mode != PJMEDIA_H264_PACKETIZER_MODE_SINGLE_NAL && 98 cfg->unpack_nal_start != 0 && cfg->unpack_nal_start != 3 && 99 cfg->unpack_nal_start != 4) 98 100 { 99 101 return PJ_ENOTSUP; … … 103 105 if (cfg) { 104 106 pj_memcpy(&p_->cfg, cfg, sizeof(*cfg)); 107 if (p_->cfg.unpack_nal_start == 0) 108 p_->cfg.unpack_nal_start = 3; 105 109 } else { 106 110 p_->cfg.mode = PJMEDIA_H264_PACKETIZER_MODE_NON_INTERLEAVED; 107 111 p_->cfg.mtu = PJMEDIA_MAX_VID_PAYLOAD_SIZE; 112 p_->cfg.unpack_nal_start = 3; 108 113 } 109 114 … … 348 353 unsigned *bits_pos) 349 354 { 350 const pj_uint8_t nal_start_code[3] = {0, 0, 1}; 355 const pj_uint8_t nal_start[4] = {0, 0, 0, 1}; 356 const pj_uint8_t *nal_start_code; 351 357 enum { MIN_PAYLOAD_SIZE = 2 }; 352 358 pj_uint8_t nal_type; 353 359 354 PJ_UNUSED_ARG(pktz); 360 nal_start_code = nal_start + PJ_ARRAY_SIZE(nal_start) - 361 pktz->cfg.unpack_nal_start; 355 362 356 363 #if DBG_UNPACKETIZE … … 385 392 386 393 /* Validate bitstream length */ 387 if (bits_len-*bits_pos < payload_len+ PJ_ARRAY_SIZE(nal_start_code)) {394 if (bits_len-*bits_pos < payload_len+pktz->cfg.unpack_nal_start) { 388 395 /* Insufficient bistream buffer, discard this payload */ 389 pj_assert(!"Insufficient H.26 3bitstream buffer");396 pj_assert(!"Insufficient H.264 bitstream buffer"); 390 397 return PJ_ETOOSMALL; 391 398 } 392 399 393 400 /* Write NAL unit start code */ 394 pj_memcpy(p, &nal_start_code, PJ_ARRAY_SIZE(nal_start_code));395 p += PJ_ARRAY_SIZE(nal_start_code);401 pj_memcpy(p, nal_start_code, pktz->cfg.unpack_nal_start); 402 p += pktz->cfg.unpack_nal_start; 396 403 397 404 /* Write NAL unit */ … … 420 427 if (bits_len - *bits_pos < payload_len + 32) { 421 428 /* Insufficient bistream buffer, discard this payload */ 422 pj_assert(!"Insufficient H.26 3bitstream buffer");429 pj_assert(!"Insufficient H.264 bitstream buffer"); 423 430 return PJ_ETOOSMALL; 424 431 } … … 433 440 434 441 /* Write NAL unit start code */ 435 pj_memcpy(p, &nal_start_code, PJ_ARRAY_SIZE(nal_start_code));436 p += PJ_ARRAY_SIZE(nal_start_code);442 pj_memcpy(p, nal_start_code, pktz->cfg.unpack_nal_start); 443 p += pktz->cfg.unpack_nal_start; 437 444 438 445 /* Get NAL unit size */ … … 471 478 472 479 /* Validate bitstream length */ 473 if (bits_len-*bits_pos < payload_len+ PJ_ARRAY_SIZE(nal_start_code)) {480 if (bits_len-*bits_pos < payload_len+pktz->cfg.unpack_nal_start) { 474 481 /* Insufficient bistream buffer, drop this packet */ 475 pj_assert(!"Insufficient H.26 3bitstream buffer");482 pj_assert(!"Insufficient H.264 bitstream buffer"); 476 483 pktz->unpack_prev_lost = PJ_TRUE; 477 484 return PJ_ETOOSMALL; … … 487 494 if (S) { 488 495 /* This is the first part, write NAL unit start code */ 489 pj_memcpy(p, &nal_start_code, PJ_ARRAY_SIZE(nal_start_code));490 p += PJ_ARRAY_SIZE(nal_start_code);496 pj_memcpy(p, nal_start_code, pktz->cfg.unpack_nal_start); 497 p += pktz->cfg.unpack_nal_start; 491 498 492 499 /* Write NAL unit octet */
Note: See TracChangeset
for help on using the changeset viewer.