Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Chikamu chekutanga: Nheyo dzekushanda nevhidhiyo nemifananidzo

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Chii? Vhidhiyo codec chidimbu chesoftware/hardware inomanikidza uye/kana decompresses digital video.

Nokuti chii? Pasinei nezvimwe zvisingakwanisi zvese maererano nebandwidth uye
uye maererano nenzvimbo yekuchengetedza data, musika unoda kuwedzera vhidhiyo yemhando yepamusoro. Unorangarira here kuti mupositi yekupedzisira takaverenga sei hudiki hunodiwa hwemafuremu makumi matatu pasekondi, 30 bits pa pixel, ine resolution ye24x480? Takagamuchira 240 Mbit / s pasina kumanikidzwa. Kudzvanya parizvino ndiyo nzira yega yekufambisa HD/FullHD/82,944K kune terevhizheni skrini neInternet. Izvi zvinowanikwa sei? Zvino ngatitarisei muchidimbu nzira huru.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Shanduro iyi yakaitwa nerutsigiro rweEDISON Software.

Takapfimbana kubatanidzwa kwevhidhiyo yekutarisa masisitimu, pamwe chete tiri kugadzira microtomograph.

Codec vs Container

Kukanganisa kwakajairika kunoitwa nevatsva kuvhiringa dhijitari vhidhiyo codec uye dijitari vhidhiyo mudziyo. Chigaba chimwe chimiro. Chiputiriso chine vhidhiyo (uye pamwe odhiyo) metadata. Vhidhiyo yakamanikidzwa inogona kufungidzirwa semubhadharo wemidziyo.

Kazhinji, kuwedzerwa kwefaira revhidhiyo kunoratidza rudzi rwayo rwemudziyo. Semuenzaniso, iyo faira video.mp4 ingangove mudziyo MPEG-4 Chikamu 14, uye faira rine zita rekuti video.mkv rinonyanya kuitika matryoshka. Kuti uve nechokwadi chakazara chekodheki uye fomati yemidziyo, unogona kushandisa FFmpeg kana MediaInfo.

A bit of history

Tisati tasvika Sei?, ngatimbonyura munhoroondo kuti tinzwisise mamwe macodecs ekare zviri nani zvishoma.

Video codec H.261 yakaonekwa muna 1990 (technically - muna 1988) uye yakasikwa kuti ishande pamwero wekutumira data we64 Kbps. Yakatoshandisa mazano akadai seruvara subsampling, macroblocks, nezvimwe. Iyo vhidhiyo codec standard yakaburitswa muna 1995 H.263, iyo yakatanga kusvika 2001.

Shanduro yekutanga yakapedzwa muna 2003 H.264 / AVC. Gore rimwe chetero, TrueMotion yakaburitsa yayo yemahara yakarasika vhidhiyo codec inonzi VP3. Google yakatenga kambani iyi muna 2008, ichiburitsa VP8 gore rimwe chetero. Muna Zvita 2012, Google yakaburitswa VP9, uye inotsigirwa ingangoita ΒΎ yemusika webrowser (kusanganisira nharembozha).

AV1 iyi itsva yemahara uye yakavhurika sosi vhidhiyo codec yakagadzirwa na Alliance for Open Media (AOMedia), iyo inosanganisira makambani anozivikanwa zvikuru, akadai se: Google, Mozilla, Microsoft, Amazon, Netflix, AMD, ARM, NVidia, Intel uye Cisco. Shanduro yekutanga yecodec, 0.1.0, yakabudiswa musi waApril 7, 2016.

Kuberekwa kweAV1

Mukutanga 2015, Google yakanga ichishanda VP10Xiph (iyo yeMozilla) yakanga ichishanda Daala, uye Cisco yakagadzira yayo yemahara vhidhiyo codec inonzi Thor.

ndokubva MPEG LA yakatanga kuziviswa miganhu yepagore ye HEVC (H.265) uye mubhadharo wakapetwa ka8 pane weH.264, asi vakakurumidza kuchinja mitemo zvakare:

