🎞️ Codec Architecture β€” x264, x265, dan Teknik Kompresi Video Modern

Video codec modern (H.264, H.265, VP9, AV1) menggunakan arsitektur hibrida yang telah menjadi standar industri selama 20+ tahun: prediksi + transform + kuantisasi + entropi coding. Inti dari kompresi video adalah menghilangkan redundansi dalam 3 domain: spasial (intra prediction + DCT), temporal (motion estimation + compensation), dan statistik (CABAC/CAVLC). Dokumen ini membedah setiap blok, dengan referensi spesifik ke implementasi x264 (H.264) dan x265 (H.265/HEVC), termasuk mode rate control, presets, dan tuning untuk berbagai use case.


1. Prinsip Dasar: Redundansi Tiga Domain

Video adalah urutan gambar (frame) yang berubah seiring waktu. Kompresi video mengeksploitasi:

Domain RedundansiSumberCara EksploitasiRasio Pengurangan
SpasialPiksel dalam satu frame yang mirip (langit biru)Intra prediction ~ DCT ~ quantization5-10Γ—
TemporalFrame yang mirip dengan frame sebelumnyaMotion estimation + inter prediction10-100Γ—
PsikovisualMata manusia tidak sensitif ke detail tertentuQuantization matrix, chroma subsampling2-4Γ—
StatistikSimbol coding yang redundanCABAC / CAVLC entropy coding10-20%

Total rasio kompresi: 100-1000Γ— dari raw video. Raw 1080p @ 30fps = ~1.5 Gbps. H.264 @ 5 Mbps = 300Γ— kompresi.


2. Arsitektur Hibrida β€” Blok Diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Frame      β”‚   β”‚ Prediksi     β”‚   β”‚ Transform  β”‚   β”‚ Kuan-    β”‚
β”‚ Input      │──→│ (Intra/Inter)│──→│ DCT/DST    │──→│ tisasi   │──┐
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
                        β”‚                                          β”‚
                        β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
                        └───│ Frame     │←─│ Invers     β”‚β†β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ Buffer    β”‚  β”‚ Transform  β”‚
                            β”‚ (Referensi)β”‚  + Dequant   β”‚
                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                   β”‚
                                              β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”
                                              β”‚ Entropi β”‚
                                              β”‚ Coding  │──→ Bitstream
                                              β”‚ CABAC   β”‚   (H.264 Annex B)
                                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2.1 Setiap Blok Dijelaskan

BlokFungsiKompleksitasAlgoritma
Intra PredictionPrediksi piksel dari piksel tetangga dalam frame yang samaO(block)Angled prediction (H.264: 9 modes, H.265: 35, AV1: 56+)
Motion EstimationCari block paling cocok di frame referensiO(search_window Γ— block_size)Diamond search, hexagon search, PMVFAST
DCTUbah residual ke domain frekuensiO(NΒ² log N)DCT 4Γ—4, 8Γ—8 (fast DCT via Chen algorithm)
QuantizationBuang koefisien frekuensi tinggiO(64) per blockDead-zone quantizer, trellis quantization
Deblocking FilterHaluskan block boundary artifactsO(frame)Adaptive deblocking (H.264: in-loop, H.265: SAO)
CABACEntropy coding adaptif konteksO(bin)Binary arithmetic coding (M coder)

3. Intra Prediction β€” Redundansi Spasial

3.1 H.264 Intra Modes

H.264 mendefinisikan 9 mode prediksi untuk block 4Γ—4 dan 4 mode untuk block 16Γ—16:

Mode 0 (Vertical):     Piksel disalin dari block di atas
Mode 1 (Horizontal):   Piksel disalin dari block di kiri
Mode 2 (DC):           Rata-rata piksel dari atas + kiri
Mode 3 (Diagonal Down-Left):  Prediksi diagonal 45Β°
Mode 4 (Diagonal Down-Right): Prediksi diagonal -45Β°
Mode 5 (Vertical-Right):  Prediksi 26.6Β° dari vertikal
Mode 6 (Horizontal-Down): Prediksi 26.6Β° dari horizontal
Mode 7 (Vertical-Left):   Prediksi -26.6Β° dari vertikal
Mode 8 (Horizontal-Up):   Prediksi -26.6Β° dari horizontal

3.2 H.265 β€” 35 Modes

H.265/HEVC meningkatkan jumlah mode intra menjadi 35 β€” 33 angular modes + DC + Planar. Angular modes mencakup sudut dari -135Β° sampai 180Β° dengan step ~5Β°.

3.3 AV1 β€” 56+ Modes

