原创 【算法】【sort 2.1.3】希爾排序

shell sort 是一種優化的 插入排序 基於插入排序,每個不斷縮小的區間得到後,都要做插入排序 效率不穩定,但是一般比 插入排序好 插入排序主要是做相鄰的交換 這東東有三層for 執行過程: [Running] g+

原创 【粗讀webrtc】jitterbuffer 3 :VCMInterFrameDelay 幀間延遲

代碼量不大 核心VCMInterFrameDelay 計算framedelay 幀間延遲 公式: *delay = static_cast<int64_t>(currentWallClock - _prevWallClock

原创 【粗讀webrtc】創建mediaengine

本人也寫過自己mediaengine 現在看下webrtc是怎麼做的 O:\WEBRWTCSTORE\webrtc-checkout\src\media\engine\webrtc_media_engine.h MediaEng

原创 【grpc resolver】 socket 工具類

grpc 1.22.0 最近實現了基於c core的resolver 插件 grpc 是跨平臺的 c core實現 字節序轉換 grpc_htons 本地的整型轉爲網絡字節序列相關 跨平臺實現 //grpc_hton

原创 webrtc架構整理

webrc架構 整理 對外的api 是 peerconnection類 內部是會話管理層 引擎層(ve ae 傳輸) 系統/硬件 相關 適配層 webrtc裏有一些名詞 av engine 屬於media模塊 5月份同步的webr

原创 【粗讀webrtc】UnhandledPacketsBuffer

media 裏面有個 UnhandledPacketsBuffer #include <stdint.h> #include <functional> #include <tuple> #include <utility> #

原创 【粗讀webrtc】NACK 重傳 :RtpPacketHistory NackList

rtp 的包類型裏有支持FEC NACK的包 重傳包: kRetransmission 對NACK的應答包 FEC包: kForwardErrorCorrection 填充包 kPadding: 保證BWTE用的 , RTX

原创 【粗讀webrtc】 RtpPacketToSend

rtp_rtcp_format 模塊 O:\WEBRWTCSTORE\webrtc-checkout\src\modules\rtp_rtcp\source\rtp_packet_to_send.h -封裝 rtpPacket

原创 【整理】webrtc 線程模型

webrtc 線程模型整理 線程模型有助於把控整體設計 線程間通信有助於理解緩存和時序設計 核心線程 從PeerConnectionFactory這個類中可知: 首先,webrtc中至少有三個非常重要的線程(當然還有別的線程):

原创 【算法】 二分查找

二分查找 看着是個最簡單的算法 沒想到細節很頭疼 細節是魔鬼啊 按照mid的計算:如果是奇數數組,mid 剛好在中間,如果是偶數,mid 是偏向於left的,所以mid 是比較容易 == left的 leecode標準二分查找

原创 【粗讀webrtc】 jitterbuffer 2 音視頻抖動緩衝區

webrtc音視頻抖動緩衝區僞代碼 大神的總結:webrtc音視頻抖動緩衝區僞代碼 rtp包幾個時間值: 接收時間 ,發送時間,網絡傳輸時間,網絡延遲時間(網絡排隊) rtp包的接收時間 = sendtime + transf

原创 【粗讀webrtc】視頻幀接收到渲染 : VCMReceiver

VCMReceiver 接口少見的簡單 承上(接收)啓下(解碼) 封裝 timing 和 jitterbuffer VCMEncodedFrame 是用於解碼的輸入幀 VCMPacket 是用於插入JB的輸入包 VCMReceiv

原创 【macbook】vscode 配置支持c++11

快吐血了 c++98 就是改不過來 重新建立一個目錄 執行code runner,說沒配置 加了根據文件類型來的配置 竟然不跑 安裝code runner 插件 安裝後,會有一個三角在右邊,點一下就可以編譯運行 加 ta

原创 【粗讀webrtc】RTCP擴展反饋報文 接收 觸發 nack重傳

RTCP擴展反饋報文 接收 觸發 nack重傳 WebRTC 中丟包重傳 NACK 實現分析 NACK則在接收端檢測到數據丟包後,發送NACK報文到發送端; 發送端根據NACK報文中的序列號,在發送緩衝區找到對應的數據包,重新發送

原创 【粗度webrtc】RtpPacket

涉及到rtp 協議,完全說清楚,應該比較麻煩。 頭 + payload 兩部分 封裝的包數據:CopyOnWriteBuffer // Buffer. rtc::CopyOnWriteBuffer Buffer() c