hapana muganhu wegore,
muripo wemukati (0,5% yemari) uye
mari yeyuniti inenge ka10 yakakwirira kudarika H.264.

Alliance for Open Media yakagadzirwa nemakambani kubva munzvimbo dzakasiyana-siyana: vagadziri vemidziyo (Intel, AMD, ARM, Nvidia, Cisco), vanopa zvemukati (Google, Netflix, Amazon), vagadziri vebrowser (Google, Mozilla) nevamwe.

Iwo makambani aive nechinangwa chakafanana - yehumambo-isina vhidhiyo codec. Inobva yaonekwa AV1 ine rezinesi rakareruka patent. Timothy B. Terryberry akapa mharidzo inoshamisa yakazova mavambo ezvino AV1 pfungwa uye muenzaniso wayo wekupa rezenisi.

Iwe uchashamisika kuziva kuti iwe unogona kuongorora iyo AV1 codec kuburikidza nebrowser (avo vanofarira vanogona kuenda aomanalyzer.org).

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Universal codec

Ngatitarisei maitiro makuru ari pasi pepasirese vhidhiyo codec. Mazhinji epfungwa idzi anobatsira uye anoshandiswa mumakodeki emazuva ano akadai VP9, AV1 ΠΈ HEVC. Ndinokuyambirai kuti zvizhinji zvezvinhu zvinotsanangurwa zvicharerutswa. Dzimwe nguva mienzaniso yepasi rose (sezvakaita neH.264) ichashandiswa kuratidza tekinoroji.

1st nhanho - kupatsanura mufananidzo

Danho rekutanga nderekukamura furemu kuita zvidimbu zvakati wandei, zvidiki nekupfuura.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Yechii? Pane zvikonzero zvakawanda. Patinopatsanura mufananidzo, tinogona kunyatsofanotaura mafambiro ekufambisa nekushandisa zvikamu zvidiki zvezvikamu zvidiki zvinofamba. Nepo kune static kumashure iwe unogona kuzviganhurira wega kune makuru zvikamu.

MaCodecs anowanzo kuronga zvikamu izvi kuita zvikamu (kana chunks), macroblocks (kana kukodha miti yemiti), uye akawanda madiki. Hukuru hwehukuru hwezvikamu izvi hunosiyana, HEVC inoiisa ku64x64 nepo AVC inoshandisa 16x16, uye zvidimbu zvinogona kupatsanurwa kusvika ku4x4 saizi.

Unorangarira here marudzi emafuremu kubva kuchinyorwa chekupedzisira?! Izvo zvakafanana zvinogona kuiswa kune zvidhinha, saka isu tinogona kuve neI-chidimbu, B-block, P-macroblock, nezvimwe.

Kune avo vanoda kudzidzira, tarisai kuti mufananidzo wacho wakakamurwa sei muzvikamu uye zvidimbu. Kuti uite izvi, unogona kushandisa iyo yatotaurwa munyaya yapfuura. Intel Vhidhiyo Pro Analyzer (iyo inobhadharwa, asi ine yemahara vhezheni yekuedza iyo inogumira kune gumi ekutanga mafuremu). Zvikamu zvakaongororwa pano VP9:

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

2nd danho - kufanotaura

Kana tangova nezvikamu, tinokwanisa kuita fungidziro yezvenyeredzi kwavari. For INTER kufanotaura inofanira kutamiswa kufamba mavheji uye yasara, uye ye INTRA kufanotaura inofambiswa forecast direction uye zvakasara.

3rd danho - shanduko

Kana tangove neyakasara block (yakafanotaurwa chikamu β†’ chikamu chaicho), zvinokwanisika kuishandura nenzira yekuti tinoziva kuti mapixels anogona kuraswa uchichengetedza huwandu hwese. Kune dzimwe shanduko dzinopa maitiro chaiwo.

Kunyangwe paine dzimwe nzira, ngatitarisei zvakadzama. discrete cosine shanduko (DCT - kubva discrete cosine shanduko) Mabasa makuru eDCT:

  • Inoshandura mabhuraki emapikseli kuita akaenzana-saizi mabhuraki e frequency coefficients.
  • Inogadzirisa simba kubatsira kubvisa spatial redundancy.
  • Inopa reversibility.

