Flexibel beställning av makroblock

Flexibel Macroblock Ordering eller FMO är ett av flera felresiliensverktyg som definieras i Baseline-profilen för H.264/MPEG-4 AVC- videokomprimeringsstandarden .

Beskrivning

En av egenskaperna hos H.264/AVC-standarden är möjligheten att dela upp en bild i regioner som kallas skivor, som var och en innehåller en sekvens av makroblock och kan avkodas oberoende av andra skivor. Dessa makroblock bearbetas i en skanningsordning, normalt från vänster till höger, med början i toppen. En ram kan bestå av en enda skiva eller flera skivor för parallell bearbetning och felresiliens, eftersom fel i en skiva bara sprider sig inom den skivan.

Flexibel makroblocksordning förbättrar detta genom att tillåta att makroblock grupperas och skickas i valfri riktning och ordning, och kan användas för att skapa formade och icke sammanhängande segmentgrupper. På så sätt tillåter FMO att mer flexibelt bestämma vilka segmentmakroblock som hör till, för att sprida ut fel och förhindra att fel i en del av ramen äventyrar en annan del av ramen. FMO bygger på ett annat felresiliensverktyg, godtycklig skivordning , eftersom varje segmentgrupp kan skickas i valfri ordning och kan valfritt avkodas i mottagningsordning, istället för i den vanliga skanningsordningen.

Enskilda skivor måste fortfarande vara kontinuerliga horisontella regioner av makroblock, men med FMO:s skivgrupper kan rörelsekompensation ske inom alla sammanhängande makroblock genom hela gruppen; effektivt behandlas varje skivgrupp som en eller flera sammanhängande formade skivor i syfte att kompensera för rörelse.

Nästan alla videokodekar tillåter region av intressekodning , där specifika makroblock är inriktade på att få mer eller mindre kvalitet, det kanoniska exemplet är en nyhetsuppläsares huvud som ges ett högre bitförhållande än bakgrunden. FMO:s främsta fördel i kombination med RoI-kodning är förmågan att förhindra att fel i en region sprids till en annan region. Till exempel, om en bakgrundsdel går förlorad kan bakgrunden vara skadad under en tid men nyhetsuppläsarens ansikte kommer inte att påverkas, och det blir enklare att skicka regelbundna uppdateringar av den viktigaste delen för att kompensera för eventuella fel där.

Skivor som används med FMO är inte statiska och kan ändras när omständigheterna ändras, som att spåra ett rörligt föremål. En struktur som kallas MBAmap mappar varje makroblock till en segmentgrupp och kan uppdateras när som helst, med ett fåtal standardmönster definierade, såsom Slice Interleaving (grupper alternerar varje skanningslinje) eller Scattered Slices (grupper alternerar varje block). Med dessa mönster tillåter FMO en att behålla ett bättre lokaliserat visuellt sammanhang så att feldöljande algoritmer kan rekonstruera saknat innehåll.

Vissa avancerade kodningstekniker kan simulera några av FMO:s fördelar. I H.264/AVC kan P (predikterade) och B (bipredikterade) ramar innehålla I (intra) block, som lagrar oberoende bild. Istället för att skapa en skiva för att periodvis uppdatera helt med I- eller IDR-ramar, kan I-block skickas i vilket önskat mönster som helst medan predikterade block utgör resten av bilden. Även om fel fortfarande sprids horisontellt, kan I-block skickas i mönster, som att gynna ett område av intresse eller ett spritt schackbräde, för att simulera uppdateringar av formade skivor. Med dubbelriktad kommunikation till klienten kan förlorade skivor uppdateras så snart de upptäcks, men detta är inte möjligt för bredare sändningar.

Avvägningar

FMO är endast tillåtet inom profilerna Baseline och Extended. De mycket vanligare Constrained Baseline, Main och alla High-profilerna stöder inte det, och programvara som kan skapa eller avkoda den är sällsynt. Vissa videokonferensenheter använder det; annars är JM-referensprogramvaran det primära stödet.