AV1 (Alliance for Open Media) memperkenalkan directional modes + palette mode (untuk screen content) + recursive filtering. Hasilnya: ~30% lebih efisien dari H.265.


4. Motion Estimation β€” Jantung Kompleksitas

4.1 Bagaimana ME Bekerja

Untuk setiap block 16Γ—16 (macroblock) di frame saat ini, encoder mencari block paling mirip di frame referensi dalam jendela pencarian (misal Β±64 piksel):

// Simplified diamond search
int best_sad = INT_MAX;
int best_mv_x = 0, best_mv_y = 0;
 
// Center β€” motion vector (0,0) β€” biasanya yang paling umum
int sad = compute_SAD(current_block, reference_at(0,0));
best_sad = sad;
 
// Diamond pattern: center, up, down, left, right
int pattern_sads[4];
pattern_sads[0] = compute_SAD(center, reference_block(0, -1));  // up
pattern_sads[1] = compute_SAD(center, reference_block(0, +1));  // down
pattern_sads[2] = compute_SAD(center, reference_block(-1, 0));  // left
pattern_sads[3] = compute_SAD(center, reference_block(+1, 0));  // right
 
// Ulangi dengan diamond yang lebih besar sampai SAD tidak berkurang

4.2 SAD β€” Sum of Absolute Differences

SAD adalah metrik paling umum untuk motion estimation:

Dimana C = block saat ini, R = block referensi, N = ukuran block.

Instruksi hardware: SSE4.1 MPSADBW (Multi-Packed Sum-Absolute-Differences) memproses 8Γ—8 SAD dalam satu instruksi. AVX2 VPSADBW memproses 16Γ—8 dalam satu instruksi.

4.3 Sub-Pixel Motion

Gerakan nyata jarang tepat integer pixel. H.264 mendukung motion vector dengan presisi 1/4 pixel (quarter-pel):

Integer pixel grid:  X . X . X . X
                     . . . . . . .
Quarter-pel:        X o X o X o X
                     o o o o o o o
                     X o X o X o X

Interpolasi sub-pixel dilakukan dengan filter FIR 6-tap (H.264) atau DCT-based interpolation (H.265).


5. DCT & Quantization

5.1 Discrete Cosine Transform

Setelah prediksi, residual (selisih) di-transform dengan DCT. Untuk block 4Γ—4 di H.264:

Dimana = residual 4Γ—4, = matriks transform, = elemen-wise multiplication, = scaling factor.

Output: Koefisien DCT β€” (DC, frekuensi rendah) di pojok kiri atas, koefisien frekuensi tinggi di kanan bawah.

5.2 Quantization

Quantization membagi koefisien DCT dengan quantization parameter (QP):

QPQP_stepVisual QualityBitrate (1080p)
184Transparent~20 Mbps
237Excellent~8 Mbps
2813Good~4 Mbps
3325Fair~2 Mbps
3850Poor~1 Mbps
43100Bad~0.5 Mbps

Trellis quantization: x264/x265 menggunakan trellis quantization β€” algoritma yang memilih koefisien mana yang akan di-zero-kan untuk trade-off bitrate vs distorsi optimal (RD optimization dengan Viterbi algorithm).


6. Entropy Coding β€” CABAC

6.1 CAVLC vs CABAC

AspekCAVLC (H.264 Baseline)CABAC (H.264 Main/High)
AlgoritmaContext-adaptive VLCBinary arithmetic coding
KompleksitasRendahTinggi
EfisiensiBaseline~10-15% lebih baik
DigunakanWebcam, video callBroadcast, Blu-ray, streaming

6.2 Cara Kerja CABAC

  1. Binarization: Setiap simbol coding diubah menjadi binary string (bin)
  2. Context modeling: Probabilitas tiap bin diadaptasi berdasarkan context (simbol sebelumnya, block position, slice type)
  3. Binary arithmetic coding: Range encoder yang membagi interval [0,1) berdasarkan probabilitas konteks

Probabilitas adaptif: CABAC menggunakan 460 context models di H.264, 1000+ di H.265. Setiap model memiliki state 7-bit yang diupdate setelah setiap bin.


7. x264 β€” Implementasi Referensi H.264

7.1 Presets & Tuning

x264 mendefinisikan preset (kecepatan) dan tuning (optimasi untuk konten spesifik):

Presets (kecepatan β†’ kualitas):

ultrafast ← fastest, worst compression
superfast
veryfast
faster
fast
medium   ← default
slow
slower
veryslow
placebo  ← slowest, best compression

Perbedaan kinerja antar preset:

