ÜKS ASTE AHELAST — MIS SAABUB, MIS VÄLJUB JA MIS EDASPIDI KATKEB
Kus see kodeerimiskonveieris asub
Videokodeerija ei ole üks algoritm, vaid kaheksa astet kindlas järjekorras — ja järjekord ei ole suvaline: iga aste on olemas seetõttu, et eelmine tegi tema töö võimalikuks. See tööriist modelleerib neist üht. Allolev ahel viitab ülejäänud seitsmele.
GOP-struktuuri visualiseerija — otsustab, millised kaadrid kodeeritakse eraldi ja millised erinevustena
- Mis saabub
- Rida diskreeditud kaadreid, ükski neist pole veel kodeeritud.
- Mis väljub
- Määrang: I-kaadrid kodeeritakse eraldi, P- ja B-kaadrid viitekaadrite suhtes.
- Mida järgmine aste eeldab
- Liikumise hindamine töötab ainult P- ja B-kaadritel. I-kaader jätab selle täielikult vahele.
- Mis siin valesti läheb
- See aste otsustab, kas järgmine antud kaadri puhul üldse käivitub, seega juhib ta 04. astet, mitte lihtsalt eelneb sellele. Pikad vahed I-kaadrite vahel pakivad tunduvalt paremini ja halvendavad kerimist, sest mängija peab suvalise punktini jõudmiseks dekodeerima viimasest I-kaadrist edasi.
Ülesanne täielikult lahendatud
-
Kaadrite jaotus ja keskmine kaadri suurus 48 kaadri korral kiirusel 24 fps 6 sammu
Blu-ray-stiilis pildigrupp (GOP): 48 kaadrit, 3 järjestikust B-kaadrit viitekaadrite vahel, esitatuna kiirusel 24 fps. Oleta, et I-kaader maksab 100 suhtelist ühikut, P-kaader 12 ja B-kaader 6. Leia kaadrite koosseis ja keskmine kaadri suurus, seejärel selgita välja, kui palju täiendavat kompressiooni pikem GOP võiks veel anda.
-
Pildigrupi avab üks I-kaader, mis jätab 47 kohta. Need kohad kordavad 4-kaadrilist üksust — 3 B-kaadrit ja neid ankurdav P-kaader — ning 47 ei jagu 4-ga. 47 = 11 × 4 + 3, seega 11 täielikku üksust ja 3 B-kaadri pikkune lõpuosa.
-
See annab 11 P-kaadrit ja 33 + 3 = 36 B-kaadrit. Kontrolli: 1 + 11 + 36 = 48.
-
Kaalu iga tüüpi selle maksumusega. 100 + 132 + 216 = 448 ühikut kogu grupi kohta ja 448 / 48 = 9,3 kaadri kohta. Ainult kaadrisisese koodimisega (all-intra) voog maksab iga kaadri eest 100, seega on see struktuur samade 48 pildi jaoks 10,7 korda väiksem.
-
Arve selle eest saabub viivitusena. Dekodeerimist ei saa alustada grupi keskelt — iga P- ja B-kaader on määratud millegi muu suhtes —, seega viib otsing sind I-kaadrile ja sealt dekodeeritakse edasi. Halvim juhtum on tervelt 48 kaadrit, mis kiirusel 24 fps on 2 s.
-
Nüüd leia alampiir. Iga korduv üksus maksab 4 kaadri kohta 3 × 6 + 12 = 30 ühikut, ehk 7,5 kaadri kohta, ning GOP-i pikendamine ei tee muud kui lisab neid üksusi juurde. Lahuta see määr grupist ja üle jääb 448 - 7,5 × 48 = 88 ühikut.
-
Need 88 on üks ja seesama arv: 100 - 12, ehk I-kaadrile kuluv lisakogus võrreldes P-kaadriga, mille asemel see asub. See lisakogus ei kasva koos grupiga, seega on see 88 olenemata pikkusest, ja keskmine on S̄ = 7,5 + 88/N. Katseta seda kahekordse pikkusega: N = 96 annab 7,5 + 88/96 = 8,4 ühikut kaadri kohta.
Vastus
9,3 ühikut kaadri kohta, võrreldes alampiiriga 7,5, millest ükski GOP-i pikkus ei saa allapoole minna. Kompromissi kaks poolt muutuvad vastassuundades ja kumbki pole lineaarselt selline, nagu näib: see, mida on veel võita, väheneb kui 88/N, samal ajal kui otsinguhäive kasvab kui N/24. 48 kaadri juures oled 1,8 ühikut üle alampiiri. Pikkuse kahekordistamine 96 kaadrini võidab sellest tagasi 0,9 — alla 10% kaadri suurusest — ja maksab veel 2 s halvimast otsinguviivitusest. Uuesti kahekordistamine võidab tagasi 0,46 ja maksab veel 4 s. Seega on valida tasuv GOP-i pikkus määratud viivitusega, mida oled nõus aktsepteerima, mitte kompressiooniga, mida taga ajad: üle paari tosina kaadri on veidi enam amortiseeritud I-kaader ainus asi, mida sellest veel võita saab.
-
Allikad (1)
- Where I, P and B pictures and the GOP structure are specified: ITU-T Recommendation H.264, Advanced video coding for generic audiovisual services.