Att använda flera segment per bild sänker alltid kodningseffektiviteten, och FMO kan påverka den ytterligare. Ju mer utspridda skivorna är, desto värre blir det, med rutmönster (se Spridda skivor nedan) som värst. Målen att sprida ut fel och kodningseffektivitet är direkt i konflikt. FMO tillåter interprediktion för omedelbart angränsande skivor i samma grupp, vilket effektivt gör att en sammanhängande region nästan fungerar som en enda skiva; i vissa situationer, där skivgrupper formas till en intresseregion, kan det faktiskt förbättra effektiviteten något jämfört med enkla standardskivor, men fördelen är sällsynt och liten. På grund av detta bör FMO endast användas där paketförluster är vanliga och förväntas.

Bortsett från ökad komplexitet i kodning och avkodning, och lägre effektivitet, skapar in-loop avblockering också ett problem: Slices kan skickas i vilken ordning som helst, men deblockeraren kräver alla . Antingen måste avblockeraren köras i flera omgångar när en annan skiva tas emot, eller så måste en hel bild buffras innan avblockeringen påbörjas, vilket möjligen skapar ytterligare latens om skivorna försenas tillräckligt länge så att nästa bilds skivor börjar komma in först.

Genomförande detaljer

När du använder FMO kan bilden delas upp i olika skanningsmönster av makroblocken, med flera inbyggda mönster definierade i specifikationen, signalerade som 0-5 i enheten slice_group_map_type , och ett alternativ för att inkludera en hel explicit tilldelad MBAmap, signalerad som 6. Karttypen och en ny MBAmap kan skickas när som helst.

  • Interfolierade segmentgrupper, typ 0: Varje rad är olika segment, omväxlande lika många gånger som segmentgrupper. Endast horisontella prediktionsvektorer är tillåtna.
  • Spridda eller spridda skivgrupper, typ 1: Varje makroblock är en annan skiva. Med två skivgrupper skapar den ett rutmönster; fyra eller fler grupper interfolierar också rader, och med sex segmentgrupper kommer inget makroblock någonsin att vidröra ett annat från samma segmentgrupp i någon riktning, vilket maximerar möjligheterna att dölja fel. Ingen vektorförutsägelse är möjlig.
  • Förgrundsgrupper, typ 2: Anger endast den övre vänstra och den nedre högra delen av statiska rektanglar för att skapa områden av intresse . Alla områden som inte omfattas tilldelas en sista grupp. Vektorförutsägelse är möjlig inom varje rektangel och i bakgrunden. Beteendet för överlappande rektanglar är odefinierat, men i referensmjukvaran används den sista segmentgruppen för att definiera den.
  • Byta grupper, typ 3-5: Liknar typ 2, men dynamiska typer som växer och krymper på ett cykliskt sätt. Endast tillväxthastigheten, riktningen och positionen i cykeln måste vara kända.
  • Explicita grupper, typ 6: En hel MBAmap sänds med grupper arrangerade på vilket sätt kodaren önskar. Vektorförutsägelse är möjlig inom alla angränsande regioner i samma grupp.

Tipos FMO.jpg

(I bilden ovan visar "Typ 0" standard H.264-skivor, inte interfolierade skivgrupper.)

  1. ^ Wenger, Stephan; Horowitz, Michael. "FMO: Flexibel Macroblock Ordering" .
  2. ^ "Felresiliens och döljande i H.264 MPEG-4 del 10" .
  3. ^ a b c Wenger, Stephan; Horowitz, Michael. "FMO 101" .
  4. ^ "H.264 Referensmjukvara" .
  5. ^ Wiegand, Thomas; Sullivan, Gary. "Utkast till ITU-T-rekommendation och slutligt utkast till internationell standard för gemensamma videospecifikationer (ITU-T Rec. H.264 / ISO/IEC 14496-10 AVC)" (PDF ) .