PresetSpeed (fps)Bitrate (relatif)Komentar
ultrafast280 fps+100% (terbesar)Tanpa motion estimation, CAVLC saja
medium45 fps0% (baseline)Me = hexagon, subme = 7, ref = 3
slower15 fps-8%Me = multi-hexagon, subme = 9, ref = 8
placebo5 fps-12%Me = exhaustive, trellis = 2, demuix

7.2 Rate Control

ModeMetodeDigunakan untuk
CBRConstant bitrateStreaming real-time (video call)
CQPConstant quantizationArchiving, quality first
CRFConstant Rate FactorUmum (best trade-off)
ABRAverage bitrateUpload dengan batas bitrate
2-passVBR dengan 2 passDistribution (YouTube, Netflix)

CRF (0-51): Nilai default 23. Lebih rendah β†’ kualitas lebih tinggi. Setiap -6 β‰ˆ 2Γ— bitrate. CRF 17 β‰ˆ β€œtransparent” untuk konten regular. CRF 28 untuk production streaming.

7.3 Profile & Level

ProfileFiturDigunakan
BaselineI+P frames, CAVLCVideo call, webcam
MainI+P+B frames, CABACSD video
High8Γ—8 DCT, custom quantization matrixHD video, Blu-ray
High 1010-bit depthProfessional production
High 4444:4:4 chroma, losslessMastering, archives

8. x265 β€” H.265/HEVC

8.1 Perbaikan Utama H.265

FiturH.264H.265Keuntungan
CTU (coding tree unit)16Γ—16 block64Γ—64 treeAdaptif lebih baik
Intra modes9 (4Γ—4) / 4 (16Γ—16)35 modesPrediksi lebih akurat
Motion compensation1/4 pel1/4 pel + DCT interpolationSub-pixel lebih presisi
SAO filterTidak adaSample Adaptive OffsetKurangi banding artifact
WavefrontSlice basedWPP (Wavefront Parallel)Multi-threading better
TilesTidak adaTiles + SlicesParallel encoding native

8.2 Kompleksitas Encoding

SettingFaktor vs x264 mediumUse Case
x265 medium5-10Γ— lebih lambatDefault
x265 slower20-40Γ— lebih lambatProduction movie
x265 placebo80-150Γ— lebih lambatArchiving, mastering

Bitrate saving: ~35-50% dibanding H.264 pada kualitas yang sama.


9. AV1 β€” Masa Depan Codec

AV1 (2019) menggunakan teknik yang lebih canggih:

TeknikAV1H.265Peningkatan
Intra prediction modes56+ angular + recursive35~5% gain
Warped motionβœ…βŒContent-adaptive warp
OBMCβœ…βŒOverlapped block motion
CDEF filterβœ…βŒConstrained directional enhancement
Film grain synthesisβœ…βŒSimpan bitrate untuk grain

Bitrate saving: ~30-50% dibanding H.265 pada kualitas yang sama. Tapi encode ~5-10Γ— lebih lambat dari x265.


References

  1. ITU-T H.264 / ISO 14496-10. β€œAdvanced Video Coding.” (2003-2025).
  2. ITU-T H.265 / ISO 23008-2. β€œHigh Efficiency Video Coding.” (2013-2025).
  3. AOM. β€œAV1 Bitstream & Decoding Specification.” (2019-2025).
  4. x264 Project. β€œx264 β€” A free H.264/AVC encoder.” VideoLAN. https://www.videolan.org/developers/x264.html
  5. x265 Project. β€œx265 β€” H.265/HEVC video encoder.” http://x265.org/
  6. I. E. Richardson. β€œH.264 and MPEG-4 Video Compression.” Wiley, 2003.
  7. G. J. Sullivan et al. β€œOverview of the High Efficiency Video Coding (HEVC) Standard.” IEEE TCSVT, 2012.
  8. J. Chen, Y. Chen. β€œAV1 Codec Overview and Performance Analysis.” 2020.
  9. D. Marpe et al. β€œContext-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard.” IEEE TCSVT, 2003.
  10. Dark Shikari (x264 lead). β€œRate Control in x264.” Doom9 Forum, 2006-2010.

Koneksi ke Vault

CatatanKoneksi
hierarchy-digital-plumbingΒ§4 Level 5 β€” Codec Multimedia
ffmpeg-multimedia-framework-deepdiveFFmpeg memanggil x264/x265 sebagai library eksternal
math-and-algorithmsDCT adalah aplikasi dari aljabar linier dan Fourier transform
computer-science-foundationsSIMD SAD, cache locality, parallel encoding (WPP, tiles)