Kukadzi 2, 2017 Sintra R.J. (Cintra, RJ) uye Bayer F.M. (Bayer FM) yakaburitsa chinyorwa nezve DCT-yakafanana neshanduko yekudzvanya kwemifananidzo iyo inoda chete gumi nemana ekuwedzera.

Usanetseka kana usinganzwisisi mabhenefiti echinhu chimwe nechimwe. Zvino ngatishandisei mienzaniso chaiyo kuona kukosha kwayo chaiko.

Ngatitorei iyi 8x8 block yepixels:

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Iyi block inopihwa mune inotevera 8 ne8 pixel mufananidzo:

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Nyorera DCT kune iyi bhuroka yemapikisi uye utore 8x8 block yemacoefficients:

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Uye kana tikapa iyi block ye coefficients, isu tinowana iyo inotevera mufananidzo:

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Sezvauri kuona, haina kutaridzika semufananidzo wekutanga. Iwe unogona kuona kuti coefficient yekutanga yakasiyana zvikuru kubva kune vamwe vose. Iyi yekutanga coefficient inozivikanwa seye DC coefficient, inomiririra ese masampuli ari muchikamu chekuisa, chimwe chinhu seavhareji.

Iyi block ye coefficients ine pfuma inonakidza: inoparadzanisa yakakwirira-frequency zvikamu kubva kune yakaderera-frequency.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Mumufananidzo, simba rakawanda rinoiswa pane yakaderera frequencies, saka kana iwe ukashandura chifananidzo kuita ma frequency ezvikamu uye uchirasa epamusoro frequency coefficients, unogona kuderedza huwandu hwe data inodiwa kutsanangura chifananidzo pasina kupira yakawandisa mhando yemifananidzo.

Frequency inoreva kukurumidza kuchinja kwechiratidzo.

Ngatiedzei kushandisa ruzivo rwakawanikwa muyedzo kesi nekushandura mufananidzo wepakutanga kune frequency yayo (block of coefficients) tichishandisa DCT tozorasa chikamu chemakoefifiri asinganyanyi kukosha.

Kutanga tinoishandura kune frequency domain.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Zvadaro, tinorasa chikamu (67%) che coefficients, kunyanya chikamu chezasi chekurudyi.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Pakupedzisira, isu tinovakazve mufananidzo kubva kune yakaraswa block ye coefficients (rangarira, inofanirwa kuve invertible) uye toienzanisa neyekutanga.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Tinoona kuti inofanana nemufananidzo wepakutanga, asi pane zvakawanda zvakasiyana kubva kune yekutanga. Takakanda kunze 67,1875% uye tichine chimwe chinhu chakafanana nepakutanga. Zvaigoneka kurasa zvine mufungo macoefficients kuti tiwane mufananidzo wemhando iri nani, asi ndiyo musoro unotevera.

Imwe neimwe coefficient inogadzirwa uchishandisa ese pixels

Zvakakosha: imwe neimwe coefficient haina kunyorwa zvakananga kune imwe pixel, asi inorema huwandu hwese pixels. Iyi inoshamisa girafu inoratidza kuti yekutanga neyechipiri coefficients inoverengerwa sei uchishandisa huremu hwakasiyana kune yega index.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Iwe unogona zvakare kuedza kuona iyo DCT nekutarisa iri nyore kuumbwa kwemufananidzo kwakavakirwa pairi. Semuenzaniso, heino chiratidzo A chinogadzirwa uchishandisa huremu hwega hwega:

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

4th danho - quantization

Mushure mekukanda mamwe macoefficients padanho rekutanga, padanho rekupedzisira (shanduko) tinoita yakakosha fomu ye quantization. Panguva ino zvinogamuchirwa kurasikirwa nemashoko. Kana, zviri nyore, isu tichayera macoefficients kuti tiwane kumanikidza.

