您好,登錄后才能下訂單哦!
這兩天做一個 H.265 編碼測試的功能,編碼器需要手動輸入 raw yuv frame 的 stride (也可以稱作 pitch)數組大小,這個倒是讓我一愣,做了這么久的音視頻編解碼的工作,長時間使用 ffmpeg,或者 x264 的上層接口去封裝一個視頻幀,竟然對這個該如何賦值給搞不清楚了,這個如果配置不對的話,那么編碼出來的視頻幀將是花屏的,所以在此還是鞏固一下基礎知識吧。
stride 可以稱之為“跨距”,可以理解為每個 (Y、U、V)每個分量在每一行所占的字節數,這里我們拿 I420 做為例子,我們知道 I420 的數據存儲方式為平面存儲,即Y、U、V 分開存儲,如下圖示:
p_w_picpath.png
這樣我們可以直觀的看出,Y 分量每一行的字節數為圖像的寬度 img_width,而由于 U 分量和 V 分量為每兩行 Y 像素共享一行 U 和 V 像素,所以 U 和 V 分量在每一行所占的字節數為 圖像寬度的一半,即 img_widht / 2,即:
int y_stride = img_width; int u_stride = img_width / 2; int v_stride = img_width / 2;
以上計算方式僅適用于 I420 / YUV420P 色彩空間格式的視頻幀數據,其它格式請參照 stride 的定義應該就可以很快的確定各個分量的大小了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。