原创 被同事扔過來hpp文件作爲接口文件怎麼辦?

hpp文件一般是聲明和定義都在一個文件裏面,使用的時候,直接include就可以用了,不需要額外編譯鏈接庫。 關鍵是給的hpp文件裏面還有namspace 包含這。 1 如果我在多個.cpp文件中使用,都需要include進來,這樣鏈接的

原创 x264 rdo調整

x264 在編碼完成一個宏塊後,會重新根據rdo參數再次編碼一次。 舉個例子,如果最終得到的satd 是 20,當前的量化qp是25,計算出來的結果就全部是0,cbp 的6bits 全是0,x264 rdo 會嘗試把qp值調小一點,重新編

原创 C++模板偏特化簡單demo

#include <stdio.h> #include <stdlib.h> template<typename A> A AddTwo(A a,A b) {     printf("its defailt.\n");     retur

原创 C++ 拷貝構造的一個小陷阱

Widget& Widget::opterator=(const Widget& rhs) {        delete pb;        pb = new Bitmap(*rhs.pb);        return *this;

原创 x264宏塊帶權預測以及運動補償

先解釋下,運動補償和帶權預測 1 運動補償 ,h264編碼器爲了讓宏塊的運動預測更加精確,通過差值的方法,將像素最大差值到1/4像素的方式,生成新的宏塊,從而減少運動殘差。 2 帶權預測,h264在做宏塊差值的時候,首先以幀爲單位,計算當

原创 Nat種類和p2p打洞

nat (Network Address Translation)是一種吧內網ip端口轉換爲外網地址端口的網絡設備。 一般作爲局域網內網的網關。 nat有幾種不同的類型 1 full clone  全克隆,一個內網ip,端口映射一組外網i

原创 fec淺析

fec (Forward Error Correction) ,向前糾錯。 fec 主要用於在傳輸過程中,發現帶寬時夠的,但是會有丟包的情況。 一般用於udp傳輸,比如webrtc傳視頻, 視頻會議傳輸視頻。 另外提一下的是,udp傳輸視

原创 TCP擁塞控制算法,以及長肥管道

linux內核裏面擁塞控制算法比較多,目前大部分用的cubic算法。 在內核裏面代碼是怎樣實現的呢? static struct tcp_congestion_ops cubictcp __read_mostly = {     .ini

原创 bbr淺析

前面一節講了tcp擁塞控制算法cubic, tcp擁塞控制的弊端, 1 在窗口增長的時候,是盲目的,增長到一定值,然後回調到1,然後快速恢復到ssthresh水平,然後慢啓動 2 cubic發送數據包的時候,一次性發給路由器,容易造成路由

原创 h264編碼分析-哥倫布編碼

1 首先h264爲什麼選用哥倫布編碼? 因爲h264協議爲了節省bits,沒有規定字段表示數據字段長度/數據字段可以根據自身的實際值, 可長可短,這樣可以大程度上的節省bit。 2 無符號指數哥倫布編碼如何編碼的? 在實際數據前面有幾個0

原创 C++模板進階 SFINAE機制

SFINAE 可以理解爲一個缺省模板匹配,雖然模板匹配的時候會匹配任意類型,但是 在閉包內部也會是按照最佳匹配來的,當沒有匹配上的時候會報編譯錯誤,這樣不符合我們的要求。再 怎麼地也要能編譯運行嘛。 #include <iostream>

原创 C++返回局部引用異常過程分析

std::vector<int>&& Ref() {  std::vector<int> iv;  iv.push_back(1);  iv.push_back(1);  iv.push_back(1);  iv.push_back(1)

原创 關於ffmpeg內存管理函數av_malloc和av_free/av_freep

最近在項目中,需要自己在ffmpeg中實現一個濾鏡,用到了大塊內存的申請和釋放。 於是用ffmpeg申請接口av_malloc,申請,釋放使用的av_freep。 然後問題就來了,莫名其妙的core掉了。怎麼也查不到原因,最後看到ffmp

原创 wireshark抓包分析-tcp包長度

1 最近分析rtmp數據包的時候,用tcpdump抓到一段數據包,有一部分理解不了。 tcp連接的時候,協商的mss是1460,爲什麼這裏傳輸的時候是2920字節? 2 原因分析,tcpdump工作在數據鏈路層,linux系統在設置了ts

原创 如何在ffmpeg中添加自定義濾鏡

ffmpeg中濾鏡有兩種,一種是處理濾鏡,一種是源濾鏡 1 處理濾鏡是有輸入的,有輸出的如 vf_unsharp 2 源濾鏡 沒有輸入,只有輸出 如src_movie.c 一 先看下如何添加一個處理濾鏡 AVFilter ff_vf_ro