Iwe unogona sei kuyera block ye coefficients? Imwe yenzira dzakareruka ndeye yunifomu quantization, patinotora bhuroka, tigovane neukoshi humwe (negumi) uye kutenderedza mhedzisiro.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Tinogona here kudzosera kumashure iyi block ye coefficients? Hongu, tinokwanisa, tichiwanza neukoshi hwakafanana hwatakagovera.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Iyi nzira haisi iyo yakanakisisa nokuti haifungi kukosha kwekodha imwe neimwe. Mumwe anogona kushandisa matrix ye quantizers pachinzvimbo cheukoshi humwe, uye iyi matrix inogona kushandisa iyo DCT pfuma nekuenzanisa ruzhinji rwezasi kurudyi uye hushoma hwekumusoro kuruboshwe.

Nhanho 5 - entropy coding

Kana tapedza kuverengera iyo data (mabhuraki emifananidzo, zvimedu, mafuremu), isu tinogona kuramba tichiimanikidza tisingarasikirwe. Kune akawanda algorithmic nzira dzekumanikidza data. Isu tichatora nekukurumidza kutarisa kune mamwe acho, kuti unzwisise zvakadzama unogona kuverenga bhuku Kunzwisisa Compression: Data Compression yeVagadziri Vazvino ("Kunzwisisa Kudzvinyirira: Dhata Compression yeVagadziri Vazvino").

Video encoding uchishandisa VLC

Ngatitii tine nhevedzano yevatambi: a, e, r ΠΈ t. Mukana (kubva pa0 kusvika pa1) wekuti kangani hunhu hwega hwega hunoonekwa murukova unounzwa mutafura ino.

a e r t
Zvichida 0,3 0,3 0,2 0,2

Tinogona kugovera akasiyana mabhinari macode (zvichida madiki) kune angangoita, uye makuru macode kune mashoma angangoita.

a e r t
Zvichida 0,3 0,3 0,2 0,2
Binary code 0 10 110 1110

Isu tinodzvanya rukova, tichifunga kuti tichazopedzisira tashandisa 8 bits kune yega yega. Pasina compression, 24 bits zvaizodiwa pahunhu. Kana ukatsiva chimiro chega chega nekodhi yayo, unowana mari!

Nhanho yekutanga ndeye encode chimiro e, iyo inoenzana negumi, uye mutsara wechipiri ndi a, iyo inowedzerwa (kwete nenzira yemasvomhu): [10][0], uye pakupedzisira munhu wechitatu t, izvo zvinoita kuti yedu yekupedzisira yakamanikidzwa bitstream ienzane ne [10][0][1110] kana 1001110, iyo inoda 7 bits chete (3,4 times less space pane yepakutanga).

Ndokumbira utarise kuti kodhi yega yega inofanirwa kunge iri kodhi yakasarudzika ine prefix. Huffman algorithm ichakubatsira kuwana nhamba idzi. Kunyangwe iyi nzira isiri isina kukanganisa kwayo, kune vhidhiyo macodecs achiri kupa iyi algorithmic nzira yekumanikidza.

Zvese zviri zviviri encoder uye decoder zvinofanirwa kuwana tafura yechiratidzo ine mabhinari macode. Naizvozvo, zvinodikanwa zvakare kutumira tafura sekupinza.

Arithmetic coding

Ngatitii tine nhevedzano yevatambi: a, e, r, s ΠΈ t, uye mukana wavo unoratidzwa mutafura ino.

a e r s t
Zvichida 0,3 0,3 0,15 0,05 0,2

Tichishandisa tafura iyi, tichavaka mitsara ine mavara ese anogoneka, akarongwa nenhamba huru.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Zvino ngatikoderei rwizi rwemavara matatu: udye.

