| 格式 | 採樣描述 | 每像素位數 | 數據量比例 |
|---|---|---|---|
| YUV 4:4:4 | 每 Y 對應一組 UV | 24 bit | 1.0× |
| YUV 4:2:2 | 每 2 Y 共用一組 UV(水平 2:1) | 16 bit | 0.67× |
| YUV 4:2:0 | 每 4 Y (2×2 區塊) 共用一組 UV | 12 bit | 0.5× |
三分量分開連續存放:所有 Y → 所有 U → 所有 V。
像素級交錯存放。
Y 獨立一平面,UV 交錯打包第二平面。
總大小 = W × H × 1.5 字節
Y 平面:W × H = 720 × 480 字節
U 平面:W × H / 4 = 720 × 480 / 4 字節
V 平面:W × H / 4 = 720 × 480 / 4 字節
存儲順序:Y 連續 → U 連續 → V 連續(I420)或 Y → V → U(YV12)
public static void rotateYUV240SP(byte[] src, byte[] des, int width, int height) {
int wh = width * height;
// 旋轉 Y 平面
int k = 0;
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
des[k++] = src[width * j + i];
}
}
// 旋轉 UV 平面 (交錯存儲)
for (int i = 0; i < width; i += 2) {
for (int j = 0; j < height / 2; j++) {
des[k++] = src[wh + width * j + i]; // U
des[k++] = src[wh + width * j + i + 1]; // V
}
}
}
| 別名 | 採樣 | 存儲類型 | 平面順序 |
|---|---|---|---|
| I420 | 420 | Planar (3-plane) | Y → U → V |
| YV12 | 420 | Planar (3-plane) | Y → V → U |
| NV12 | 420 | Semi-Planar (2-plane) | Y → UV (U first) |
| NV21 | 420 | Semi-Planar (2-plane) | Y → VU (V first) |
| YUYV | 422 | Packed | Y0 U0 Y1 V0 |
| UYVY | 422 | Packed | U0 Y0 V0 Y1 |
| YUV422P | 422 | Planar (3-plane) | Y → U → V |
v4l2-ctl --list-formats-ext),避免格式不匹配導致色彩異常。C 編譯錯誤 "storage class specified for parameter" 根因與排查技巧
Linux 下 SSD 優化實戰:TRIM/discard、I/O 調度器、文件系統參數、日誌模式四大維度延壽提速
Linux 實現單網卡多 IP 與多網卡 Bonding 負載均衡/冗余完整配置
51 單片機 P0 口上拉電阻詳解:何時必須外接、何時可省略、驅動電路設計指南
Linux 常見故障診斷說明(上):啟動、檔案系統、函式庫、登入、KDE 環境
Linux 核心外設 I/O 內存映射機制:動態 ioremap 與靜態 map_desc 完整對比