| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289 |
- .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
- .. c:namespace:: V4L
- .. _codec-stateless-controls:
- *********************************
- Stateless Codec Control Reference
- *********************************
- The Stateless Codec control class is intended to support
- stateless decoder and encoders (i.e. hardware accelerators).
- These drivers are typically supported by the :ref:`stateless_decoder`,
- and deal with parsed pixel formats such as V4L2_PIX_FMT_H264_SLICE.
- Stateless Codec Control ID
- ==========================
- .. _codec-stateless-control-id:
- ``V4L2_CID_CODEC_STATELESS_CLASS (class)``
- The Stateless Codec class descriptor.
- .. _v4l2-codec-stateless-h264:
- ``V4L2_CID_STATELESS_H264_SPS (struct)``
- Specifies the sequence parameter set (as extracted from the
- bitstream) for the associated H264 slice data. This includes the
- necessary parameters for configuring a stateless hardware decoding
- pipeline for H264. The bitstream parameters are defined according
- to :ref:`h264`, section 7.4.2.1.1 "Sequence Parameter Set Data
- Semantics". For further documentation, refer to the above
- specification, unless there is an explicit comment stating
- otherwise.
- .. c:type:: v4l2_ctrl_h264_sps
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{1.2cm}|p{8.6cm}|p{7.5cm}|
- .. flat-table:: struct v4l2_ctrl_h264_sps
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``profile_idc``
- -
- * - __u8
- - ``constraint_set_flags``
- - See :ref:`Sequence Parameter Set Constraints Set Flags <h264_sps_constraints_set_flags>`
- * - __u8
- - ``level_idc``
- -
- * - __u8
- - ``seq_parameter_set_id``
- -
- * - __u8
- - ``chroma_format_idc``
- -
- * - __u8
- - ``bit_depth_luma_minus8``
- -
- * - __u8
- - ``bit_depth_chroma_minus8``
- -
- * - __u8
- - ``log2_max_frame_num_minus4``
- -
- * - __u8
- - ``pic_order_cnt_type``
- -
- * - __u8
- - ``log2_max_pic_order_cnt_lsb_minus4``
- -
- * - __u8
- - ``max_num_ref_frames``
- -
- * - __u8
- - ``num_ref_frames_in_pic_order_cnt_cycle``
- -
- * - __s32
- - ``offset_for_ref_frame[255]``
- -
- * - __s32
- - ``offset_for_non_ref_pic``
- -
- * - __s32
- - ``offset_for_top_to_bottom_field``
- -
- * - __u16
- - ``pic_width_in_mbs_minus1``
- -
- * - __u16
- - ``pic_height_in_map_units_minus1``
- -
- * - __u32
- - ``flags``
- - See :ref:`Sequence Parameter Set Flags <h264_sps_flags>`
- .. raw:: latex
- \normalsize
- .. _h264_sps_constraints_set_flags:
- ``Sequence Parameter Set Constraints Set Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_H264_SPS_CONSTRAINT_SET0_FLAG``
- - 0x00000001
- -
- * - ``V4L2_H264_SPS_CONSTRAINT_SET1_FLAG``
- - 0x00000002
- -
- * - ``V4L2_H264_SPS_CONSTRAINT_SET2_FLAG``
- - 0x00000004
- -
- * - ``V4L2_H264_SPS_CONSTRAINT_SET3_FLAG``
- - 0x00000008
- -
- * - ``V4L2_H264_SPS_CONSTRAINT_SET4_FLAG``
- - 0x00000010
- -
- * - ``V4L2_H264_SPS_CONSTRAINT_SET5_FLAG``
- - 0x00000020
- -
- .. _h264_sps_flags:
- ``Sequence Parameter Set Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE``
- - 0x00000001
- -
- * - ``V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS``
- - 0x00000002
- -
- * - ``V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO``
- - 0x00000004
- -
- * - ``V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED``
- - 0x00000008
- -
- * - ``V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY``
- - 0x00000010
- -
- * - ``V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD``
- - 0x00000020
- -
- * - ``V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE``
- - 0x00000040
- -
- ``V4L2_CID_STATELESS_H264_PPS (struct)``
- Specifies the picture parameter set (as extracted from the
- bitstream) for the associated H264 slice data. This includes the
- necessary parameters for configuring a stateless hardware decoding
- pipeline for H264. The bitstream parameters are defined according
- to :ref:`h264`, section 7.4.2.2 "Picture Parameter Set RBSP
- Semantics". For further documentation, refer to the above
- specification, unless there is an explicit comment stating
- otherwise.
- .. c:type:: v4l2_ctrl_h264_pps
- .. raw:: latex
- \small
- .. flat-table:: struct v4l2_ctrl_h264_pps
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``pic_parameter_set_id``
- -
- * - __u8
- - ``seq_parameter_set_id``
- -
- * - __u8
- - ``num_slice_groups_minus1``
- -
- * - __u8
- - ``num_ref_idx_l0_default_active_minus1``
- -
- * - __u8
- - ``num_ref_idx_l1_default_active_minus1``
- -
- * - __u8
- - ``weighted_bipred_idc``
- -
- * - __s8
- - ``pic_init_qp_minus26``
- -
- * - __s8
- - ``pic_init_qs_minus26``
- -
- * - __s8
- - ``chroma_qp_index_offset``
- -
- * - __s8
- - ``second_chroma_qp_index_offset``
- -
- * - __u16
- - ``flags``
- - See :ref:`Picture Parameter Set Flags <h264_pps_flags>`
- .. raw:: latex
- \normalsize
- .. _h264_pps_flags:
- ``Picture Parameter Set Flags``
- .. raw:: latex
- \begingroup
- \scriptsize
- \setlength{\tabcolsep}{2pt}
- .. tabularcolumns:: |p{9.8cm}|p{1.0cm}|p{6.5cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 10 1 4
- * - ``V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE``
- - 0x0001
- -
- * - ``V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT``
- - 0x0002
- -
- * - ``V4L2_H264_PPS_FLAG_WEIGHTED_PRED``
- - 0x0004
- -
- * - ``V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT``
- - 0x0008
- -
- * - ``V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED``
- - 0x0010
- -
- * - ``V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT``
- - 0x0020
- -
- * - ``V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE``
- - 0x0040
- -
- * - ``V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT``
- - 0x0080
- - ``V4L2_CID_STATELESS_H264_SCALING_MATRIX``
- must be used for this picture.
- .. raw:: latex
- \endgroup
- ``V4L2_CID_STATELESS_H264_SCALING_MATRIX (struct)``
- Specifies the scaling matrix (as extracted from the bitstream) for
- the associated H264 slice data. The bitstream parameters are
- defined according to :ref:`h264`, section 7.4.2.1.1.1 "Scaling
- List Semantics". For further documentation, refer to the above
- specification, unless there is an explicit comment stating
- otherwise.
- .. c:type:: v4l2_ctrl_h264_scaling_matrix
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{0.6cm}|p{4.8cm}|p{11.9cm}|
- .. flat-table:: struct v4l2_ctrl_h264_scaling_matrix
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``scaling_list_4x4[6][16]``
- - Scaling matrix after applying the inverse scanning process.
- Expected list order is Intra Y, Intra Cb, Intra Cr, Inter Y,
- Inter Cb, Inter Cr. The values on each scaling list are
- expected in raster scan order.
- * - __u8
- - ``scaling_list_8x8[6][64]``
- - Scaling matrix after applying the inverse scanning process.
- Expected list order is Intra Y, Inter Y, Intra Cb, Inter Cb,
- Intra Cr, Inter Cr. The values on each scaling list are
- expected in raster scan order.
- ``V4L2_CID_STATELESS_H264_SLICE_PARAMS (struct)``
- Specifies the slice parameters (as extracted from the bitstream)
- for the associated H264 slice data. This includes the necessary
- parameters for configuring a stateless hardware decoding pipeline
- for H264. The bitstream parameters are defined according to
- :ref:`h264`, section 7.4.3 "Slice Header Semantics". For further
- documentation, refer to the above specification, unless there is
- an explicit comment stating otherwise.
- .. c:type:: v4l2_ctrl_h264_slice_params
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{4.0cm}|p{5.9cm}|p{7.4cm}|
- .. flat-table:: struct v4l2_ctrl_h264_slice_params
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u32
- - ``header_bit_size``
- - Offset in bits to slice_data() from the beginning of this slice.
- * - __u32
- - ``first_mb_in_slice``
- -
- * - __u8
- - ``slice_type``
- -
- * - __u8
- - ``colour_plane_id``
- -
- * - __u8
- - ``redundant_pic_cnt``
- -
- * - __u8
- - ``cabac_init_idc``
- -
- * - __s8
- - ``slice_qp_delta``
- -
- * - __s8
- - ``slice_qs_delta``
- -
- * - __u8
- - ``disable_deblocking_filter_idc``
- -
- * - __s8
- - ``slice_alpha_c0_offset_div2``
- -
- * - __s8
- - ``slice_beta_offset_div2``
- -
- * - __u8
- - ``num_ref_idx_l0_active_minus1``
- - If num_ref_idx_active_override_flag is not set, this field must be
- set to the value of num_ref_idx_l0_default_active_minus1
- * - __u8
- - ``num_ref_idx_l1_active_minus1``
- - If num_ref_idx_active_override_flag is not set, this field must be
- set to the value of num_ref_idx_l1_default_active_minus1
- * - __u8
- - ``reserved``
- - Applications and drivers must set this to zero.
- * - struct :c:type:`v4l2_h264_reference`
- - ``ref_pic_list0[32]``
- - Reference picture list after applying the per-slice modifications
- * - struct :c:type:`v4l2_h264_reference`
- - ``ref_pic_list1[32]``
- - Reference picture list after applying the per-slice modifications
- * - __u32
- - ``flags``
- - See :ref:`Slice Parameter Flags <h264_slice_flags>`
- .. raw:: latex
- \normalsize
- .. _h264_slice_flags:
- ``Slice Parameter Set Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED``
- - 0x00000001
- -
- * - ``V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH``
- - 0x00000002
- -
- ``V4L2_CID_STATELESS_H264_PRED_WEIGHTS (struct)``
- Prediction weight table defined according to :ref:`h264`,
- section 7.4.3.2 "Prediction Weight Table Semantics".
- The prediction weight table must be passed by applications
- under the conditions explained in section 7.3.3 "Slice header
- syntax".
- .. c:type:: v4l2_ctrl_h264_pred_weights
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{4.9cm}|p{4.9cm}|p{7.5cm}|
- .. flat-table:: struct v4l2_ctrl_h264_pred_weights
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u16
- - ``luma_log2_weight_denom``
- -
- * - __u16
- - ``chroma_log2_weight_denom``
- -
- * - struct :c:type:`v4l2_h264_weight_factors`
- - ``weight_factors[2]``
- - The weight factors at index 0 are the weight factors for the reference
- list 0, the one at index 1 for the reference list 1.
- .. raw:: latex
- \normalsize
- .. c:type:: v4l2_h264_weight_factors
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{1.0cm}|p{4.5cm}|p{11.8cm}|
- .. flat-table:: struct v4l2_h264_weight_factors
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __s16
- - ``luma_weight[32]``
- -
- * - __s16
- - ``luma_offset[32]``
- -
- * - __s16
- - ``chroma_weight[32][2]``
- -
- * - __s16
- - ``chroma_offset[32][2]``
- -
- .. raw:: latex
- \normalsize
- ``Picture Reference``
- .. c:type:: v4l2_h264_reference
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_h264_reference
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``fields``
- - Specifies how the picture is referenced. See :ref:`Reference Fields <h264_ref_fields>`
- * - __u8
- - ``index``
- - Index into the :c:type:`v4l2_ctrl_h264_decode_params`.dpb array.
- .. _h264_ref_fields:
- ``Reference Fields``
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{5.4cm}|p{0.8cm}|p{11.1cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_H264_TOP_FIELD_REF``
- - 0x1
- - The top field in field pair is used for short-term reference.
- * - ``V4L2_H264_BOTTOM_FIELD_REF``
- - 0x2
- - The bottom field in field pair is used for short-term reference.
- * - ``V4L2_H264_FRAME_REF``
- - 0x3
- - The frame (or the top/bottom fields, if it's a field pair)
- is used for short-term reference.
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_H264_DECODE_PARAMS (struct)``
- Specifies the decode parameters (as extracted from the bitstream)
- for the associated H264 slice data. This includes the necessary
- parameters for configuring a stateless hardware decoding pipeline
- for H264. The bitstream parameters are defined according to
- :ref:`h264`. For further documentation, refer to the above
- specification, unless there is an explicit comment stating
- otherwise.
- .. c:type:: v4l2_ctrl_h264_decode_params
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{4.0cm}|p{5.9cm}|p{7.4cm}|
- .. flat-table:: struct v4l2_ctrl_h264_decode_params
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - struct :c:type:`v4l2_h264_dpb_entry`
- - ``dpb[16]``
- -
- * - __u16
- - ``nal_ref_idc``
- - NAL reference ID value coming from the NAL Unit header
- * - __u16
- - ``frame_num``
- -
- * - __s32
- - ``top_field_order_cnt``
- - Picture Order Count for the coded top field
- * - __s32
- - ``bottom_field_order_cnt``
- - Picture Order Count for the coded bottom field
- * - __u16
- - ``idr_pic_id``
- -
- * - __u16
- - ``pic_order_cnt_lsb``
- -
- * - __s32
- - ``delta_pic_order_cnt_bottom``
- -
- * - __s32
- - ``delta_pic_order_cnt0``
- -
- * - __s32
- - ``delta_pic_order_cnt1``
- -
- * - __u32
- - ``dec_ref_pic_marking_bit_size``
- - Size in bits of the dec_ref_pic_marking() syntax element.
- * - __u32
- - ``pic_order_cnt_bit_size``
- - Combined size in bits of the picture order count related syntax
- elements: pic_order_cnt_lsb, delta_pic_order_cnt_bottom,
- delta_pic_order_cnt0, and delta_pic_order_cnt1.
- * - __u32
- - ``slice_group_change_cycle``
- -
- * - __u32
- - ``reserved``
- - Applications and drivers must set this to zero.
- * - __u32
- - ``flags``
- - See :ref:`Decode Parameters Flags <h264_decode_params_flags>`
- .. raw:: latex
- \normalsize
- .. _h264_decode_params_flags:
- ``Decode Parameters Flags``
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{8.3cm}|p{2.1cm}|p{6.9cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC``
- - 0x00000001
- - That picture is an IDR picture
- * - ``V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC``
- - 0x00000002
- -
- * - ``V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD``
- - 0x00000004
- -
- * - ``V4L2_H264_DECODE_PARAM_FLAG_PFRAME``
- - 0x00000008
- -
- * - ``V4L2_H264_DECODE_PARAM_FLAG_BFRAME``
- - 0x00000010
- -
- .. raw:: latex
- \normalsize
- .. c:type:: v4l2_h264_dpb_entry
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{1.0cm}|p{4.9cm}|p{11.4cm}|
- .. flat-table:: struct v4l2_h264_dpb_entry
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u64
- - ``reference_ts``
- - Timestamp of the V4L2 capture buffer to use as reference, used
- with B-coded and P-coded frames. The timestamp refers to the
- ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
- :c:func:`v4l2_timeval_to_ns()` function to convert the struct
- :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
- * - __u32
- - ``pic_num``
- - For short term references, this must match the derived value PicNum
- (8-28) and for long term references it must match the derived value
- LongTermPicNum (8-29). When decoding frames (as opposed to fields)
- pic_num is the same as FrameNumWrap.
- * - __u16
- - ``frame_num``
- - For short term references, this must match the frame_num value from
- the slice header syntax (the driver will wrap the value if needed). For
- long term references, this must be set to the value of
- long_term_frame_idx described in the dec_ref_pic_marking() syntax.
- * - __u8
- - ``fields``
- - Specifies how the DPB entry is referenced. See :ref:`Reference Fields <h264_ref_fields>`
- * - __u8
- - ``reserved[5]``
- - Applications and drivers must set this to zero.
- * - __s32
- - ``top_field_order_cnt``
- -
- * - __s32
- - ``bottom_field_order_cnt``
- -
- * - __u32
- - ``flags``
- - See :ref:`DPB Entry Flags <h264_dpb_flags>`
- .. raw:: latex
- \normalsize
- .. _h264_dpb_flags:
- ``DPB Entries Flags``
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{7.7cm}|p{2.1cm}|p{7.5cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_H264_DPB_ENTRY_FLAG_VALID``
- - 0x00000001
- - The DPB entry is valid (non-empty) and should be considered.
- * - ``V4L2_H264_DPB_ENTRY_FLAG_ACTIVE``
- - 0x00000002
- - The DPB entry is used for reference.
- * - ``V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM``
- - 0x00000004
- - The DPB entry is used for long-term reference.
- * - ``V4L2_H264_DPB_ENTRY_FLAG_FIELD``
- - 0x00000008
- - The DPB entry is a single field or a complementary field pair.
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_H264_DECODE_MODE (enum)``
- Specifies the decoding mode to use. Currently exposes slice-based and
- frame-based decoding but new modes might be added later on.
- This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE
- pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE
- are required to set this control in order to specify the decoding mode
- that is expected for the buffer.
- Drivers may expose a single or multiple decoding modes, depending
- on what they can support.
- .. c:type:: v4l2_stateless_h264_decode_mode
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED``
- - 0
- - Decoding is done at the slice granularity.
- The OUTPUT buffer must contain a single slice.
- When this mode is selected, the ``V4L2_CID_STATELESS_H264_SLICE_PARAMS``
- control shall be set. When multiple slices compose a frame,
- use of ``V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF`` flag
- is required.
- * - ``V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED``
- - 1
- - Decoding is done at the frame granularity,
- The OUTPUT buffer must contain all slices needed to decode the
- frame. The OUTPUT buffer must also contain both fields.
- This mode will be supported by devices that
- parse the slice(s) header(s) in hardware. When this mode is
- selected, the ``V4L2_CID_STATELESS_H264_SLICE_PARAMS``
- control shall not be set.
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_H264_START_CODE (enum)``
- Specifies the H264 slice start code expected for each slice.
- This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE
- pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE
- are required to set this control in order to specify the start code
- that is expected for the buffer.
- Drivers may expose a single or multiple start codes, depending
- on what they can support.
- .. c:type:: v4l2_stateless_h264_start_code
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{7.9cm}|p{0.4cm}|p{9.0cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 4 1 4
- * - ``V4L2_STATELESS_H264_START_CODE_NONE``
- - 0
- - Selecting this value specifies that H264 slices are passed
- to the driver without any start code. The bitstream data should be
- according to :ref:`h264` 7.3.1 NAL unit syntax, hence contains
- emulation prevention bytes when required.
- * - ``V4L2_STATELESS_H264_START_CODE_ANNEX_B``
- - 1
- - Selecting this value specifies that H264 slices are expected
- to be prefixed by Annex B start codes. According to :ref:`h264`
- valid start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001.
- .. raw:: latex
- \normalsize
- .. _codec-stateless-fwht:
- ``V4L2_CID_STATELESS_FWHT_PARAMS (struct)``
- Specifies the FWHT (Fast Walsh Hadamard Transform) parameters (as extracted
- from the bitstream) for the associated FWHT data. This includes the necessary
- parameters for configuring a stateless hardware decoding pipeline for FWHT.
- This codec is specific to the vicodec test driver.
- .. c:type:: v4l2_ctrl_fwht_params
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{1.4cm}|p{3.9cm}|p{12.0cm}|
- .. flat-table:: struct v4l2_ctrl_fwht_params
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u64
- - ``backward_ref_ts``
- - Timestamp of the V4L2 capture buffer to use as backward reference, used
- with P-coded frames. The timestamp refers to the
- ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
- :c:func:`v4l2_timeval_to_ns()` function to convert the struct
- :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
- * - __u32
- - ``version``
- - The version of the codec. Set to ``V4L2_FWHT_VERSION``.
- * - __u32
- - ``width``
- - The width of the frame.
- * - __u32
- - ``height``
- - The height of the frame.
- * - __u32
- - ``flags``
- - The flags of the frame, see :ref:`fwht-flags`.
- * - __u32
- - ``colorspace``
- - The colorspace of the frame, from enum :c:type:`v4l2_colorspace`.
- * - __u32
- - ``xfer_func``
- - The transfer function, from enum :c:type:`v4l2_xfer_func`.
- * - __u32
- - ``ycbcr_enc``
- - The Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`.
- * - __u32
- - ``quantization``
- - The quantization range, from enum :c:type:`v4l2_quantization`.
- .. raw:: latex
- \normalsize
- .. _fwht-flags:
- FWHT Flags
- ==========
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{7.0cm}|p{2.3cm}|p{8.0cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 3 1 4
- * - ``V4L2_FWHT_FL_IS_INTERLACED``
- - 0x00000001
- - Set if this is an interlaced format.
- * - ``V4L2_FWHT_FL_IS_BOTTOM_FIRST``
- - 0x00000002
- - Set if this is a bottom-first (NTSC) interlaced format.
- * - ``V4L2_FWHT_FL_IS_ALTERNATE``
- - 0x00000004
- - Set if each 'frame' contains just one field.
- * - ``V4L2_FWHT_FL_IS_BOTTOM_FIELD``
- - 0x00000008
- - If V4L2_FWHT_FL_IS_ALTERNATE was set, then this is set if this 'frame' is the
- bottom field, else it is the top field.
- * - ``V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED``
- - 0x00000010
- - Set if the Y' (luma) plane is uncompressed.
- * - ``V4L2_FWHT_FL_CB_IS_UNCOMPRESSED``
- - 0x00000020
- - Set if the Cb plane is uncompressed.
- * - ``V4L2_FWHT_FL_CR_IS_UNCOMPRESSED``
- - 0x00000040
- - Set if the Cr plane is uncompressed.
- * - ``V4L2_FWHT_FL_CHROMA_FULL_HEIGHT``
- - 0x00000080
- - Set if the chroma plane has the same height as the luma plane,
- else the chroma plane is half the height of the luma plane.
- * - ``V4L2_FWHT_FL_CHROMA_FULL_WIDTH``
- - 0x00000100
- - Set if the chroma plane has the same width as the luma plane,
- else the chroma plane is half the width of the luma plane.
- * - ``V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED``
- - 0x00000200
- - Set if the alpha plane is uncompressed.
- * - ``V4L2_FWHT_FL_I_FRAME``
- - 0x00000400
- - Set if this is an I-frame.
- * - ``V4L2_FWHT_FL_COMPONENTS_NUM_MSK``
- - 0x00070000
- - The number of color components minus one.
- * - ``V4L2_FWHT_FL_PIXENC_MSK``
- - 0x00180000
- - The mask for the pixel encoding.
- * - ``V4L2_FWHT_FL_PIXENC_YUV``
- - 0x00080000
- - Set if the pixel encoding is YUV.
- * - ``V4L2_FWHT_FL_PIXENC_RGB``
- - 0x00100000
- - Set if the pixel encoding is RGB.
- * - ``V4L2_FWHT_FL_PIXENC_HSV``
- - 0x00180000
- - Set if the pixel encoding is HSV.
- .. raw:: latex
- \normalsize
- .. _v4l2-codec-stateless-vp8:
- ``V4L2_CID_STATELESS_VP8_FRAME (struct)``
- Specifies the frame parameters for the associated VP8 parsed frame data.
- This includes the necessary parameters for
- configuring a stateless hardware decoding pipeline for VP8.
- The bitstream parameters are defined according to :ref:`vp8`.
- .. c:type:: v4l2_ctrl_vp8_frame
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{7.0cm}|p{4.6cm}|p{5.7cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_vp8_frame
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - struct :c:type:`v4l2_vp8_segment`
- - ``segment``
- - Structure with segment-based adjustments metadata.
- * - struct :c:type:`v4l2_vp8_loop_filter`
- - ``lf``
- - Structure with loop filter level adjustments metadata.
- * - struct :c:type:`v4l2_vp8_quantization`
- - ``quant``
- - Structure with VP8 dequantization indices metadata.
- * - struct :c:type:`v4l2_vp8_entropy`
- - ``entropy``
- - Structure with VP8 entropy coder probabilities metadata.
- * - struct :c:type:`v4l2_vp8_entropy_coder_state`
- - ``coder_state``
- - Structure with VP8 entropy coder state.
- * - __u16
- - ``width``
- - The width of the frame. Must be set for all frames.
- * - __u16
- - ``height``
- - The height of the frame. Must be set for all frames.
- * - __u8
- - ``horizontal_scale``
- - Horizontal scaling factor.
- * - __u8
- - ``vertical_scale``
- - Vertical scaling factor.
- * - __u8
- - ``version``
- - Bitstream version.
- * - __u8
- - ``prob_skip_false``
- - Indicates the probability that the macroblock is not skipped.
- * - __u8
- - ``prob_intra``
- - Indicates the probability that a macroblock is intra-predicted.
- * - __u8
- - ``prob_last``
- - Indicates the probability that the last reference frame is used
- for inter-prediction
- * - __u8
- - ``prob_gf``
- - Indicates the probability that the golden reference frame is used
- for inter-prediction
- * - __u8
- - ``num_dct_parts``
- - Number of DCT coefficients partitions. Must be one of: 1, 2, 4, or 8.
- * - __u32
- - ``first_part_size``
- - Size of the first partition, i.e. the control partition.
- * - __u32
- - ``first_part_header_bits``
- - Size in bits of the first partition header portion.
- * - __u32
- - ``dct_part_sizes[8]``
- - DCT coefficients sizes.
- * - __u64
- - ``last_frame_ts``
- - Timestamp for the V4L2 capture buffer to use as last reference frame, used
- with inter-coded frames. The timestamp refers to the ``timestamp`` field in
- struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
- function to convert the struct :c:type:`timeval` in struct
- :c:type:`v4l2_buffer` to a __u64.
- * - __u64
- - ``golden_frame_ts``
- - Timestamp for the V4L2 capture buffer to use as last reference frame, used
- with inter-coded frames. The timestamp refers to the ``timestamp`` field in
- struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
- function to convert the struct :c:type:`timeval` in struct
- :c:type:`v4l2_buffer` to a __u64.
- * - __u64
- - ``alt_frame_ts``
- - Timestamp for the V4L2 capture buffer to use as alternate reference frame, used
- with inter-coded frames. The timestamp refers to the ``timestamp`` field in
- struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
- function to convert the struct :c:type:`timeval` in struct
- :c:type:`v4l2_buffer` to a __u64.
- * - __u64
- - ``flags``
- - See :ref:`Frame Flags <vp8_frame_flags>`
- .. raw:: latex
- \normalsize
- .. _vp8_frame_flags:
- ``Frame Flags``
- .. tabularcolumns:: |p{9.8cm}|p{0.8cm}|p{6.7cm}|
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP8_FRAME_FLAG_KEY_FRAME``
- - 0x01
- - Indicates if the frame is a key frame.
- * - ``V4L2_VP8_FRAME_FLAG_EXPERIMENTAL``
- - 0x02
- - Experimental bitstream.
- * - ``V4L2_VP8_FRAME_FLAG_SHOW_FRAME``
- - 0x04
- - Show frame flag, indicates if the frame is for display.
- * - ``V4L2_VP8_FRAME_FLAG_MB_NO_SKIP_COEFF``
- - 0x08
- - Enable/disable skipping of macroblocks with no non-zero coefficients.
- * - ``V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN``
- - 0x10
- - Sign of motion vectors when the golden frame is referenced.
- * - ``V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT``
- - 0x20
- - Sign of motion vectors when the alt frame is referenced.
- .. c:type:: v4l2_vp8_entropy_coder_state
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.0cm}|p{2.0cm}|p{14.3cm}|
- .. flat-table:: struct v4l2_vp8_entropy_coder_state
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``range``
- - coder state value for "Range"
- * - __u8
- - ``value``
- - coder state value for "Value"-
- * - __u8
- - ``bit_count``
- - number of bits left.
- * - __u8
- - ``padding``
- - Applications and drivers must set this to zero.
- .. c:type:: v4l2_vp8_segment
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.2cm}|p{4.0cm}|p{12.1cm}|
- .. flat-table:: struct v4l2_vp8_segment
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __s8
- - ``quant_update[4]``
- - Signed quantizer value update.
- * - __s8
- - ``lf_update[4]``
- - Signed loop filter level value update.
- * - __u8
- - ``segment_probs[3]``
- - Segment probabilities.
- * - __u8
- - ``padding``
- - Applications and drivers must set this to zero.
- * - __u32
- - ``flags``
- - See :ref:`Segment Flags <vp8_segment_flags>`
- .. _vp8_segment_flags:
- ``Segment Flags``
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{10cm}|p{1.0cm}|p{6.3cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP8_SEGMENT_FLAG_ENABLED``
- - 0x01
- - Enable/disable segment-based adjustments.
- * - ``V4L2_VP8_SEGMENT_FLAG_UPDATE_MAP``
- - 0x02
- - Indicates if the macroblock segmentation map is updated in this frame.
- * - ``V4L2_VP8_SEGMENT_FLAG_UPDATE_FEATURE_DATA``
- - 0x04
- - Indicates if the segment feature data is updated in this frame.
- * - ``V4L2_VP8_SEGMENT_FLAG_DELTA_VALUE_MODE``
- - 0x08
- - If is set, the segment feature data mode is delta-value.
- If cleared, it's absolute-value.
- .. raw:: latex
- \normalsize
- .. c:type:: v4l2_vp8_loop_filter
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{3.9cm}|p{11.9cm}|
- .. flat-table:: struct v4l2_vp8_loop_filter
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __s8
- - ``ref_frm_delta[4]``
- - Reference adjustment (signed) delta value.
- * - __s8
- - ``mb_mode_delta[4]``
- - Macroblock prediction mode adjustment (signed) delta value.
- * - __u8
- - ``sharpness_level``
- - Sharpness level
- * - __u8
- - ``level``
- - Filter level
- * - __u16
- - ``padding``
- - Applications and drivers must set this to zero.
- * - __u32
- - ``flags``
- - See :ref:`Loop Filter Flags <vp8_loop_filter_flags>`
- .. _vp8_loop_filter_flags:
- ``Loop Filter Flags``
- .. tabularcolumns:: |p{7.0cm}|p{1.2cm}|p{9.1cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP8_LF_ADJ_ENABLE``
- - 0x01
- - Enable/disable macroblock-level loop filter adjustment.
- * - ``V4L2_VP8_LF_DELTA_UPDATE``
- - 0x02
- - Indicates if the delta values used in an adjustment are updated.
- * - ``V4L2_VP8_LF_FILTER_TYPE_SIMPLE``
- - 0x04
- - If set, indicates the filter type is simple.
- If cleared, the filter type is normal.
- .. c:type:: v4l2_vp8_quantization
- .. tabularcolumns:: |p{1.5cm}|p{3.5cm}|p{12.3cm}|
- .. flat-table:: struct v4l2_vp8_quantization
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``y_ac_qi``
- - Luma AC coefficient table index.
- * - __s8
- - ``y_dc_delta``
- - Luma DC delta value.
- * - __s8
- - ``y2_dc_delta``
- - Y2 block DC delta value.
- * - __s8
- - ``y2_ac_delta``
- - Y2 block AC delta value.
- * - __s8
- - ``uv_dc_delta``
- - Chroma DC delta value.
- * - __s8
- - ``uv_ac_delta``
- - Chroma AC delta value.
- * - __u16
- - ``padding``
- - Applications and drivers must set this to zero.
- .. c:type:: v4l2_vp8_entropy
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
- .. flat-table:: struct v4l2_vp8_entropy
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``coeff_probs[4][8][3][11]``
- - Coefficient update probabilities.
- * - __u8
- - ``y_mode_probs[4]``
- - Luma mode update probabilities.
- * - __u8
- - ``uv_mode_probs[3]``
- - Chroma mode update probabilities.
- * - __u8
- - ``mv_probs[2][19]``
- - MV decoding update probabilities.
- * - __u8
- - ``padding[3]``
- - Applications and drivers must set this to zero.
- .. _v4l2-codec-stateless-mpeg2:
- ``V4L2_CID_STATELESS_MPEG2_SEQUENCE (struct)``
- Specifies the sequence parameters (as extracted from the bitstream) for the
- associated MPEG-2 slice data. This includes fields matching the syntax
- elements from the sequence header and sequence extension parts of the
- bitstream as specified by :ref:`mpeg2part2`.
- .. c:type:: v4l2_ctrl_mpeg2_sequence
- .. raw:: latex
- \small
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.4cm}|p{6.5cm}|p{9.4cm}|
- .. flat-table:: struct v4l2_ctrl_mpeg2_sequence
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u16
- - ``horizontal_size``
- - The width of the displayable part of the frame's luminance component.
- * - __u16
- - ``vertical_size``
- - The height of the displayable part of the frame's luminance component.
- * - __u32
- - ``vbv_buffer_size``
- - Used to calculate the required size of the video buffering verifier,
- defined (in bits) as: 16 * 1024 * vbv_buffer_size.
- * - __u16
- - ``profile_and_level_indication``
- - The current profile and level indication as extracted from the
- bitstream.
- * - __u8
- - ``chroma_format``
- - The chrominance sub-sampling format (1: 4:2:0, 2: 4:2:2, 3: 4:4:4).
- * - __u8
- - ``flags``
- - See :ref:`MPEG-2 Sequence Flags <mpeg2_sequence_flags>`.
- .. _mpeg2_sequence_flags:
- ``MPEG-2 Sequence Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_MPEG2_SEQ_FLAG_PROGRESSIVE``
- - 0x01
- - Indication that all the frames for the sequence are progressive instead
- of interlaced.
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_MPEG2_PICTURE (struct)``
- Specifies the picture parameters (as extracted from the bitstream) for the
- associated MPEG-2 slice data. This includes fields matching the syntax
- elements from the picture header and picture coding extension parts of the
- bitstream as specified by :ref:`mpeg2part2`.
- .. c:type:: v4l2_ctrl_mpeg2_picture
- .. raw:: latex
- \small
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.0cm}|p{5.6cm}|p{10.7cm}|
- .. flat-table:: struct v4l2_ctrl_mpeg2_picture
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u64
- - ``backward_ref_ts``
- - Timestamp of the V4L2 capture buffer to use as backward reference, used
- with B-coded and P-coded frames. The timestamp refers to the
- ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
- :c:func:`v4l2_timeval_to_ns()` function to convert the struct
- :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
- * - __u64
- - ``forward_ref_ts``
- - Timestamp for the V4L2 capture buffer to use as forward reference, used
- with B-coded frames. The timestamp refers to the ``timestamp`` field in
- struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
- function to convert the struct :c:type:`timeval` in struct
- :c:type:`v4l2_buffer` to a __u64.
- * - __u32
- - ``flags``
- - See :ref:`MPEG-2 Picture Flags <mpeg2_picture_flags>`.
- * - __u8
- - ``f_code[2][2]``
- - Motion vector codes.
- * - __u8
- - ``picture_coding_type``
- - Picture coding type for the frame covered by the current slice
- (V4L2_MPEG2_PIC_CODING_TYPE_I, V4L2_MPEG2_PIC_CODING_TYPE_P or
- V4L2_MPEG2_PIC_CODING_TYPE_B).
- * - __u8
- - ``picture_structure``
- - Picture structure (1: interlaced top field, 2: interlaced bottom field,
- 3: progressive frame).
- * - __u8
- - ``intra_dc_precision``
- - Precision of Discrete Cosine transform (0: 8 bits precision,
- 1: 9 bits precision, 2: 10 bits precision, 3: 11 bits precision).
- * - __u8
- - ``reserved[5]``
- - Applications and drivers must set this to zero.
- .. _mpeg2_picture_flags:
- ``MPEG-2 Picture Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_MPEG2_PIC_FLAG_TOP_FIELD_FIRST``
- - 0x00000001
- - If set and it's an interlaced stream, top field is output first.
- * - ``V4L2_MPEG2_PIC_FLAG_FRAME_PRED_DCT``
- - 0x00000002
- - If set only frame-DCT and frame prediction are used.
- * - ``V4L2_MPEG2_PIC_FLAG_CONCEALMENT_MV``
- - 0x00000004
- - If set motion vectors are coded for intra macroblocks.
- * - ``V4L2_MPEG2_PIC_FLAG_Q_SCALE_TYPE``
- - 0x00000008
- - This flag affects the inverse quantization process.
- * - ``V4L2_MPEG2_PIC_FLAG_INTRA_VLC``
- - 0x00000010
- - This flag affects the decoding of transform coefficient data.
- * - ``V4L2_MPEG2_PIC_FLAG_ALT_SCAN``
- - 0x00000020
- - This flag affects the decoding of transform coefficient data.
- * - ``V4L2_MPEG2_PIC_FLAG_REPEAT_FIRST``
- - 0x00000040
- - This flag affects the decoding process of progressive frames.
- * - ``V4L2_MPEG2_PIC_FLAG_PROGRESSIVE``
- - 0x00000080
- - Indicates whether the current frame is progressive.
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_MPEG2_QUANTISATION (struct)``
- Specifies quantisation matrices, in zigzag scanning order, for the
- associated MPEG-2 slice data. This control is initialized by the kernel
- to the matrices default values. If a bitstream transmits a user-defined
- quantisation matrices load, applications are expected to use this control.
- Applications are also expected to set the control loading the default
- values, if the quantisation matrices need to be reset, for instance on a
- sequence header. This process is specified by section 6.3.7.
- "Quant matrix extension" of the specification.
- .. c:type:: v4l2_ctrl_mpeg2_quantisation
- .. tabularcolumns:: |p{0.8cm}|p{8.0cm}|p{8.5cm}|
- .. cssclass:: longtable
- .. raw:: latex
- \small
- .. flat-table:: struct v4l2_ctrl_mpeg2_quantisation
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``intra_quantiser_matrix[64]``
- - The quantisation matrix coefficients for intra-coded frames, in zigzag
- scanning order. It is relevant for both luma and chroma components,
- although it can be superseded by the chroma-specific matrix for
- non-4:2:0 YUV formats.
- * - __u8
- - ``non_intra_quantiser_matrix[64]``
- - The quantisation matrix coefficients for non-intra-coded frames, in
- zigzag scanning order. It is relevant for both luma and chroma
- components, although it can be superseded by the chroma-specific matrix
- for non-4:2:0 YUV formats.
- * - __u8
- - ``chroma_intra_quantiser_matrix[64]``
- - The quantisation matrix coefficients for the chominance component of
- intra-coded frames, in zigzag scanning order. Only relevant for
- non-4:2:0 YUV formats.
- * - __u8
- - ``chroma_non_intra_quantiser_matrix[64]``
- - The quantisation matrix coefficients for the chrominance component of
- non-intra-coded frames, in zigzag scanning order. Only relevant for
- non-4:2:0 YUV formats.
- .. raw:: latex
- \normalsize
- .. _v4l2-codec-stateless-vp9:
- ``V4L2_CID_STATELESS_VP9_COMPRESSED_HDR (struct)``
- Stores VP9 probabilities updates as parsed from the current compressed frame
- header. A value of zero in an array element means no update of the relevant
- probability. Motion vector-related updates contain a new value or zero. All
- other updates contain values translated with inv_map_table[] (see 6.3.5 in
- :ref:`vp9`).
- .. c:type:: v4l2_ctrl_vp9_compressed_hdr
- .. tabularcolumns:: |p{1cm}|p{4.8cm}|p{11.4cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_vp9_compressed_hdr
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``tx_mode``
- - Specifies the TX mode. See :ref:`TX Mode <vp9_tx_mode>` for more details.
- * - __u8
- - ``tx8[2][1]``
- - TX 8x8 probabilities delta.
- * - __u8
- - ``tx16[2][2]``
- - TX 16x16 probabilities delta.
- * - __u8
- - ``tx32[2][3]``
- - TX 32x32 probabilities delta.
- * - __u8
- - ``coef[4][2][2][6][6][3]``
- - Coefficient probabilities delta.
- * - __u8
- - ``skip[3]``
- - Skip probabilities delta.
- * - __u8
- - ``inter_mode[7][3]``
- - Inter prediction mode probabilities delta.
- * - __u8
- - ``interp_filter[4][2]``
- - Interpolation filter probabilities delta.
- * - __u8
- - ``is_inter[4]``
- - Is inter-block probabilities delta.
- * - __u8
- - ``comp_mode[5]``
- - Compound prediction mode probabilities delta.
- * - __u8
- - ``single_ref[5][2]``
- - Single reference probabilities delta.
- * - __u8
- - ``comp_ref[5]``
- - Compound reference probabilities delta.
- * - __u8
- - ``y_mode[4][9]``
- - Y prediction mode probabilities delta.
- * - __u8
- - ``uv_mode[10][9]``
- - UV prediction mode probabilities delta.
- * - __u8
- - ``partition[16][3]``
- - Partition probabilities delta.
- * - __u8
- - ``mv.joint[3]``
- - Motion vector joint probabilities delta.
- * - __u8
- - ``mv.sign[2]``
- - Motion vector sign probabilities delta.
- * - __u8
- - ``mv.classes[2][10]``
- - Motion vector class probabilities delta.
- * - __u8
- - ``mv.class0_bit[2]``
- - Motion vector class0 bit probabilities delta.
- * - __u8
- - ``mv.bits[2][10]``
- - Motion vector bits probabilities delta.
- * - __u8
- - ``mv.class0_fr[2][2][3]``
- - Motion vector class0 fractional bit probabilities delta.
- * - __u8
- - ``mv.fr[2][3]``
- - Motion vector fractional bit probabilities delta.
- * - __u8
- - ``mv.class0_hp[2]``
- - Motion vector class0 high precision fractional bit probabilities delta.
- * - __u8
- - ``mv.hp[2]``
- - Motion vector high precision fractional bit probabilities delta.
- .. _vp9_tx_mode:
- ``TX Mode``
- .. tabularcolumns:: |p{6.5cm}|p{0.5cm}|p{10.3cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP9_TX_MODE_ONLY_4X4``
- - 0
- - Transform size is 4x4.
- * - ``V4L2_VP9_TX_MODE_ALLOW_8X8``
- - 1
- - Transform size can be up to 8x8.
- * - ``V4L2_VP9_TX_MODE_ALLOW_16X16``
- - 2
- - Transform size can be up to 16x16.
- * - ``V4L2_VP9_TX_MODE_ALLOW_32X32``
- - 3
- - transform size can be up to 32x32.
- * - ``V4L2_VP9_TX_MODE_SELECT``
- - 4
- - Bitstream contains the transform size for each block.
- See section '7.3.1 Tx mode semantics' of the :ref:`vp9` specification for more details.
- ``V4L2_CID_STATELESS_VP9_FRAME (struct)``
- Specifies the frame parameters for the associated VP9 frame decode request.
- This includes the necessary parameters for configuring a stateless hardware
- decoding pipeline for VP9. The bitstream parameters are defined according
- to :ref:`vp9`.
- .. c:type:: v4l2_ctrl_vp9_frame
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{4.7cm}|p{5.5cm}|p{7.1cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_vp9_frame
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - struct :c:type:`v4l2_vp9_loop_filter`
- - ``lf``
- - Loop filter parameters. See struct :c:type:`v4l2_vp9_loop_filter` for more details.
- * - struct :c:type:`v4l2_vp9_quantization`
- - ``quant``
- - Quantization parameters. See :c:type:`v4l2_vp9_quantization` for more details.
- * - struct :c:type:`v4l2_vp9_segmentation`
- - ``seg``
- - Segmentation parameters. See :c:type:`v4l2_vp9_segmentation` for more details.
- * - __u32
- - ``flags``
- - Combination of V4L2_VP9_FRAME_FLAG_* flags. See :ref:`Frame Flags<vp9_frame_flags>`.
- * - __u16
- - ``compressed_header_size``
- - Compressed header size in bytes.
- * - __u16
- - ``uncompressed_header_size``
- - Uncompressed header size in bytes.
- * - __u16
- - ``frame_width_minus_1``
- - Add 1 to get the frame width expressed in pixels. See section 7.2.3 in :ref:`vp9`.
- * - __u16
- - ``frame_height_minus_1``
- - Add 1 to get the frame height expressed in pixels. See section 7.2.3 in :ref:`vp9`.
- * - __u16
- - ``render_width_minus_1``
- - Add 1 to get the expected render width expressed in pixels. This is
- not used during the decoding process but might be used by HW scalers to
- prepare a frame that's ready for scanout. See section 7.2.4 in :ref:`vp9`.
- * - __u16
- - render_height_minus_1
- - Add 1 to get the expected render height expressed in pixels. This is
- not used during the decoding process but might be used by HW scalers to
- prepare a frame that's ready for scanout. See section 7.2.4 in :ref:`vp9`.
- * - __u64
- - ``last_frame_ts``
- - "last" reference buffer timestamp.
- The timestamp refers to the ``timestamp`` field in
- struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
- function to convert the struct :c:type:`timeval` in struct
- :c:type:`v4l2_buffer` to a __u64.
- * - __u64
- - ``golden_frame_ts``
- - "golden" reference buffer timestamp.
- The timestamp refers to the ``timestamp`` field in
- struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
- function to convert the struct :c:type:`timeval` in struct
- :c:type:`v4l2_buffer` to a __u64.
- * - __u64
- - ``alt_frame_ts``
- - "alt" reference buffer timestamp.
- The timestamp refers to the ``timestamp`` field in
- struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
- function to convert the struct :c:type:`timeval` in struct
- :c:type:`v4l2_buffer` to a __u64.
- * - __u8
- - ``ref_frame_sign_bias``
- - a bitfield specifying whether the sign bias is set for a given
- reference frame. See :ref:`Reference Frame Sign Bias<vp9_ref_frame_sign_bias>`
- for more details.
- * - __u8
- - ``reset_frame_context``
- - specifies whether the frame context should be reset to default values. See
- :ref:`Reset Frame Context<vp9_reset_frame_context>` for more details.
- * - __u8
- - ``frame_context_idx``
- - Frame context that should be used/updated.
- * - __u8
- - ``profile``
- - VP9 profile. Can be 0, 1, 2 or 3.
- * - __u8
- - ``bit_depth``
- - Component depth in bits. Can be 8, 10 or 12. Note that not all profiles
- support 10 and/or 12 bits depths.
- * - __u8
- - ``interpolation_filter``
- - Specifies the filter selection used for performing inter prediction. See
- :ref:`Interpolation Filter<vp9_interpolation_filter>` for more details.
- * - __u8
- - ``tile_cols_log2``
- - Specifies the base 2 logarithm of the width of each tile (where the
- width is measured in units of 8x8 blocks). Shall be less than or equal
- to 6.
- * - __u8
- - ``tile_rows_log2``
- - Specifies the base 2 logarithm of the height of each tile (where the
- height is measured in units of 8x8 blocks).
- * - __u8
- - ``reference_mode``
- - Specifies the type of inter prediction to be used. See
- :ref:`Reference Mode<vp9_reference_mode>` for more details. Note that
- this is derived as part of the compressed header parsing process and
- for this reason should have been part of
- :c:type: `v4l2_ctrl_vp9_compressed_hdr` optional control. It is safe to
- set this value to zero if the driver does not require compressed
- headers.
- * - __u8
- - ``reserved[7]``
- - Applications and drivers must set this to zero.
- .. raw:: latex
- \normalsize
- .. _vp9_frame_flags:
- ``Frame Flags``
- .. tabularcolumns:: |p{10.0cm}|p{1.2cm}|p{6.1cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP9_FRAME_FLAG_KEY_FRAME``
- - 0x001
- - The frame is a key frame.
- * - ``V4L2_VP9_FRAME_FLAG_SHOW_FRAME``
- - 0x002
- - The frame should be displayed.
- * - ``V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT``
- - 0x004
- - The decoding should be error resilient.
- * - ``V4L2_VP9_FRAME_FLAG_INTRA_ONLY``
- - 0x008
- - The frame does not reference other frames.
- * - ``V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV``
- - 0x010
- - The frame can use high precision motion vectors.
- * - ``V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX``
- - 0x020
- - Frame context should be updated after decoding.
- * - ``V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE``
- - 0x040
- - Parallel decoding is used.
- * - ``V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING``
- - 0x080
- - Vertical subsampling is enabled.
- * - ``V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING``
- - 0x100
- - Horizontal subsampling is enabled.
- * - ``V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING``
- - 0x200
- - The full UV range is used.
- .. _vp9_ref_frame_sign_bias:
- ``Reference Frame Sign Bias``
- .. tabularcolumns:: |p{7.0cm}|p{1.2cm}|p{9.1cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP9_SIGN_BIAS_LAST``
- - 0x1
- - Sign bias is set for the last reference frame.
- * - ``V4L2_VP9_SIGN_BIAS_GOLDEN``
- - 0x2
- - Sign bias is set for the golden reference frame.
- * - ``V4L2_VP9_SIGN_BIAS_ALT``
- - 0x2
- - Sign bias is set for the alt reference frame.
- .. _vp9_reset_frame_context:
- ``Reset Frame Context``
- .. tabularcolumns:: |p{7.0cm}|p{1.2cm}|p{9.1cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP9_RESET_FRAME_CTX_NONE``
- - 0
- - Do not reset any frame context.
- * - ``V4L2_VP9_RESET_FRAME_CTX_SPEC``
- - 1
- - Reset the frame context pointed to by
- :c:type:`v4l2_ctrl_vp9_frame`.frame_context_idx.
- * - ``V4L2_VP9_RESET_FRAME_CTX_ALL``
- - 2
- - Reset all frame contexts.
- See section '7.2 Uncompressed header semantics' of the :ref:`vp9` specification
- for more details.
- .. _vp9_interpolation_filter:
- ``Interpolation Filter``
- .. tabularcolumns:: |p{9.0cm}|p{1.2cm}|p{7.1cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP9_INTERP_FILTER_EIGHTTAP``
- - 0
- - Eight tap filter.
- * - ``V4L2_VP9_INTERP_FILTER_EIGHTTAP_SMOOTH``
- - 1
- - Eight tap smooth filter.
- * - ``V4L2_VP9_INTERP_FILTER_EIGHTTAP_SHARP``
- - 2
- - Eeight tap sharp filter.
- * - ``V4L2_VP9_INTERP_FILTER_BILINEAR``
- - 3
- - Bilinear filter.
- * - ``V4L2_VP9_INTERP_FILTER_SWITCHABLE``
- - 4
- - Filter selection is signaled at the block level.
- See section '7.2.7 Interpolation filter semantics' of the :ref:`vp9` specification
- for more details.
- .. _vp9_reference_mode:
- ``Reference Mode``
- .. tabularcolumns:: |p{9.6cm}|p{0.5cm}|p{7.2cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP9_REFERENCE_MODE_SINGLE_REFERENCE``
- - 0
- - Indicates that all the inter blocks use only a single reference frame
- to generate motion compensated prediction.
- * - ``V4L2_VP9_REFERENCE_MODE_COMPOUND_REFERENCE``
- - 1
- - Requires all the inter blocks to use compound mode. Single reference
- frame prediction is not allowed.
- * - ``V4L2_VP9_REFERENCE_MODE_SELECT``
- - 2
- - Allows each individual inter block to select between single and
- compound prediction modes.
- See section '7.3.6 Frame reference mode semantics' of the :ref:`vp9` specification for more details.
- .. c:type:: v4l2_vp9_segmentation
- Encodes the quantization parameters. See section '7.2.10 Segmentation
- params syntax' of the :ref:`vp9` specification for more details.
- .. tabularcolumns:: |p{0.8cm}|p{5cm}|p{11.4cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_vp9_segmentation
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``feature_data[8][4]``
- - Data attached to each feature. Data entry is only valid if the feature
- is enabled. The array shall be indexed with segment number as the first dimension
- (0..7) and one of V4L2_VP9_SEG_* as the second dimension.
- See :ref:`Segment Feature IDs<vp9_segment_feature>`.
- * - __u8
- - ``feature_enabled[8]``
- - Bitmask defining which features are enabled in each segment. The value for each
- segment is a combination of V4L2_VP9_SEGMENT_FEATURE_ENABLED(id) values where id is
- one of V4L2_VP9_SEG_*. See :ref:`Segment Feature IDs<vp9_segment_feature>`.
- * - __u8
- - ``tree_probs[7]``
- - Specifies the probability values to be used when decoding a Segment-ID.
- See '5.15 Segmentation map' section of :ref:`vp9` for more details.
- * - __u8
- - ``pred_probs[3]``
- - Specifies the probability values to be used when decoding a
- Predicted-Segment-ID. See '6.4.14 Get segment id syntax'
- section of :ref:`vp9` for more details.
- * - __u8
- - ``flags``
- - Combination of V4L2_VP9_SEGMENTATION_FLAG_* flags. See
- :ref:`Segmentation Flags<vp9_segmentation_flags>`.
- * - __u8
- - ``reserved[5]``
- - Applications and drivers must set this to zero.
- .. _vp9_segment_feature:
- ``Segment feature IDs``
- .. tabularcolumns:: |p{6.0cm}|p{1cm}|p{10.3cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP9_SEG_LVL_ALT_Q``
- - 0
- - Quantizer segment feature.
- * - ``V4L2_VP9_SEG_LVL_ALT_L``
- - 1
- - Loop filter segment feature.
- * - ``V4L2_VP9_SEG_LVL_REF_FRAME``
- - 2
- - Reference frame segment feature.
- * - ``V4L2_VP9_SEG_LVL_SKIP``
- - 3
- - Skip segment feature.
- * - ``V4L2_VP9_SEG_LVL_MAX``
- - 4
- - Number of segment features.
- .. _vp9_segmentation_flags:
- ``Segmentation Flags``
- .. tabularcolumns:: |p{10.6cm}|p{0.8cm}|p{5.9cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP9_SEGMENTATION_FLAG_ENABLED``
- - 0x01
- - Indicates that this frame makes use of the segmentation tool.
- * - ``V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP``
- - 0x02
- - Indicates that the segmentation map should be updated during the
- decoding of this frame.
- * - ``V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE``
- - 0x04
- - Indicates that the updates to the segmentation map are coded
- relative to the existing segmentation map.
- * - ``V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA``
- - 0x08
- - Indicates that new parameters are about to be specified for each
- segment.
- * - ``V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE``
- - 0x10
- - Indicates that the segmentation parameters represent the actual values
- to be used.
- .. c:type:: v4l2_vp9_quantization
- Encodes the quantization parameters. See section '7.2.9 Quantization params
- syntax' of the VP9 specification for more details.
- .. tabularcolumns:: |p{0.8cm}|p{4cm}|p{12.4cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_vp9_quantization
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``base_q_idx``
- - Indicates the base frame qindex.
- * - __s8
- - ``delta_q_y_dc``
- - Indicates the Y DC quantizer relative to base_q_idx.
- * - __s8
- - ``delta_q_uv_dc``
- - Indicates the UV DC quantizer relative to base_q_idx.
- * - __s8
- - ``delta_q_uv_ac``
- - Indicates the UV AC quantizer relative to base_q_idx.
- * - __u8
- - ``reserved[4]``
- - Applications and drivers must set this to zero.
- .. c:type:: v4l2_vp9_loop_filter
- This structure contains all loop filter related parameters. See sections
- '7.2.8 Loop filter semantics' of the :ref:`vp9` specification for more details.
- .. tabularcolumns:: |p{0.8cm}|p{4cm}|p{12.4cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_vp9_loop_filter
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __s8
- - ``ref_deltas[4]``
- - Contains the adjustment needed for the filter level based on the chosen
- reference frame.
- * - __s8
- - ``mode_deltas[2]``
- - Contains the adjustment needed for the filter level based on the chosen
- mode.
- * - __u8
- - ``level``
- - Indicates the loop filter strength.
- * - __u8
- - ``sharpness``
- - Indicates the sharpness level.
- * - __u8
- - ``flags``
- - Combination of V4L2_VP9_LOOP_FILTER_FLAG_* flags.
- See :ref:`Loop Filter Flags <vp9_loop_filter_flags>`.
- * - __u8
- - ``reserved[7]``
- - Applications and drivers must set this to zero.
- .. _vp9_loop_filter_flags:
- ``Loop Filter Flags``
- .. tabularcolumns:: |p{9.6cm}|p{0.5cm}|p{7.2cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED``
- - 0x1
- - When set, the filter level depends on the mode and reference frame used
- to predict a block.
- * - ``V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE``
- - 0x2
- - When set, the bitstream contains additional syntax elements that
- specify which mode and reference frame deltas are to be updated.
- .. _v4l2-codec-stateless-hevc:
- ``V4L2_CID_STATELESS_HEVC_SPS (struct)``
- Specifies the Sequence Parameter Set fields (as extracted from the
- bitstream) for the associated HEVC slice data.
- These bitstream parameters are defined according to :ref:`hevc`.
- They are described in section 7.4.3.2 "Sequence parameter set RBSP
- semantics" of the specification.
- .. c:type:: v4l2_ctrl_hevc_sps
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{1.2cm}|p{9.2cm}|p{6.9cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_hevc_sps
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``video_parameter_set_id``
- - Specifies the value of the vps_video_parameter_set_id of the active VPS
- as described in section "7.4.3.2.1 General sequence parameter set RBSP semantics"
- of H.265 specifications.
- * - __u8
- - ``seq_parameter_set_id``
- - Provides an identifier for the SPS for reference by other syntax elements
- as described in section "7.4.3.2.1 General sequence parameter set RBSP semantics"
- of H.265 specifications.
- * - __u16
- - ``pic_width_in_luma_samples``
- - Specifies the width of each decoded picture in units of luma samples.
- * - __u16
- - ``pic_height_in_luma_samples``
- - Specifies the height of each decoded picture in units of luma samples.
- * - __u8
- - ``bit_depth_luma_minus8``
- - This value plus 8 specifies the bit depth of the samples of the luma array.
- * - __u8
- - ``bit_depth_chroma_minus8``
- - This value plus 8 specifies the bit depth of the samples of the chroma arrays.
- * - __u8
- - ``log2_max_pic_order_cnt_lsb_minus4``
- - Specifies the value of the variable MaxPicOrderCntLsb.
- * - __u8
- - ``sps_max_dec_pic_buffering_minus1``
- - This value plus 1 specifies the maximum required size of the decoded picture buffer for
- the coded video sequence (CVS).
- * - __u8
- - ``sps_max_num_reorder_pics``
- - Indicates the maximum allowed number of pictures.
- * - __u8
- - ``sps_max_latency_increase_plus1``
- - Used to signal MaxLatencyPictures, which indicates the maximum number of
- pictures that can precede any picture in output order and follow that
- picture in decoding order.
- * - __u8
- - ``log2_min_luma_coding_block_size_minus3``
- - This value plus 3 specifies the minimum luma coding block size.
- * - __u8
- - ``log2_diff_max_min_luma_coding_block_size``
- - Specifies the difference between the maximum and minimum luma coding block size.
- * - __u8
- - ``log2_min_luma_transform_block_size_minus2``
- - This value plus 2 specifies the minimum luma transform block size.
- * - __u8
- - ``log2_diff_max_min_luma_transform_block_size``
- - Specifies the difference between the maximum and minimum luma transform block size.
- * - __u8
- - ``max_transform_hierarchy_depth_inter``
- - Specifies the maximum hierarchy depth for transform units of coding units coded
- in inter prediction mode.
- * - __u8
- - ``max_transform_hierarchy_depth_intra``
- - Specifies the maximum hierarchy depth for transform units of coding units coded in
- intra prediction mode.
- * - __u8
- - ``pcm_sample_bit_depth_luma_minus1``
- - This value plus 1 specifies the number of bits used to represent each of PCM sample values of the
- luma component.
- * - __u8
- - ``pcm_sample_bit_depth_chroma_minus1``
- - Specifies the number of bits used to represent each of PCM sample values of
- the chroma components.
- * - __u8
- - ``log2_min_pcm_luma_coding_block_size_minus3``
- - Plus 3 specifies the minimum size of coding blocks.
- * - __u8
- - ``log2_diff_max_min_pcm_luma_coding_block_size``
- - Specifies the difference between the maximum and minimum size of coding blocks.
- * - __u8
- - ``num_short_term_ref_pic_sets``
- - Specifies the number of st_ref_pic_set() syntax structures included in the SPS.
- * - __u8
- - ``num_long_term_ref_pics_sps``
- - Specifies the number of candidate long-term reference pictures that are
- specified in the SPS.
- * - __u8
- - ``chroma_format_idc``
- - Specifies the chroma sampling.
- * - __u8
- - ``sps_max_sub_layers_minus1``
- - This value plus 1 specifies the maximum number of temporal sub-layers.
- * - __u64
- - ``flags``
- - See :ref:`Sequence Parameter Set Flags <hevc_sps_flags>`
- .. raw:: latex
- \normalsize
- .. _hevc_sps_flags:
- ``Sequence Parameter Set Flags``
- .. raw:: latex
- \small
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE``
- - 0x00000001
- -
- * - ``V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED``
- - 0x00000002
- -
- * - ``V4L2_HEVC_SPS_FLAG_AMP_ENABLED``
- - 0x00000004
- -
- * - ``V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET``
- - 0x00000008
- -
- * - ``V4L2_HEVC_SPS_FLAG_PCM_ENABLED``
- - 0x00000010
- -
- * - ``V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED``
- - 0x00000020
- -
- * - ``V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT``
- - 0x00000040
- -
- * - ``V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED``
- - 0x00000080
- -
- * - ``V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED``
- - 0x00000100
- -
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_HEVC_PPS (struct)``
- Specifies the Picture Parameter Set fields (as extracted from the
- bitstream) for the associated HEVC slice data.
- These bitstream parameters are defined according to :ref:`hevc`.
- They are described in section 7.4.3.3 "Picture parameter set RBSP
- semantics" of the specification.
- .. c:type:: v4l2_ctrl_hevc_pps
- .. tabularcolumns:: |p{1.2cm}|p{8.6cm}|p{7.5cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_hevc_pps
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``pic_parameter_set_id``
- - Identifies the PPS for reference by other syntax elements.
- * - __u8
- - ``num_extra_slice_header_bits``
- - Specifies the number of extra slice header bits that are present
- in the slice header RBSP for coded pictures referring to the PPS.
- * - __u8
- - ``num_ref_idx_l0_default_active_minus1``
- - This value plus 1 specifies the inferred value of num_ref_idx_l0_active_minus1.
- * - __u8
- - ``num_ref_idx_l1_default_active_minus1``
- - This value plus 1 specifies the inferred value of num_ref_idx_l1_active_minus1.
- * - __s8
- - ``init_qp_minus26``
- - This value plus 26 specifies the initial value of SliceQp Y for each slice
- referring to the PPS.
- * - __u8
- - ``diff_cu_qp_delta_depth``
- - Specifies the difference between the luma coding tree block size
- and the minimum luma coding block size of coding units that
- convey cu_qp_delta_abs and cu_qp_delta_sign_flag.
- * - __s8
- - ``pps_cb_qp_offset``
- - Specifies the offsets to the luma quantization parameter Cb.
- * - __s8
- - ``pps_cr_qp_offset``
- - Specifies the offsets to the luma quantization parameter Cr.
- * - __u8
- - ``num_tile_columns_minus1``
- - This value plus 1 specifies the number of tile columns partitioning the picture.
- * - __u8
- - ``num_tile_rows_minus1``
- - This value plus 1 specifies the number of tile rows partitioning the picture.
- * - __u8
- - ``column_width_minus1[20]``
- - This value plus 1 specifies the width of the i-th tile column in units of
- coding tree blocks.
- * - __u8
- - ``row_height_minus1[22]``
- - This value plus 1 specifies the height of the i-th tile row in units of coding
- tree blocks.
- * - __s8
- - ``pps_beta_offset_div2``
- - Specifies the default deblocking parameter offsets for beta divided by 2.
- * - __s8
- - ``pps_tc_offset_div2``
- - Specifies the default deblocking parameter offsets for tC divided by 2.
- * - __u8
- - ``log2_parallel_merge_level_minus2``
- - This value plus 2 specifies the value of the variable Log2ParMrgLevel.
- * - __u8
- - ``padding[4]``
- - Applications and drivers must set this to zero.
- * - __u64
- - ``flags``
- - See :ref:`Picture Parameter Set Flags <hevc_pps_flags>`
- .. _hevc_pps_flags:
- ``Picture Parameter Set Flags``
- .. raw:: latex
- \small
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED``
- - 0x00000001
- -
- * - ``V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT``
- - 0x00000002
- -
- * - ``V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED``
- - 0x00000004
- -
- * - ``V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT``
- - 0x00000008
- -
- * - ``V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED``
- - 0x00000010
- -
- * - ``V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED``
- - 0x00000020
- -
- * - ``V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED``
- - 0x00000040
- -
- * - ``V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT``
- - 0x00000080
- -
- * - ``V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED``
- - 0x00000100
- -
- * - ``V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED``
- - 0x00000200
- -
- * - ``V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED``
- - 0x00000400
- -
- * - ``V4L2_HEVC_PPS_FLAG_TILES_ENABLED``
- - 0x00000800
- -
- * - ``V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED``
- - 0x00001000
- -
- * - ``V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED``
- - 0x00002000
- -
- * - ``V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED``
- - 0x00004000
- -
- * - ``V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED``
- - 0x00008000
- -
- * - ``V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER``
- - 0x00010000
- -
- * - ``V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT``
- - 0x00020000
- -
- * - ``V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT``
- - 0x00040000
- -
- * - ``V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT``
- - 0x00080000
- - Specifies the presence of deblocking filter control syntax elements in
- the PPS
- * - ``V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING``
- - 0x00100000
- - Specifies that tile column boundaries and likewise tile row boundaries
- are distributed uniformly across the picture
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (struct)``
- Specifies various slice-specific parameters, especially from the NAL unit
- header, general slice segment header and weighted prediction parameter
- parts of the bitstream.
- These bitstream parameters are defined according to :ref:`hevc`.
- They are described in section 7.4.7 "General slice segment header
- semantics" of the specification.
- This control is a dynamically sized 1-dimensional array,
- V4L2_CTRL_FLAG_DYNAMIC_ARRAY flag must be set when using it.
- .. c:type:: v4l2_ctrl_hevc_slice_params
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{5.4cm}|p{6.8cm}|p{5.1cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_hevc_slice_params
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u32
- - ``bit_size``
- - Size (in bits) of the current slice data.
- * - __u32
- - ``data_byte_offset``
- - Offset (in byte) to the video data in the current slice data.
- * - __u32
- - ``num_entry_point_offsets``
- - Specifies the number of entry point offset syntax elements in the slice header.
- When the driver supports it, the ``V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS``
- must be set.
- * - __u8
- - ``nal_unit_type``
- - Specifies the coding type of the slice (B, P or I).
- * - __u8
- - ``nuh_temporal_id_plus1``
- - Minus 1 specifies a temporal identifier for the NAL unit.
- * - __u8
- - ``slice_type``
- -
- (V4L2_HEVC_SLICE_TYPE_I, V4L2_HEVC_SLICE_TYPE_P or
- V4L2_HEVC_SLICE_TYPE_B).
- * - __u8
- - ``colour_plane_id``
- - Specifies the colour plane associated with the current slice.
- * - __s32
- - ``slice_pic_order_cnt``
- - Specifies the picture order count.
- * - __u8
- - ``num_ref_idx_l0_active_minus1``
- - This value plus 1 specifies the maximum reference index for reference picture list 0
- that may be used to decode the slice.
- * - __u8
- - ``num_ref_idx_l1_active_minus1``
- - This value plus 1 specifies the maximum reference index for reference picture list 1
- that may be used to decode the slice.
- * - __u8
- - ``collocated_ref_idx``
- - Specifies the reference index of the collocated picture used for
- temporal motion vector prediction.
- * - __u8
- - ``five_minus_max_num_merge_cand``
- - Specifies the maximum number of merging motion vector prediction
- candidates supported in the slice subtracted from 5.
- * - __s8
- - ``slice_qp_delta``
- - Specifies the initial value of QpY to be used for the coding blocks in the slice.
- * - __s8
- - ``slice_cb_qp_offset``
- - Specifies a difference to be added to the value of pps_cb_qp_offset.
- * - __s8
- - ``slice_cr_qp_offset``
- - Specifies a difference to be added to the value of pps_cr_qp_offset.
- * - __s8
- - ``slice_act_y_qp_offset``
- - Specifies the offset to the luma of quantization parameter qP derived in section 8.6.2
- * - __s8
- - ``slice_act_cb_qp_offset``
- - Specifies the offset to the cb of quantization parameter qP derived in section 8.6.2
- * - __s8
- - ``slice_act_cr_qp_offset``
- - Specifies the offset to the cr of quantization parameter qP derived in section 8.6.2
- * - __s8
- - ``slice_beta_offset_div2``
- - Specifies the deblocking parameter offsets for beta divided by 2.
- * - __s8
- - ``slice_tc_offset_div2``
- - Specifies the deblocking parameter offsets for tC divided by 2.
- * - __u8
- - ``pic_struct``
- - Indicates whether a picture should be displayed as a frame or as one or more fields.
- * - __u32
- - ``slice_segment_addr``
- - Specifies the address of the first coding tree block in the slice segment.
- * - __u8
- - ``ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - The list of L0 reference elements as indices in the DPB.
- * - __u8
- - ``ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - The list of L1 reference elements as indices in the DPB.
- * - __u16
- - ``short_term_ref_pic_set_size``
- - Specifies the size, in bits, of the short-term reference picture set, described as st_ref_pic_set()
- in the specification, included in the slice header or SPS (section 7.3.6.1).
- * - __u16
- - ``long_term_ref_pic_set_size``
- - Specifies the size, in bits, of the long-term reference picture set include in the slice header
- or SPS. It is the number of bits in the conditional block if(long_term_ref_pics_present_flag)
- in section 7.3.6.1 of the specification.
- * - __u8
- - ``padding``
- - Applications and drivers must set this to zero.
- * - struct :c:type:`v4l2_hevc_pred_weight_table`
- - ``pred_weight_table``
- - The prediction weight coefficients for inter-picture prediction.
- * - __u64
- - ``flags``
- - See :ref:`Slice Parameters Flags <hevc_slice_params_flags>`
- .. raw:: latex
- \normalsize
- .. _hevc_slice_params_flags:
- ``Slice Parameters Flags``
- .. raw:: latex
- \scriptsize
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA``
- - 0x00000001
- -
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA``
- - 0x00000002
- -
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED``
- - 0x00000004
- -
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO``
- - 0x00000008
- -
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT``
- - 0x00000010
- -
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0``
- - 0x00000020
- -
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV``
- - 0x00000040
- -
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED``
- - 0x00000080
- -
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED``
- - 0x00000100
- -
- * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT``
- - 0x00000200
- -
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (integer)``
- Specifies entry point offsets in bytes.
- This control is a dynamically sized array. The number of entry point
- offsets is reported by the ``elems`` field.
- This bitstream parameter is defined according to :ref:`hevc`.
- They are described in section 7.4.7.1 "General slice segment header
- semantics" of the specification.
- When multiple slices are submitted in a request, the length of
- this array must be the sum of num_entry_point_offsets of all the
- slices in the request.
- ``V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (struct)``
- Specifies the HEVC scaling matrix parameters used for the scaling process
- for transform coefficients.
- These matrix and parameters are defined according to :ref:`hevc`.
- They are described in section 7.4.5 "Scaling list data semantics" of
- the specification.
- .. c:type:: v4l2_ctrl_hevc_scaling_matrix
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{5.4cm}|p{6.8cm}|p{5.1cm}|
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_hevc_scaling_matrix
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``scaling_list_4x4[6][16]``
- - Scaling list is used for the scaling process for transform
- coefficients. The values on each scaling list are expected
- in raster scan order.
- * - __u8
- - ``scaling_list_8x8[6][64]``
- - Scaling list is used for the scaling process for transform
- coefficients. The values on each scaling list are expected
- in raster scan order.
- * - __u8
- - ``scaling_list_16x16[6][64]``
- - Scaling list is used for the scaling process for transform
- coefficients. The values on each scaling list are expected
- in raster scan order.
- * - __u8
- - ``scaling_list_32x32[2][64]``
- - Scaling list is used for the scaling process for transform
- coefficients. The values on each scaling list are expected
- in raster scan order.
- * - __u8
- - ``scaling_list_dc_coef_16x16[6]``
- - Scaling list is used for the scaling process for transform
- coefficients. The values on each scaling list are expected
- in raster scan order.
- * - __u8
- - ``scaling_list_dc_coef_32x32[2]``
- - Scaling list is used for the scaling process for transform
- coefficients. The values on each scaling list are expected
- in raster scan order.
- .. raw:: latex
- \normalsize
- .. c:type:: v4l2_hevc_dpb_entry
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{12.1cm}|
- .. flat-table:: struct v4l2_hevc_dpb_entry
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u64
- - ``timestamp``
- - Timestamp of the V4L2 capture buffer to use as reference, used
- with B-coded and P-coded frames. The timestamp refers to the
- ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
- :c:func:`v4l2_timeval_to_ns()` function to convert the struct
- :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
- * - __u8
- - ``flags``
- - Long term flag for the reference frame
- (V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE). The flag is set as
- described in the ITU HEVC specification chapter "8.3.2 Decoding
- process for reference picture set".
- * - __u8
- - ``field_pic``
- - Whether the reference is a field picture or a frame.
- See :ref:`HEVC dpb field pic Flags <hevc_dpb_field_pic_flags>`
- * - __s32
- - ``pic_order_cnt_val``
- - The picture order count of the current picture.
- * - __u8
- - ``padding[2]``
- - Applications and drivers must set this to zero.
- .. raw:: latex
- \normalsize
- .. _hevc_dpb_field_pic_flags:
- ``HEVC dpb field pic Flags``
- .. raw:: latex
- \scriptsize
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_FRAME``
- - 0
- - (progressive) Frame
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD``
- - 1
- - Top field
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD``
- - 2
- - Bottom field
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM``
- - 3
- - Top field, bottom field, in that order
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP``
- - 4
- - Bottom field, top field, in that order
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP``
- - 5
- - Top field, bottom field, top field repeated, in that order
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM``
- - 6
- - Bottom field, top field, bottom field repeated, in that order
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING``
- - 7
- - Frame doubling
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING``
- - 8
- - Frame tripling
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM``
- - 9
- - Top field paired with previous bottom field in output order
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP``
- - 10
- - Bottom field paired with previous top field in output order
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM``
- - 11
- - Top field paired with next bottom field in output order
- * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP``
- - 12
- - Bottom field paired with next top field in output order
- .. c:type:: v4l2_hevc_pred_weight_table
- .. raw:: latex
- \footnotesize
- .. tabularcolumns:: |p{0.8cm}|p{10.6cm}|p{5.9cm}|
- .. flat-table:: struct v4l2_hevc_pred_weight_table
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __s8
- - ``delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - The difference of the weighting factor applied to the luma
- prediction value for list 0.
- * - __s8
- - ``luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - The additive offset applied to the luma prediction value for list 0.
- * - __s8
- - ``delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]``
- - The difference of the weighting factor applied to the chroma
- prediction value for list 0.
- * - __s8
- - ``chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]``
- - The difference of the additive offset applied to the chroma
- prediction values for list 0.
- * - __s8
- - ``delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - The difference of the weighting factor applied to the luma
- prediction value for list 1.
- * - __s8
- - ``luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - The additive offset applied to the luma prediction value for list 1.
- * - __s8
- - ``delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]``
- - The difference of the weighting factor applied to the chroma
- prediction value for list 1.
- * - __s8
- - ``chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]``
- - The difference of the additive offset applied to the chroma
- prediction values for list 1.
- * - __u8
- - ``luma_log2_weight_denom``
- - The base 2 logarithm of the denominator for all luma weighting
- factors.
- * - __s8
- - ``delta_chroma_log2_weight_denom``
- - The difference of the base 2 logarithm of the denominator for
- all chroma weighting factors.
- * - __u8
- - ``padding[6]``
- - Applications and drivers must set this to zero.
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_HEVC_DECODE_MODE (enum)``
- Specifies the decoding mode to use. Currently exposes slice-based and
- frame-based decoding but new modes might be added later on.
- This control is used as a modifier for V4L2_PIX_FMT_HEVC_SLICE
- pixel format. Applications that support V4L2_PIX_FMT_HEVC_SLICE
- are required to set this control in order to specify the decoding mode
- that is expected for the buffer.
- Drivers may expose a single or multiple decoding modes, depending
- on what they can support.
- .. c:type:: v4l2_stateless_hevc_decode_mode
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{9.4cm}|p{0.6cm}|p{7.3cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED``
- - 0
- - Decoding is done at the slice granularity.
- The OUTPUT buffer must contain a single slice.
- * - ``V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED``
- - 1
- - Decoding is done at the frame granularity.
- The OUTPUT buffer must contain all slices needed to decode the
- frame.
- .. raw:: latex
- \normalsize
- ``V4L2_CID_STATELESS_HEVC_START_CODE (enum)``
- Specifies the HEVC slice start code expected for each slice.
- This control is used as a modifier for V4L2_PIX_FMT_HEVC_SLICE
- pixel format. Applications that support V4L2_PIX_FMT_HEVC_SLICE
- are required to set this control in order to specify the start code
- that is expected for the buffer.
- Drivers may expose a single or multiple start codes, depending
- on what they can support.
- .. c:type:: v4l2_stateless_hevc_start_code
- .. tabularcolumns:: |p{9.2cm}|p{0.6cm}|p{7.5cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_STATELESS_HEVC_START_CODE_NONE``
- - 0
- - Selecting this value specifies that HEVC slices are passed
- to the driver without any start code. The bitstream data should be
- according to :ref:`hevc` 7.3.1.1 General NAL unit syntax, hence
- contains emulation prevention bytes when required.
- * - ``V4L2_STATELESS_HEVC_START_CODE_ANNEX_B``
- - 1
- - Selecting this value specifies that HEVC slices are expected
- to be prefixed by Annex B start codes. According to :ref:`hevc`
- valid start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001.
- .. raw:: latex
- \normalsize
- ``V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID (integer)``
- Specifies a priority identifier for the NAL unit, which will be applied to
- the base layer. By default this value is set to 0 for the base layer,
- and the next layer will have the priority ID assigned as 1, 2, 3 and so on.
- The video encoder can't decide the priority id to be applied to a layer,
- so this has to come from client.
- This is applicable to H264 and valid Range is from 0 to 63.
- Source Rec. ITU-T H.264 (06/2019); G.7.4.1.1, G.8.8.1.
- ``V4L2_CID_MPEG_VIDEO_LTR_COUNT (integer)``
- Specifies the maximum number of Long Term Reference (LTR) frames at any
- given time that the encoder can keep.
- This is applicable to the H264 and HEVC encoders.
- ``V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (integer)``
- After setting this control the frame that will be queued next
- will be marked as a Long Term Reference (LTR) frame
- and given this LTR index which ranges from 0 to LTR_COUNT-1.
- This is applicable to the H264 and HEVC encoders.
- Source Rec. ITU-T H.264 (06/2019); Table 7.9
- ``V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (bitmask)``
- Specifies the Long Term Reference (LTR) frame(s) to be used for
- encoding the next frame queued after setting this control.
- This provides a bitmask which consists of bits [0, LTR_COUNT-1].
- This is applicable to the H264 and HEVC encoders.
- ``V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (struct)``
- Specifies various decode parameters, especially the references picture order
- count (POC) for all the lists (short, long, before, current, after) and the
- number of entries for each of them.
- These parameters are defined according to :ref:`hevc`.
- They are described in section 8.3 "Slice decoding process" of the
- specification.
- .. c:type:: v4l2_ctrl_hevc_decode_params
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_hevc_decode_params
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __s32
- - ``pic_order_cnt_val``
- - PicOrderCntVal as described in section 8.3.1 "Decoding process
- for picture order count" of the specification.
- * - __u16
- - ``short_term_ref_pic_set_size``
- - Specifies the size, in bits, of the short-term reference picture set, of the first slice
- described as st_ref_pic_set() in the specification, included in the slice header
- or SPS (section 7.3.6.1).
- * - __u16
- - ``long_term_ref_pic_set_size``
- - Specifies the size, in bits, of the long-term reference picture set, of the first slice
- included in the slice header or SPS. It is the number of bits in the conditional block
- if(long_term_ref_pics_present_flag) in section 7.3.6.1 of the specification.
- * - __u8
- - ``num_active_dpb_entries``
- - The number of entries in ``dpb``.
- * - __u8
- - ``num_poc_st_curr_before``
- - The number of reference pictures in the short-term set that come before
- the current frame.
- * - __u8
- - ``num_poc_st_curr_after``
- - The number of reference pictures in the short-term set that come after
- the current frame.
- * - __u8
- - ``num_poc_lt_curr``
- - The number of reference pictures in the long-term set.
- * - __u8
- - ``poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - PocStCurrBefore as described in section 8.3.2 "Decoding process for reference
- picture set": provides the index of the short term before references in DPB array.
- * - __u8
- - ``poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - PocStCurrAfter as described in section 8.3.2 "Decoding process for reference
- picture set": provides the index of the short term after references in DPB array.
- * - __u8
- - ``poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - PocLtCurr as described in section 8.3.2 "Decoding process for reference
- picture set": provides the index of the long term references in DPB array.
- * - __u8
- - ``num_delta_pocs_of_ref_rps_idx``
- - When the short_term_ref_pic_set_sps_flag in the slice header is equal to 0,
- it is the same as the derived value NumDeltaPocs[RefRpsIdx]. It can be used to parse
- the RPS data in slice headers instead of skipping it with @short_term_ref_pic_set_size.
- When the value of short_term_ref_pic_set_sps_flag in the slice header is
- equal to 1, num_delta_pocs_of_ref_rps_idx shall be set to 0.
- * - struct :c:type:`v4l2_hevc_dpb_entry`
- - ``dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- - The decoded picture buffer, for meta-data about reference frames.
- * - __u64
- - ``flags``
- - See :ref:`Decode Parameters Flags <hevc_decode_params_flags>`
- .. _hevc_decode_params_flags:
- ``Decode Parameters Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC``
- - 0x00000001
- -
- * - ``V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC``
- - 0x00000002
- -
- * - ``V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR``
- - 0x00000004
- -
- ``V4L2_CID_STATELESS_HEVC_EXT_SPS_LT_RPS (struct)``
- Subset of the :c:type:`v4l2_ctrl_hevc_sps` control.
- It extends it with the list of Long-term reference sets parameters.
- These parameters are defined according to :ref:`hevc`.
- They are described in section 7.4.3.2.1 "General sequence parameter set
- RBSP semantics" of the specification.
- This control is a dynamically sized 1-dimensional array.
- The values in the array should be ignored when either
- num_long_term_ref_pics_sps is 0 or the
- V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT flag is not set in
- :c:type:`v4l2_ctrl_hevc_sps`.
- .. c:type:: v4l2_ctrl_hevc_ext_sps_lt_rps
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_hevc_ext_sps_lt_rps
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u16
- - ``lt_ref_pic_poc_lsb_sps``
- - Long term reference picture order count as described in section 7.4.3.2.1
- "General sequence parameter set RBSP semantics" of the specification.
- * - __u16
- - ``flags``
- - See :ref:`Extended Long-Term RPS Flags <hevc_ext_sps_lt_rps_flags>`
- .. _hevc_ext_sps_lt_rps_flags:
- ``Extended SPS Long-Term RPS Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_HEVC_EXT_SPS_LT_RPS_FLAG_USED_LT``
- - 0x00000001
- - Specifies if the long-term reference picture is used 7.4.3.2.1 "General sequence parameter
- set RBSP semantics" of the specification.
- ``V4L2_CID_STATELESS_HEVC_EXT_SPS_ST_RPS (struct)``
- Subset of the :c:type:`v4l2_ctrl_hevc_sps` control.
- It extends it with the list of Short-term reference sets parameters.
- These parameters are defined according to :ref:`hevc`.
- They are described in section 7.4.8 "Short-term reference picture set
- semantics" of the specification.
- This control is a dynamically sized 1-dimensional array.
- The values in the array should be ignored when
- num_short_term_ref_pic_sets is 0.
- .. c:type:: v4l2_ctrl_hevc_ext_sps_st_rps
- .. cssclass:: longtable
- .. flat-table:: struct v4l2_ctrl_hevc_ext_sps_st_rps
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``delta_idx_minus1``
- - Specifies the delta compare to the index. See details in section 7.4.8 "Short-term
- reference picture set semantics" of the specification.
- * - __u8
- - ``delta_rps_sign``
- - Sign of the delta as specified in section 7.4.8 "Short-term reference picture set
- semantics" of the specification.
- * - __u8
- - ``num_negative_pics``
- - Number of short-term RPS entries that have picture order count values less than the
- picture order count value of the current picture.
- * - __u8
- - ``num_positive_pics``
- - Number of short-term RPS entries that have picture order count values greater than the
- picture order count value of the current picture.
- * - __u32
- - ``used_by_curr_pic``
- - Bit i specifies if short-term RPS i is used by the current picture.
- * - __u32
- - ``use_delta_flag``
- - Bit i specifies if short-term RPS i is included in the short-term RPS entries.
- * - __u16
- - ``abs_delta_rps_minus1``
- - Absolute delta RPS as specified in section 7.4.8 "Short-term reference picture set
- semantics" of the specification.
- * - __u16
- - ``delta_poc_s0_minus1[16]``
- - Specifies the negative picture order count delta for the i-th entry in the short-term RPS.
- See details in section 7.4.8 "Short-term reference picture set semantics" of the
- specification.
- * - __u16
- - ``delta_poc_s1_minus1[16]``
- - Specifies the positive picture order count delta for the i-th entry in the short-term RPS.
- See details in section 7.4.8 "Short-term reference picture set semantics" of the
- specification.
- * - __u16
- - ``flags``
- - See :ref:`Extended Short-Term RPS Flags <hevc_ext_sps_st_rps_flags>`
- .. _hevc_ext_sps_st_rps_flags:
- ``Extended SPS Short-Term RPS Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_HEVC_EXT_SPS_ST_RPS_FLAG_INTER_REF_PIC_SET_PRED``
- - 0x00000001
- - Specifies if the short-term RPS is predicted from another short term RPS. See details in
- section 7.4.8 "Short-term reference picture set semantics" of the specification.
- .. _v4l2-codec-stateless-av1:
- ``V4L2_CID_STATELESS_AV1_SEQUENCE (struct)``
- Represents an AV1 Sequence OBU (Open Bitstream Unit). See section 5.5
- "Sequence header OBU syntax" in :ref:`av1` for more details.
- .. c:type:: v4l2_ctrl_av1_sequence
- .. cssclass:: longtable
- .. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}|
- .. flat-table:: struct v4l2_ctrl_av1_sequence
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u32
- - ``flags``
- - See :ref:`AV1 Sequence Flags <av1_sequence_flags>`.
- * - __u8
- - ``seq_profile``
- - Specifies the features that can be used in the coded video sequence.
- * - __u8
- - ``order_hint_bits``
- - Specifies the number of bits used for the order_hint field at each frame.
- * - __u8
- - ``bit_depth``
- - the bit depth to use for the sequence as described in section 5.5.2
- "Color config syntax" in :ref:`av1` for more details.
- * - __u8
- - ``reserved``
- - Applications and drivers must set this to zero.
- * - __u16
- - ``max_frame_width_minus_1``
- - Specifies the maximum frame width minus 1 for the frames represented by
- this sequence header.
- * - __u16
- - ``max_frame_height_minus_1``
- - Specifies the maximum frame height minus 1 for the frames represented by
- this sequence header.
- .. _av1_sequence_flags:
- ``AV1 Sequence Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_SEQUENCE_FLAG_STILL_PICTURE``
- - 0x00000001
- - If set, specifies that the coded video sequence contains only one coded
- frame. If not set, specifies that the coded video sequence contains one
- or more coded frames.
- * - ``V4L2_AV1_SEQUENCE_FLAG_USE_128X128_SUPERBLOCK``
- - 0x00000002
- - If set, indicates that superblocks contain 128x128 luma samples.
- When equal to 0, it indicates that superblocks contain 64x64 luma
- samples. The number of contained chroma samples depends on
- subsampling_x and subsampling_y.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_FILTER_INTRA``
- - 0x00000004
- - If set, specifies that the use_filter_intra syntax element may be
- present. If not set, specifies that the use_filter_intra syntax element
- will not be present.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTRA_EDGE_FILTER``
- - 0x00000008
- - Specifies whether the intra edge filtering process should be enabled.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTERINTRA_COMPOUND``
- - 0x00000010
- - If set, specifies that the mode info for inter blocks may contain the
- syntax element interintra. If not set, specifies that the syntax element
- interintra will not be present.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_MASKED_COMPOUND``
- - 0x00000020
- - If set, specifies that the mode info for inter blocks may contain the
- syntax element compound_type. If not set, specifies that the syntax
- element compound_type will not be present.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_WARPED_MOTION``
- - 0x00000040
- - If set, indicates that the allow_warped_motion syntax element may be
- present. If not set, indicates that the allow_warped_motion syntax
- element will not be present.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_DUAL_FILTER``
- - 0x00000080
- - If set, indicates that the inter prediction filter type may be specified
- independently in the horizontal and vertical directions. If the flag is
- equal to 0, only one filter type may be specified, which is then used in
- both directions.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_ORDER_HINT``
- - 0x00000100
- - If set, indicates that tools based on the values of order hints may be
- used. If not set, indicates that tools based on order hints are
- disabled.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_JNT_COMP``
- - 0x00000200
- - If set, indicates that the distance weights process may be used for
- inter prediction.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_REF_FRAME_MVS``
- - 0x00000400
- - If set, indicates that the use_ref_frame_mvs syntax element may be
- present. If not set, indicates that the use_ref_frame_mvs syntax element
- will not be present.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_SUPERRES``
- - 0x00000800
- - If set, specifies that the use_superres syntax element will be present
- in the uncompressed header. If not set, specifies that the use_superres
- syntax element will not be present (instead use_superres will be set to
- 0 in the uncompressed header without being read).
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_CDEF``
- - 0x00001000
- - If set, specifies that cdef filtering may be enabled. If not set,
- specifies that cdef filtering is disabled.
- * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_RESTORATION``
- - 0x00002000
- - If set, specifies that loop restoration filtering may be enabled. If not
- set, specifies that loop restoration filtering is disabled.
- * - ``V4L2_AV1_SEQUENCE_FLAG_MONO_CHROME``
- - 0x00004000
- - If set, indicates that the video does not contain U and V color planes.
- If not set, indicates that the video contains Y, U, and V color planes.
- * - ``V4L2_AV1_SEQUENCE_FLAG_COLOR_RANGE``
- - 0x00008000
- - If set, signals full swing representation, i.e. "Full Range
- Quantization". If not set, signals studio swing representation, i.e.
- "Limited Range Quantization".
- * - ``V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_X``
- - 0x00010000
- - Specify the chroma subsampling format.
- * - ``V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_Y``
- - 0x00020000
- - Specify the chroma subsampling format.
- * - ``V4L2_AV1_SEQUENCE_FLAG_FILM_GRAIN_PARAMS_PRESENT``
- - 0x00040000
- - Specifies whether film grain parameters are present in the coded video
- sequence.
- * - ``V4L2_AV1_SEQUENCE_FLAG_SEPARATE_UV_DELTA_Q``
- - 0x00080000
- - If set, indicates that the U and V planes may have separate delta
- quantizer values. If not set, indicates that the U and V planes will share
- the same delta quantizer value.
- ``V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY (struct)``
- Represents a single AV1 tile inside an AV1 Tile Group. Note that MiRowStart,
- MiRowEnd, MiColStart and MiColEnd can be retrieved from struct
- v4l2_av1_tile_info in struct v4l2_ctrl_av1_frame using tile_row and
- tile_col. See section 6.10.1 "General tile group OBU semantics" in
- :ref:`av1` for more details.
- .. c:type:: v4l2_ctrl_av1_tile_group_entry
- .. cssclass:: longtable
- .. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}|
- .. flat-table:: struct v4l2_ctrl_av1_tile_group_entry
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u32
- - ``tile_offset``
- - Offset from the OBU data, i.e. where the coded tile data actually starts.
- * - __u32
- - ``tile_size``
- - Specifies the size in bytes of the coded tile. Equivalent to "TileSize"
- in :ref:`av1`.
- * - __u32
- - ``tile_row``
- - Specifies the row of the current tile. Equivalent to "TileRow" in
- :ref:`av1`.
- * - __u32
- - ``tile_col``
- - Specifies the column of the current tile. Equivalent to "TileColumn" in
- :ref:`av1`.
- .. c:type:: v4l2_av1_warp_model
- AV1 Warp Model as described in section 3 "Symbols and abbreviated terms" of
- :ref:`av1`.
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_WARP_MODEL_IDENTITY``
- - 0
- - Warp model is just an identity transform.
- * - ``V4L2_AV1_WARP_MODEL_TRANSLATION``
- - 1
- - Warp model is a pure translation.
- * - ``V4L2_AV1_WARP_MODEL_ROTZOOM``
- - 2
- - Warp model is a rotation + symmetric zoom + translation.
- * - ``V4L2_AV1_WARP_MODEL_AFFINE``
- - 3
- - Warp model is a general affine transform.
- .. c:type:: v4l2_av1_reference_frame
- AV1 Reference Frames as described in section 6.10.24 "Ref frames semantics"
- of :ref:`av1`.
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_REF_INTRA_FRAME``
- - 0
- - Intra Frame Reference.
- * - ``V4L2_AV1_REF_LAST_FRAME``
- - 1
- - Last Frame Reference.
- * - ``V4L2_AV1_REF_LAST2_FRAME``
- - 2
- - Last2 Frame Reference.
- * - ``V4L2_AV1_REF_LAST3_FRAME``
- - 3
- - Last3 Frame Reference.
- * - ``V4L2_AV1_REF_GOLDEN_FRAME``
- - 4
- - Golden Frame Reference.
- * - ``V4L2_AV1_REF_BWDREF_FRAME``
- - 5
- - BWD Frame Reference.
- * - ``V4L2_AV1_REF_ALTREF2_FRAME``
- - 6
- - ALTREF2 Frame Reference.
- * - ``V4L2_AV1_REF_ALTREF_FRAME``
- - 7
- - ALTREF Frame Reference.
- .. c:type:: v4l2_av1_global_motion
- AV1 Global Motion parameters as described in section 6.8.17
- "Global motion params semantics" of :ref:`av1`.
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
- .. flat-table:: struct v4l2_av1_global_motion
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``flags[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
- - A bitfield containing the flags per reference frame. See
- :ref:`AV1 Global Motion Flags <av1_global_motion_flags>` for more
- details.
- * - enum :c:type:`v4l2_av1_warp_model`
- - ``type[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
- - The type of global motion transform used.
- * - __s32
- - ``params[V4L2_AV1_TOTAL_REFS_PER_FRAME][6]``
- - This field has the same meaning as "gm_params" in :ref:`av1`.
- * - __u8
- - ``invalid``
- - Bitfield indicating whether the global motion params are invalid for a
- given reference frame. See section 7.11.3.6 Setup shear process and the
- variable "warpValid". Use V4L2_AV1_GLOBAL_MOTION_IS_INVALID(ref) to
- create a suitable mask.
- * - __u8
- - ``reserved[3]``
- - Applications and drivers must set this to zero.
- .. _av1_global_motion_flags:
- ``AV1 Global Motion Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_GLOBAL_MOTION_FLAG_IS_GLOBAL``
- - 0x00000001
- - Specifies whether global motion parameters are present for a particular
- reference frame.
- * - ``V4L2_AV1_GLOBAL_MOTION_FLAG_IS_ROT_ZOOM``
- - 0x00000002
- - Specifies whether a particular reference frame uses rotation and zoom
- global motion.
- * - ``V4L2_AV1_GLOBAL_MOTION_FLAG_IS_TRANSLATION``
- - 0x00000004
- - Specifies whether a particular reference frame uses translation global
- motion
- .. c:type:: v4l2_av1_frame_restoration_type
- AV1 Frame Restoration Type.
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_FRAME_RESTORE_NONE``
- - 0
- - No filtering is applied.
- * - ``V4L2_AV1_FRAME_RESTORE_WIENER``
- - 1
- - Wiener filter process is invoked.
- * - ``V4L2_AV1_FRAME_RESTORE_SGRPROJ``
- - 2
- - Self guided filter process is invoked.
- * - ``V4L2_AV1_FRAME_RESTORE_SWITCHABLE``
- - 3
- - Restoration filter is swichtable.
- .. c:type:: v4l2_av1_loop_restoration
- AV1 Loop Restoration as described in section 6.10.15 "Loop restoration params
- semantics" of :ref:`av1`.
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
- .. flat-table:: struct v4l2_av1_loop_restoration
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``flags``
- - See :ref:`AV1 Loop Restoration Flags <av1_loop_restoration_flags>`.
- * - __u8
- - ``lr_unit_shift``
- - Specifies if the luma restoration size should be halved.
- * - __u8
- - ``lr_uv_shift``
- - Specifies if the chroma size should be half the luma size.
- * - __u8
- - ``reserved``
- - Applications and drivers must set this to zero.
- * - :c:type:`v4l2_av1_frame_restoration_type`
- - ``frame_restoration_type[V4L2_AV1_NUM_PLANES_MAX]``
- - Specifies the type of restoration used for each plane.
- * - __u8
- - ``loop_restoration_size[V4L2_AV1_MAX_NUM_PLANES]``
- - Specifies the size of loop restoration units in units of samples in the
- current plane.
- .. _av1_loop_restoration_flags:
- ``AV1 Loop Restoration Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_LOOP_RESTORATION_FLAG_USES_LR``
- - 0x00000001
- - Retains the same meaning as UsesLr in :ref:`av1`.
- * - ``V4L2_AV1_LOOP_RESTORATION_FLAG_USES_CHROMA_LR``
- - 0x00000002
- - Retains the same meaning as UsesChromaLr in :ref:`av1`.
- .. c:type:: v4l2_av1_cdef
- AV1 CDEF params semantics as described in section 6.10.14 "CDEF params
- semantics" of :ref:`av1`.
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
- .. flat-table:: struct v4l2_av1_cdef
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``damping_minus_3``
- - Controls the amount of damping in the deringing filter.
- * - __u8
- - ``bits``
- - Specifies the number of bits needed to specify which CDEF filter to
- apply.
- * - __u8
- - ``y_pri_strength[V4L2_AV1_CDEF_MAX]``
- - Specifies the strength of the primary filter.
- * - __u8
- - ``y_sec_strength[V4L2_AV1_CDEF_MAX]``
- - Specifies the strength of the secondary filter.
- * - __u8
- - ``uv_pri_strength[V4L2_AV1_CDEF_MAX]``
- - Specifies the strength of the primary filter.
- * - __u8
- - ``uv_sec_strength[V4L2_AV1_CDEF_MAX]``
- - Specifies the strength of the secondary filter.
- .. c:type:: v4l2_av1_segment_feature
- AV1 segment features as described in section 3 "Symbols and abbreviated terms"
- of :ref:`av1`.
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_SEG_LVL_ALT_Q``
- - 0
- - Index for quantizer segment feature.
- * - ``V4L2_AV1_SEG_LVL_ALT_LF_Y_V``
- - 1
- - Index for vertical luma loop filter segment feature.
- * - ``V4L2_AV1_SEG_LVL_REF_FRAME``
- - 5
- - Index for reference frame segment feature.
- * - ``V4L2_AV1_SEG_LVL_REF_SKIP``
- - 6
- - Index for skip segment feature.
- * - ``V4L2_AV1_SEG_LVL_REF_GLOBALMV``
- - 7
- - Index for global mv feature.
- * - ``V4L2_AV1_SEG_LVL_MAX``
- - 8
- - Number of segment features.
- .. c:type:: v4l2_av1_segmentation
- AV1 Segmentation params as defined in section 6.8.13 "Segmentation params
- semantics" of :ref:`av1`.
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
- .. flat-table:: struct v4l2_av1_segmentation
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``flags``
- - See :ref:`AV1 Segmentation Flags <av1_segmentation_flags>`
- * - __u8
- - ``last_active_seg_id``
- - Indicates the highest numbered segment id that has some
- enabled feature. This is used when decoding the segment id to only decode
- choices corresponding to used segments.
- * - __u8
- - ``feature_enabled[V4L2_AV1_MAX_SEGMENTS]``
- - Bitmask defining which features are enabled in each segment. Use
- V4L2_AV1_SEGMENT_FEATURE_ENABLED to build a suitable mask.
- * - __u16
- - ``feature_data[V4L2_AV1_MAX_SEGMENTS][V4L2_AV1_SEG_LVL_MAX]``
- - Data attached to each feature. Data entry is only valid if the feature
- is enabled.
- .. _av1_segmentation_flags:
- ``AV1 Segmentation Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_SEGMENTATION_FLAG_ENABLED``
- - 0x00000001
- - If set, indicates that this frame makes use of the segmentation tool. If
- not set, indicates that the frame does not use segmentation.
- * - ``V4L2_AV1_SEGMENTATION_FLAG_UPDATE_MAP``
- - 0x00000002
- - If set, indicates that the segmentation map are updated during the
- decoding of this frame. If not set, indicates that the segmentation map
- from the previous frame is used.
- * - ``V4L2_AV1_SEGMENTATION_FLAG_TEMPORAL_UPDATE``
- - 0x00000004
- - If set, indicates that the updates to the segmentation map are coded
- relative to the existing segmentation map. If not set, indicates that
- the new segmentation map is coded without reference to the existing
- segmentation map.
- * - ``V4L2_AV1_SEGMENTATION_FLAG_UPDATE_DATA``
- - 0x00000008
- - If set, indicates that the updates to the segmentation map are coded
- relative to the existing segmentation map. If not set, indicates that
- the new segmentation map is coded without reference to the existing
- segmentation map.
- * - ``V4L2_AV1_SEGMENTATION_FLAG_SEG_ID_PRE_SKIP``
- - 0x00000010
- - If set, indicates that the segment id will be read before the skip
- syntax element. If not set, indicates that the skip syntax element will
- be read first.
- .. c:type:: v4l2_av1_loop_filter
- AV1 Loop filter params as defined in section 6.8.10 "Loop filter semantics" of
- :ref:`av1`.
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
- .. flat-table:: struct v4l2_av1_loop_filter
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``flags``
- - See
- :ref:`AV1 Loop Filter flags <av1_loop_filter_flags>` for more details.
- * - __u8
- - ``level[4]``
- - An array containing loop filter strength values. Different loop
- filter strength values from the array are used depending on the image
- plane being filtered, and the edge direction (vertical or horizontal)
- being filtered.
- * - __u8
- - ``sharpness``
- - indicates the sharpness level. The loop_filter_level and
- loop_filter_sharpness together determine when a block edge is filtered,
- and by how much the filtering can change the sample values. The loop
- filter process is described in section 7.14 of :ref:`av1`.
- * - __u8
- - ``ref_deltas[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
- - contains the adjustment needed for the filter level based on the
- chosen reference frame. If this syntax element is not present, it
- maintains its previous value.
- * - __u8
- - ``mode_deltas[2]``
- - contains the adjustment needed for the filter level based on
- the chosen mode. If this syntax element is not present, it maintains its
- previous value.
- * - __u8
- - ``delta_lf_res``
- - specifies the left shift which should be applied to decoded loop filter
- delta values.
- .. _av1_loop_filter_flags:
- ``AV1 Loop Filter Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_ENABLED``
- - 0x00000001
- - If set, means that the filter level depends on the mode and reference
- frame used to predict a block. If not set, means that the filter level
- does not depend on the mode and reference frame.
- * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_UPDATE``
- - 0x00000002
- - If set, means that additional syntax elements are present that specify
- which mode and reference frame deltas are to be updated. If not set,
- means that these syntax elements are not present.
- * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_PRESENT``
- - 0x00000004
- - Specifies whether loop filter delta values are present
- * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_MULTI``
- - 0x00000008
- - A value equal to 1 specifies that separate loop filter
- deltas are sent for horizontal luma edges, vertical luma edges,
- the U edges, and the V edges. A value of delta_lf_multi equal to 0
- specifies that the same loop filter delta is used for all edges.
- .. c:type:: v4l2_av1_quantization
- AV1 Quantization params as defined in section 6.8.11 "Quantization params
- semantics" of :ref:`av1`.
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
- .. flat-table:: struct v4l2_av1_quantization
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``flags``
- - See
- :ref:`AV1 Loop Filter flags <av1_quantization_flags>` for more details.
- * - __u8
- - ``base_q_idx``
- - Indicates the base frame qindex. This is used for Y AC coefficients and
- as the base value for the other quantizers.
- * - __u8
- - ``delta_q_y_dc``
- - Indicates the Y DC quantizer relative to base_q_idx.
- * - __u8
- - ``delta_q_u_dc``
- - Indicates the U DC quantizer relative to base_q_idx.
- * - __u8
- - ``delta_q_u_ac``
- - Indicates the U AC quantizer relative to base_q_idx.
- * - __u8
- - ``delta_q_v_dc``
- - Indicates the V DC quantizer relative to base_q_idx.
- * - __u8
- - ``delta_q_v_ac``
- - Indicates the V AC quantizer relative to base_q_idx.
- * - __u8
- - ``qm_y``
- - Specifies the level in the quantizer matrix that should be used for
- luma plane decoding.
- * - __u8
- - ``qm_u``
- - Specifies the level in the quantizer matrix that should be used for
- chroma U plane decoding.
- * - __u8
- - ``qm_v``
- - Specifies the level in the quantizer matrix that should be used for
- chroma V plane decoding.
- * - __u8
- - ``delta_q_res``
- - Specifies the left shift which should be applied to decoded quantizer
- index delta values.
- .. _av1_quantization_flags:
- ``AV1 Quantization Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_QUANTIZATION_FLAG_DIFF_UV_DELTA``
- - 0x00000001
- - If set, indicates that the U and V delta quantizer values are coded
- separately. If not set, indicates that the U and V delta quantizer
- values share a common value.
- * - ``V4L2_AV1_QUANTIZATION_FLAG_USING_QMATRIX``
- - 0x00000002
- - If set, specifies that the quantizer matrix will be used to compute
- quantizers.
- * - ``V4L2_AV1_QUANTIZATION_FLAG_DELTA_Q_PRESENT``
- - 0x00000004
- - Specifies whether quantizer index delta values are present.
- .. c:type:: v4l2_av1_tile_info
- AV1 Tile info as defined in section 6.8.14 "Tile info semantics" of ref:`av1`.
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
- .. flat-table:: struct v4l2_av1_tile_info
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``flags``
- - See
- :ref:`AV1 Tile Info flags <av1_tile_info_flags>` for more details.
- * - __u8
- - ``context_update_tile_id``
- - Specifies which tile to use for the CDF update.
- * - __u8
- - ``tile_cols``
- - Specifies the number of tiles across the frame.
- * - __u8
- - ``tile_rows``
- - Specifies the number of tiles down the frame.
- * - __u32
- - ``mi_col_starts[V4L2_AV1_MAX_TILE_COLS + 1]``
- - An array specifying the start column (in units of 4x4 luma
- samples) for each tile across the image.
- * - __u32
- - ``mi_row_starts[V4L2_AV1_MAX_TILE_ROWS + 1]``
- - An array specifying the start row (in units of 4x4 luma
- samples) for each tile across the image.
- * - __u32
- - ``width_in_sbs_minus_1[V4L2_AV1_MAX_TILE_COLS]``
- - Specifies the width of a tile minus 1 in units of superblocks.
- * - __u32
- - ``height_in_sbs_minus_1[V4L2_AV1_MAX_TILE_ROWS]``
- - Specifies the height of a tile minus 1 in units of superblocks.
- * - __u8
- - ``tile_size_bytes``
- - Specifies the number of bytes needed to code each tile size.
- * - __u8
- - ``reserved[3]``
- - Applications and drivers must set this to zero.
- .. _av1_tile_info_flags:
- ``AV1 Tile Info Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_TILE_INFO_FLAG_UNIFORM_TILE_SPACING``
- - 0x00000001
- - If set, means that the tiles are uniformly spaced across the frame. (In
- other words, all tiles are the same size except for the ones at the
- right and bottom edge which can be smaller). If not set means that the
- tile sizes are coded.
- .. c:type:: v4l2_av1_frame_type
- AV1 Frame Type
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_KEY_FRAME``
- - 0
- - Key frame.
- * - ``V4L2_AV1_INTER_FRAME``
- - 1
- - Inter frame.
- * - ``V4L2_AV1_INTRA_ONLY_FRAME``
- - 2
- - Intra-only frame.
- * - ``V4L2_AV1_SWITCH_FRAME``
- - 3
- - Switch frame.
- .. c:type:: v4l2_av1_interpolation_filter
- AV1 Interpolation Filter
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP``
- - 0
- - Eight tap filter.
- * - ``V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH``
- - 1
- - Eight tap smooth filter.
- * - ``V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP``
- - 2
- - Eight tap sharp filter.
- * - ``V4L2_AV1_INTERPOLATION_FILTER_BILINEAR``
- - 3
- - Bilinear filter.
- * - ``V4L2_AV1_INTERPOLATION_FILTER_SWITCHABLE``
- - 4
- - Filter selection is signaled at the block level.
- .. c:type:: v4l2_av1_tx_mode
- AV1 Tx mode as described in section 6.8.21 "TX mode semantics" of :ref:`av1`.
- .. raw:: latex
- \scriptsize
- .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_TX_MODE_ONLY_4X4``
- - 0
- - The inverse transform will use only 4x4 transforms.
- * - ``V4L2_AV1_TX_MODE_LARGEST``
- - 1
- - The inverse transform will use the largest transform size that fits
- inside the block.
- * - ``V4L2_AV1_TX_MODE_SELECT``
- - 2
- - The choice of transform size is specified explicitly for each block.
- ``V4L2_CID_STATELESS_AV1_FRAME (struct)``
- Represents a Frame Header OBU. See 6.8 "Frame Header OBU semantics" of
- :ref:`av1` for more details.
- .. c:type:: v4l2_ctrl_av1_frame
- .. cssclass:: longtable
- .. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}|
- .. flat-table:: struct v4l2_ctrl_av1_frame
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - struct :c:type:`v4l2_av1_tile_info`
- - ``tile_info``
- - Tile info
- * - struct :c:type:`v4l2_av1_quantization`
- - ``quantization``
- - Quantization parameters.
- * - __u8
- - ``superres_denom``
- - The denominator for the upscaling ratio.
- * - struct :c:type:`v4l2_av1_segmentation`
- - ``segmentation``
- - Segmentation parameters.
- * - struct :c:type:`v4l2_av1_loop_filter`
- - ``loop_filter``
- - Loop filter params
- * - struct :c:type:`v4l2_av1_cdef`
- - ``cdef``
- - CDEF params
- * - __u8
- - ``skip_mode_frame[2]``
- - Specifies the frames to use for compound prediction when skip_mode is
- equal to 1.
- * - __u8
- - ``primary_ref_frame``
- - Specifies which reference frame contains the CDF values and other state
- that should be loaded at the start of the frame.
- * - struct :c:type:`v4l2_av1_loop_restoration`
- - ``loop_restoration``
- - Loop restoration parameters.
- * - struct :c:type:`v4l2_av1_global_motion`
- - ``global_motion``
- - Global motion parameters.
- * - __u32
- - ``flags``
- - See
- :ref:`AV1 Frame flags <av1_frame_flags>` for more details.
- * - enum :c:type:`v4l2_av1_frame_type`
- - ``frame_type``
- - Specifies the AV1 frame type
- * - __u32
- - ``order_hint``
- - Specifies OrderHintBits least significant bits of the expected output
- order for this frame.
- * - __u32
- - ``upscaled_width``
- - The upscaled width.
- * - enum :c:type:`v4l2_av1_interpolation_filter`
- - ``interpolation_filter``
- - Specifies the filter selection used for performing inter prediction.
- * - enum :c:type:`v4l2_av1_tx_mode`
- - ``tx_mode``
- - Specifies how the transform size is determined.
- * - __u32
- - ``frame_width_minus_1``
- - Add 1 to get the frame's width.
- * - __u32
- - ``frame_height_minus_1``
- - Add 1 to get the frame's height.
- * - __u16
- - ``render_width_minus_1``
- - Add 1 to get the render width of the frame in luma samples.
- * - __u16
- - ``render_height_minus_1``
- - Add 1 to get the render height of the frame in luma samples.
- * - __u32
- - ``current_frame_id``
- - Specifies the frame id number for the current frame. Frame
- id numbers are additional information that do not affect the decoding
- process, but provide decoders with a way of detecting missing reference
- frames so that appropriate action can be taken.
- * - __u8
- - ``buffer_removal_time[V4L2_AV1_MAX_OPERATING_POINTS]``
- - Specifies the frame removal time in units of DecCT clock ticks counted
- from the removal time of the last random access point for operating point
- opNum.
- * - __u8
- - ``reserved[4]``
- - Applications and drivers must set this to zero.
- * - __u32
- - ``order_hints[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
- - Specifies the expected output order hint for each reference frame.
- This field corresponds to the OrderHints variable from the specification
- (section 5.9.2 "Uncompressed header syntax"). As such, this is only
- used for non-intra frames and ignored otherwise. order_hints[0] is
- always ignored.
- * - __u64
- - ``reference_frame_ts[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
- - The V4L2 timestamp for each of the reference frames enumerated in
- enum :c:type:`v4l2_av1_reference_frame` starting at
- ``V4L2_AV1_REF_LAST_FRAME``. This represents the state of reference
- slot as described in the spec and updated by userland through the
- "Reference frame update process" in section 7.20 The timestamp refers
- to the ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
- :c:func:`v4l2_timeval_to_ns()` function to convert the struct
- :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
- * - __s8
- - ``ref_frame_idx[V4L2_AV1_REFS_PER_FRAME]``
- - An index into ``reference_frame_ts`` representing the ordered list of
- references used by inter-frame. Matches the bitstream syntax
- element of the same name.
- * - __u8
- - ``refresh_frame_flags``
- - Contains a bitmask that specifies which reference frame slots will be
- updated with the current frame after it is decoded.
- .. _av1_frame_flags:
- ``AV1 Frame Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_FRAME_FLAG_SHOW_FRAME``
- - 0x00000001
- - If set, specifies that this frame should be immediately output once
- decoded. If not set, specifies that this frame should not be immediately
- output; it may be output later if a later uncompressed header uses
- show_existing_frame equal to 1.
- * - ``V4L2_AV1_FRAME_FLAG_SHOWABLE_FRAME``
- - 0x00000002
- - If set, specifies that the frame may be output using the
- show_existing_frame mechanism. If not set, specifies that this frame
- will not be output using the show_existing_frame mechanism.
- * - ``V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE``
- - 0x00000004
- - Specifies whether error resilient mode is enabled.
- * - ``V4L2_AV1_FRAME_FLAG_DISABLE_CDF_UPDATE``
- - 0x00000008
- - Specifies whether the CDF update in the symbol decoding process should
- be disabled.
- * - ``V4L2_AV1_FRAME_FLAG_ALLOW_SCREEN_CONTENT_TOOLS``
- - 0x00000010
- - If set, indicates that intra blocks may use palette encoding. If not
- set, indicates that palette encoding is never used.
- * - ``V4L2_AV1_FRAME_FLAG_FORCE_INTEGER_MV``
- - 0x00000020
- - If set, specifies that motion vectors will always be integers. If not
- set, specifies that motion vectors can contain fractional bits.
- * - ``V4L2_AV1_FRAME_FLAG_ALLOW_INTRABC``
- - 0x00000040
- - If set, indicates that intra block copy may be used in this frame. If
- not set, indicates that intra block copy is not allowed in this frame.
- * - ``V4L2_AV1_FRAME_FLAG_USE_SUPERRES``
- - 0x00000080
- - If set, indicates that upscaling is needed.
- * - ``V4L2_AV1_FRAME_FLAG_ALLOW_HIGH_PRECISION_MV``
- - 0x00000100
- - If set, specifies that motion vectors are specified to eighth pel
- precision. If not set, specifies that motion vectors are specified to
- quarter pel precision;
- * - ``V4L2_AV1_FRAME_FLAG_IS_MOTION_MODE_SWITCHABLE``
- - 0x00000200
- - If not set, specifies that only the SIMPLE motion mode will be used.
- * - ``V4L2_AV1_FRAME_FLAG_USE_REF_FRAME_MVS``
- - 0x00000400
- - If set specifies that motion vector information from a previous frame
- can be used when decoding the current frame. If not set, specifies that
- this information will not be used.
- * - ``V4L2_AV1_FRAME_FLAG_DISABLE_FRAME_END_UPDATE_CDF``
- - 0x00000800
- - If set indicates that the end of frame CDF update is disabled. If not
- set, indicates that the end of frame CDF update is enabled
- * - ``V4L2_AV1_FRAME_FLAG_ALLOW_WARPED_MOTION``
- - 0x00001000
- - If set, indicates that the syntax element motion_mode may be present, if
- not set, indicates that the syntax element motion_mode will not be
- present.
- * - ``V4L2_AV1_FRAME_FLAG_REFERENCE_SELECT``
- - 0x00002000
- - If set, specifies that the mode info for inter blocks contains the
- syntax element comp_mode that indicates whether to use single or
- compound reference prediction. If not set, specifies that all inter
- blocks will use single prediction.
- * - ``V4L2_AV1_FRAME_FLAG_REDUCED_TX_SET``
- - 0x00004000
- - If set, specifies that the frame is restricted to a reduced subset of
- the full set of transform types.
- * - ``V4L2_AV1_FRAME_FLAG_SKIP_MODE_ALLOWED``
- - 0x00008000
- - This flag retains the same meaning as SkipModeAllowed in :ref:`av1`.
- * - ``V4L2_AV1_FRAME_FLAG_SKIP_MODE_PRESENT``
- - 0x00010000
- - If set, specifies that the syntax element skip_mode will be present, if
- not set, specifies that skip_mode will not be used for this frame.
- * - ``V4L2_AV1_FRAME_FLAG_FRAME_SIZE_OVERRIDE``
- - 0x00020000
- - If set, specifies that the frame size will either be specified as the
- size of one of the reference frames, or computed from the
- frame_width_minus_1 and frame_height_minus_1 syntax elements. If not
- set, specifies that the frame size is equal to the size in the sequence
- header.
- * - ``V4L2_AV1_FRAME_FLAG_BUFFER_REMOVAL_TIME_PRESENT``
- - 0x00040000
- - If set, specifies that buffer_removal_time is present. If not set,
- specifies that buffer_removal_time is not present.
- * - ``V4L2_AV1_FRAME_FLAG_FRAME_REFS_SHORT_SIGNALING``
- - 0x00080000
- - If set, indicates that only two reference frames are explicitly
- signaled. If not set, indicates that all reference frames are explicitly
- signaled.
- ``V4L2_CID_STATELESS_AV1_FILM_GRAIN (struct)``
- Represents the optional film grain parameters. See section
- 6.8.20 "Film grain params semantics" of :ref:`av1` for more details.
- .. c:type:: v4l2_ctrl_av1_film_grain
- .. cssclass:: longtable
- .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
- .. flat-table:: struct v4l2_ctrl_av1_film_grain
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - __u8
- - ``flags``
- - See :ref:`AV1 Film Grain Flags <av1_film_grain_flags>`.
- * - __u8
- - ``cr_mult``
- - Represents a multiplier for the cr component used in derivation of the
- input index to the cr component scaling function.
- * - __u16
- - ``grain_seed``
- - Specifies the starting value for the pseudo-random numbers used during
- film grain synthesis.
- * - __u8
- - ``film_grain_params_ref_idx``
- - Indicates which reference frame contains the film grain parameters to be
- used for this frame.
- * - __u8
- - ``num_y_points``
- - Specifies the number of points for the piece-wise linear scaling
- function of the luma component.
- * - __u8
- - ``point_y_value[V4L2_AV1_MAX_NUM_Y_POINTS]``
- - Represents the x (luma value) coordinate for the i-th point
- of the piecewise linear scaling function for luma component. The values
- are signaled on the scale of 0..255. In case of 10 bit video, these
- values correspond to luma values divided by 4. In case of 12 bit video,
- these values correspond to luma values divided by 16.
- * - __u8
- - ``point_y_scaling[V4L2_AV1_MAX_NUM_Y_POINTS]``
- - Represents the scaling (output) value for the i-th point
- of the piecewise linear scaling function for luma component.
- * - __u8
- - ``num_cb_points``
- - Specifies the number of points for the piece-wise linear scaling
- function of the cb component.
- * - __u8
- - ``point_cb_value[V4L2_AV1_MAX_NUM_CB_POINTS]``
- - Represents the x coordinate for the i-th point of the
- piece-wise linear scaling function for cb component. The values are
- signaled on the scale of 0..255.
- * - __u8
- - ``point_cb_scaling[V4L2_AV1_MAX_NUM_CB_POINTS]``
- - Represents the scaling (output) value for the i-th point of the
- piecewise linear scaling function for cb component.
- * - __u8
- - ``num_cr_points``
- - Represents the number of points for the piece-wise
- linear scaling function of the cr component.
- * - __u8
- - ``point_cr_value[V4L2_AV1_MAX_NUM_CR_POINTS]``
- - Represents the x coordinate for the i-th point of the
- piece-wise linear scaling function for cr component. The values are
- signaled on the scale of 0..255.
- * - __u8
- - ``point_cr_scaling[V4L2_AV1_MAX_NUM_CR_POINTS]``
- - Represents the scaling (output) value for the i-th point of the
- piecewise linear scaling function for cr component.
- * - __u8
- - ``grain_scaling_minus_8``
- - Represents the shift - 8 applied to the values of the chroma component.
- The grain_scaling_minus_8 can take values of 0..3 and determines the
- range and quantization step of the standard deviation of film grain.
- * - __u8
- - ``ar_coeff_lag``
- - Specifies the number of auto-regressive coefficients for luma and
- chroma.
- * - __u8
- - ``ar_coeffs_y_plus_128[V4L2_AV1_AR_COEFFS_SIZE]``
- - Specifies auto-regressive coefficients used for the Y plane.
- * - __u8
- - ``ar_coeffs_cb_plus_128[V4L2_AV1_AR_COEFFS_SIZE]``
- - Specifies auto-regressive coefficients used for the U plane.
- * - __u8
- - ``ar_coeffs_cr_plus_128[V4L2_AV1_AR_COEFFS_SIZE]``
- - Specifies auto-regressive coefficients used for the V plane.
- * - __u8
- - ``ar_coeff_shift_minus_6``
- - Specifies the range of the auto-regressive coefficients. Values of 0,
- 1, 2, and 3 correspond to the ranges for auto-regressive coefficients of
- [-2, 2), [-1, 1), [-0.5, 0.5) and [-0.25, 0.25) respectively.
- * - __u8
- - ``grain_scale_shift``
- - Specifies how much the Gaussian random numbers should be scaled down
- during the grain synthesis process.
- * - __u8
- - ``cb_mult``
- - Represents a multiplier for the cb component used in derivation of the
- input index to the cb component scaling function.
- * - __u8
- - ``cb_luma_mult``
- - Represents a multiplier for the average luma component used in
- derivation of the input index to the cb component scaling function..
- * - __u8
- - ``cr_luma_mult``
- - Represents a multiplier for the average luma component used in
- derivation of the input index to the cr component scaling function.
- * - __u16
- - ``cb_offset``
- - Represents an offset used in derivation of the input index to the
- cb component scaling function.
- * - __u16
- - ``cr_offset``
- - Represents an offset used in derivation of the input index to the
- cr component scaling function.
- * - __u8
- - ``reserved[4]``
- - Applications and drivers must set this to zero.
- .. _av1_film_grain_flags:
- ``AV1 Film Grain Flags``
- .. cssclass:: longtable
- .. flat-table::
- :header-rows: 0
- :stub-columns: 0
- :widths: 1 1 2
- * - ``V4L2_AV1_FILM_GRAIN_FLAG_APPLY_GRAIN``
- - 0x00000001
- - If set, specifies that film grain should be added to this frame. If not
- set, specifies that film grain should not be added.
- * - ``V4L2_AV1_FILM_GRAIN_FLAG_UPDATE_GRAIN``
- - 0x00000002
- - If set, means that a new set of parameters should be sent. If not set,
- specifies that the previous set of parameters should be used.
- * - ``V4L2_AV1_FILM_GRAIN_FLAG_CHROMA_SCALING_FROM_LUMA``
- - 0x00000004
- - If set, specifies that the chroma scaling is inferred from the luma
- scaling.
- * - ``V4L2_AV1_FILM_GRAIN_FLAG_OVERLAP``
- - 0x00000008
- - If set, indicates that the overlap between film grain blocks shall be
- applied. If not set, indicates that the overlap between film grain blocks
- shall not be applied.
- * - ``V4L2_AV1_FILM_GRAIN_FLAG_CLIP_TO_RESTRICTED_RANGE``
- - 0x00000010
- - If set, indicates that clipping to the restricted (studio, i.e. limited)
- range shall be applied to the sample values after adding the film grain
- (see the semantics for color_range for an explanation of studio swing).
- If not set, indicates that clipping to the full range shall be applied
- to the sample values after adding the film grain.
|