Tanga wasarudza chimiro chekutanga e, iyo iri muchikamu kubva 0,3 kusvika 0,6 (kwete kusanganisira). Isu tinotora iyi subrange toigovanisa zvakare muzvikamu zvakafanana sepakutanga, asi kune iyi nyowani nyowani.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Ngatirambei tichikodha rwizi rwedu udye. Zvino tora chimiro chechipiri a, iri muchikamu chitsva kubva 0,3 kusvika 0,39, uye totora hunhu hwedu hwekupedzisira. t uye kudzokorora maitiro akafanana zvakare, tinowana yekupedzisira sub-renji kubva ku0,354 kusvika 0,372.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Isu tinongoda kusarudza nhamba mune yekupedzisira subrange kubva 0,354 kusvika 0,372. Ngatisarudzei 0,36 (asi unogona kusarudza chero imwe nhamba muchikamu chino). Nenhamba iyi chete tichakwanisa kudzoreredza rukova rwedu rwekutanga. Zvinoita sekunge tiri kudhirowa mutsara mukati memitsara yekukodha rwizi rwedu.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

The reverse operation (ndiko kuti, decoding) yakangoreruka: nenhamba yedu 0,36 uye huwandu hwedu hwekutanga, tinogona kumhanya maitiro akafanana. Asi ikozvino, tichishandisa iyi nhamba, tinoona rukova rwakavharirwa tichishandisa iyi nhamba.

Nekutanga kwekutanga, tinoona kuti nhamba yedu inoenderana nechidimbu, saka uyu ndiwo hunhu hwedu hwekutanga. Iye zvino tinogovanisa iyi sub-renji zvakare nekutevera maitiro akafanana sepakutanga. Pano iwe unogona kuona kuti 0,36 inoenderana nechiratidzo a, uye mushure mekudzokorora nzira takasvika pamunhu wekupedzisira t (kuumba yedu yepakutanga encoded rukova udye).

Zvese zviri zviviri encoder uye decoder zvinofanirwa kunge zvine tafura yezviratidzo zvingangoitika, saka zvinodikanwa kuti uitumire mune yekupinda data zvakare.

Yakanaka kwazvo, handizvo here? Ani nani akauya nemhinduro iyi aive akangwara chaizvo. Mamwe macodecs evhidhiyo anoshandisa nzira iyi (kana kuti ape senge sarudzo).

Pfungwa ndeyekurasikirwa zvisingaite kumanikidza quantized bit stream. Chokwadi chinyorwa ichi chinoshaya matani ezvinyorwa, zvikonzero, kutengesa-offs, nezvimwe. Asi kana iwe uri mugadziri, iwe unofanirwa kuziva zvakawanda. Macodecs matsva anoedza kushandisa akasiyana entropy encoding algorithms senge ANS.

Nhanho 6 - bitstream fomati

Mushure mekuita zvese izvi, chasara kuburitsa mafuremu akamanikidzwa mumamiriro ematanho akaitwa. Iyo decoder inofanirwa kuziviswa zvakajeka nezvesarudzo dzakaitwa neiyo encoder. Iyo decoder inofanirwa kupihwa neruzivo rwese rwunodiwa: kudzika zvishoma, nzvimbo yemavara, kugadzirisa, ruzivo rwekufanotaura (mafambiro ekufambisa, anotungamira INTER kufanotaura), chimiro, nhanho, furemu chiyero, furemu mhando, furemu nhamba uye zvimwe zvakawanda.

Tichatora nekukurumidza kutarisa bitstream H.264. Danho redu rekutanga kugadzira shoma H.264 bitstream (FFmpeg by default inowedzera zvese encoding sarudzo senge SEI NAL - tichaona kuti chii mberi zvishoma). Tinogona kuita izvi tichishandisa yedu pachedu repository uye FFmpeg.

./s/ffmpeg -i /files/i/minimal.png -pix_fmt yuv420p /files/v/minimal_yuv420.h264

Uyu murairo unozogadzira bitstream H.264 ine furemu imwe chete, 64 Γ— 64 resolution, ine nzvimbo yemavara YUV420. Muchiitiko ichi, mufananidzo unotevera unoshandiswa sefuremu.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

H.264 bitstream

