那曲网站建设,wordpress帐号,纪检监察工作 网站建设,网站效果//定义metartc的rtp扩展#xff0c;标准的webrtc不定义任何头扩展#xff0c;这个由开发者自定义。
int32_t yang_encode_rtpExtensions(YangRtpExtensions* ext,YangBuffer* buf){int32_t err Yang_Ok;//写两个字节0xBEDE#xff0c;扩展头标识#xff0c;开发者自己定义…//定义metartc的rtp扩展标准的webrtc不定义任何头扩展这个由开发者自定义。
int32_t yang_encode_rtpExtensions(YangRtpExtensions* ext,YangBuffer* buf){int32_t err Yang_Ok;//写两个字节0xBEDE扩展头标识开发者自己定义。yang_write_2bytes(buf,0xBEDE);// Write length.int32_t len 0;//如果有twcc则加上它的lengthif (ext-twcc.has_twcc) {len yang_rtpExtensionTwcc_nb(ext-twcc);}//如果音频level有扩展则添加其lengthif (ext-audio_level.has_ext) {len yang_rtpExtensionOneByte_nb(ext-audio_level);}//将len进行4字节对齐不足时补足最后的4个字节。int32_t padding_count (len % 4 0) ? 0 : (4 - len % 4);len padding_count;//如果buf的长度不足以存放扩展头则输出error。if (!yang_buffer_require(buf,len)) {return yang_error_wrap(ERROR_RTC_RTP_MUXER, requires %d bytes, len);}//写len到buf中len / 4我理解是为了减少len的长度接收端在乘以4后获得实际长度。yang_write_2bytes(buf,len / 4);// Write extensions.//使用 TWCC接收方让发送方知道每个数据包的到达时间。让发送者测量数据包之间到达延迟的变化以及识别哪些数据包丢失或到达太晚而不能提供音频 / 视频源。随着这些数据的频繁交换发送方能够快速调整以适应不断变化的网络条件并使用诸如 GCC 的算法改变其输出带宽。if (ext-twcc.has_twcc) {if ((err yang_encode_rtpExtensionsTwcc(ext-twcc,buf)) ! Yang_Ok) {return yang_error_wrap(err, encode twcc extension);}}//写入audio_level的头扩展if (ext-audio_level.has_ext) {if (Yang_Ok ! (err yang_encode_rtpExtensionsOneByte(ext-audio_level,buf))) {return yang_error_wrap(err, encode audio level extension);}}// add paddingif (padding_count) {memset(buf-head, 0, padding_count);yang_buffer_skip(buf,padding_count);}return err;
}