Standard AVC (H.264) inosarudza kuti ruzivo ruchatumirwa mune macroframes (munetiweki pfungwa), inonzi nal (iyi idanho rekubvisa network). Chinangwa chikuru cheNAL ndechekupa "web-hushamwari" vhidhiyo mharidzo. Iyi chiyero inofanira kushanda paTV (stream-based), Internet (packet-based).

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Pane chicherechedzo chekuyananisa kutsanangura miganhu yezvinhu zveNAL. Imwe neimwe tokeni yekuwiriranisa ine kukosha 0x00 0x00 0x01, kunze kweyokutanga chaiyo, yakaenzana ne 0x00 0x00 0x00 0x01. Kana tikatanga hexdump nokuda kweH.264 bitstream yakagadzirwa, tinocherechedza maitiro matatu eNAL pakutanga kwefaira.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Sezvakataurwa, decoder haifanire kuziva chete data yemufananidzo, asiwo ruzivo rwevhidhiyo, furemu, mavara, maparamita anoshandiswa, nezvimwe zvakawanda. Yekutanga byte yeNAL yega yega inotsanangura chikamu chayo uye mhando.

NAL mhando identifier tsananguro
0 Isingazivikanwe mhando
1 Encoded image fragment isina IDR
2 Coded slice data chikamu A
3 Coded slice data chikamu B
4 Coded slice data chikamu C
5 Encoded IDR chidimbu chemufananidzo weIDR
6 Mamwe ruzivo nezve SEI yekuwedzera
7 SPS Sequence Parameter Set
8 Seti yePPS mifananidzo paramita
9 Access separator
10 Kupera kwekutevedzana
11 Kupera kweshinda
... ...

Kazhinji iyo yekutanga NAL yerukova zvishoma ndeye SPS. Iyi mhando yeNAL ine basa rekuzivisa nezve akajairika encoding akasiyana senge profile, level, resolution, nezvimwe.

Kana tikasvetuka yekutanga sync marker, tinogona kudhidha yekutanga byte kuti tizive kuti NAL mhando yekutanga.

Semuenzaniso, yekutanga byte mushure meiyo sync token ndeye 01100111, apo chikamu chekutanga (0) ari mumunda forbidden_zero_bit. Next 2 bits (11) inotiudza munda nal_ref_idc, izvo zvinoratidza kuti NAL iyi inzvimbo yereferensi here kana kuti kwete. Uye asara 5 bits (00111) inotiudza munda nal_unit_type, mune iyi kesi ndiyo SPS block (7) NAL.

Second byte (binary=01100100, hex=0x64, Dec=100) muSPS NAL ndiyo munda profile_idc, iyo inoratidza chimiro chakashandiswa encoder. Muchiitiko ichi, chimiro chepamusoro chepamusoro chakashandiswa (kureva, chimiro chepamusoro pasina bidirectional B-segment support).

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Kana iwe ukatarisa iyo bitstream yakatarwa H.264 yeSPS NAL, isu tichawana akawanda kukosha kwezita reparamende, chikamu uye tsananguro. Somuenzaniso, ngatitarisei kuminda pic_width_in_mbs_minus_1 ΠΈ pic_height_in_map_units_minus_1.

Parameter name chikamu tsananguro
pic_width_in_mbs_minus_1 0 iwe (v)
pic_height_in_map_units_minus_1 0 iwe (v)

Kana tikaita mamwe masvomhu mashandiro ane hunhu hweminda iyi, tinowana sarudzo. Mumwe anogona kumiririra 1920 x 1080 achishandisa pic_width_in_mbs_minus_1 ine kukosha kwe119 ((119 + 1) * macroblock_size = 120 * 16 = 1920). Zvekare, kuchengetedza nzvimbo, panzvimbo yekukodha 1920, takazviita ne119.

Kana tikaramba tichitarisa vhidhiyo yedu yakagadzirwa mune binary fomu (semuenzaniso: xxd -b -c 11 v/minimal_yuv420.h264), ipapo iwe unogona kuenda kune yekupedzisira NAL, inova iyo furemu pachayo.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Pano tinoona yayo yekutanga 6 byte kukosha: 01100101 10001000 10000100 00000000 00100001 11111111. Sezvo yekutanga byte ichizivikanwa kuratidza iyo NAL mhando, mune iyi kesi (00101) iri IDR chidimbu (5), uye wobva wagona kuiongorora zvakare:

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Uchishandisa ruzivo rwekutsanangurwa, zvinogoneka kudhirodha rudzi rwechidimbu (slice_type) uye nhamba yefaira (frame_num) pakati pezvimwe zvakakosha.

Kuti uwane kukosha kwemamwe minda (ue(v), me(v), se(v) kana te(v)), isu tinoda decode chidimbu tichishandisa yakakosha decoder yakavakirwa exponential Golomb kodhi. Iyi nzira inonyatso shanda pakukodha akasiyana siyana, kunyanya kana paine akawanda default values.

Maitiro slice_type ΠΈ frame_num yevhidhiyo iyi 7 (I-chidimbu) uye 0 (yekutanga furemu).

A bitstream inogona kufungidzirwa seprotocol. Kana iwe uchida kuziva zvakawanda nezve bitstream, iwe unofanirwa kutarisa kune yakatarwa ITU H.264. Heino dhayagiramu yakakura inoratidza pane data yemufananidzo (YUV in compressed form).

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Mamwe ma bitstreams anogona kuongororwa, akadai VP9, H.265 (HEVC) kana kunyange yedu itsva yakanakisa bitstream AV1. Vose vakafanana here? Kwete, asi kana wangonzwisisa kamwe chete, zviri nyore kunzwisisa zvimwe.

Unoda kudzidzira? Ongorora H.264 bitstream

Unogona kugadzira vhidhiyo imwechete uye shandisa MediaInfo kuongorora iyo bitstream H.264. Muchokwadi, hapana chinokutadzisa iwe kubva kana kutarisa kune sosi kodhi inoongorora iyo bit stream H.264 (AVC).

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Kudzidzira, unogona kushandisa Intel Vhidhiyo Pro Analyzer (ndanga ndataura kare kuti chirongwa chakabhadharwa, asi kune yemahara vhezheni yekuyedza ine muganho wegumi mafuremu?).

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

tsananguro

Ziva kuti macodec mazhinji emazuva ano anoshandisa modhi imwechete yatakangodzidza. Pano, ngatitarisei pane block diagram yevhidhiyo codec Thor. Ndiro rine matanho ose atapfuura. Iyo poindi yese yeiyi positi ndeyekungoita kukupa iwe nzwisiso iri nani yezvitsva uye zvinyorwa munzvimbo ino.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Pakutanga, yakaverengerwa kuti 139 GB yedhisiki nzvimbo yaizodikanwa kuchengetedza vhidhiyo faira inogara awa imwe pa720p mhando uye 30 fps. Kana iwe ukashandisa nzira dzakakurukurwa muchinyorwa chino (inter-frame uye fungidziro yemukati, shanduko, quantization, entropy coding, nezvimwewo), ipapo iwe unogona kuzadzisa (zvichienderana nekuti isu tinoshandisa 0,031 bits per pixel), vhidhiyo yechokwadi. hunhu hunogutsa, uchingogara 367,82 MB, kwete 139 GB yekuyeuka.

H.265 inoita sei nani kudzvanya reshiyo pane H.264?

Iye zvino zvatava kuziva zvakawanda nezve mashandiro anoita macodecs, zviri nyore kunzwisisa kuti macodecs matsva anogona sei kuendesa zvigadziriso zvepamusoro zvine mabits mashoma.

Kana tikaenzanisa AVC ΠΈ HEVC, zvakakodzera kuyeuka kuti iyi ingangoita sarudzo pakati pehukuru hweCPU mutoro uye compression reshiyo.

HEVC ine zvimwe chikamu (nechikamu) sarudzo pane AVC, mamwe mafambiro emukati, yakavandudzwa entropy coding, nezvimwe. Mabhindauko ese aya akaitwa H.265 inokwanisa kudzvanya 50% kupfuura H.264.

Kodhidhi yevhidhiyo inoshanda sei? Chikamu 2. Chii, sei, sei

Chikamu chekutanga: Nheyo dzekushanda nevhidhiyo nemifananidzo

Source: www.habr.com

Voeg