Përpara se të përdorni MediaPipe Framework, njihuni me konceptet e mëposhtme.
Bazat
Pako
Njësia bazë e rrjedhës së të dhënave. Një paketë përbëhet nga një vulë kohore numerike dhe një tregues i përbashkët drejt një ngarkese të pandryshueshme . Ngarkesa mund të jetë e çdo lloji C++, dhe lloji i ngarkesës referohet gjithashtu si lloji i paketës. Paketat janë klasa me vlerë dhe mund të kopjohen me çmim të ulët. Çdo kopje ndan pronësinë e ngarkesës, me semantikën e numërimit të referencës. Çdo kopje ka vulën e vet kohore. Shihni gjithashtu Paketën .
Grafiku
Përpunimi i MediaPipe zhvillohet brenda një grafiku, i cili përcakton shtigjet e rrjedhës së paketave midis nyjeve . Një grafik mund të ketë çdo numër hyrjesh dhe daljesh, dhe rrjedha e të dhënave mund të degëzohet dhe bashkohet. Në përgjithësi të dhënat rrjedhin përpara, por unazat prapa janë të mundshme. Shikoni Grafikët për detaje.
Nyjet
Nyjet prodhojnë dhe/ose konsumojnë pako, dhe ato janë vendi ku zhvillohet pjesa më e madhe e punës së grafikut. Ata njihen edhe si "llogaritës", për arsye historike. Ndërfaqja e çdo nyje përcakton një numër portash hyrëse dhe dalëse, të identifikuara nga një etiketë dhe/ose një indeks. Shikoni Llogaritësit për detaje.
Përrenjtë
Një rrjedhë është një lidhje midis dy nyjeve që mbart një sekuencë paketash, stampat kohore të të cilave duhet të rriten në mënyrë monotone.
Paketat anësore
Një lidhje e paketave anësore ndërmjet nyjeve mbart një paketë të vetme (me vulë kohore të paspecifikuar). Mund të përdoret për të siguruar disa të dhëna që do të mbeten konstante, ndërsa një rrjedhë përfaqëson një rrjedhë të dhënash që ndryshon me kalimin e kohës.
Portet e paketave
Një port ka një lloj të lidhur; paketat që kalojnë tranzit nëpër port duhet të jenë të atij lloji. Një port i rrjedhës së daljes mund të lidhet me çdo numër portash të rrjedhës hyrëse të të njëjtit lloj; çdo konsumator merr një kopje të veçantë të paketave dalëse dhe ka radhën e vet, kështu që mund t'i konsumojë ato me ritmin e vet. Në mënyrë të ngjashme, një portë dalëse e paketave anësore mund të lidhet me sa më shumë porte hyrëse të paketave anësore sipas dëshirës.
Mund të kërkohet një port, që do të thotë se duhet të bëhet një lidhje që grafiku të jetë i vlefshëm, ose opsional, që do të thotë se mund të mbetet i palidhur.
Input dhe output
Rrjedha e të dhënave mund të vijë nga nyjet burimore , të cilat nuk kanë rrjedha hyrëse dhe prodhojnë paketa në mënyrë spontane (p.sh. duke lexuar nga një skedar); ose nga prurjet e hyrjes në grafik , të cilat lejojnë një aplikacion të ushqejë paketat në një grafik.
Në mënyrë të ngjashme, ka nyje lavaman që marrin të dhëna dhe i shkruajnë ato në destinacione të ndryshme (p.sh. një skedar, një bufer memorie, etj.), dhe një aplikacion mund të marrë gjithashtu dalje nga grafiku duke përdorur kthimet e thirrjeve .
Sjellja gjatë ekzekutimit
Jetëgjatësia e grafikut
Pasi një grafik të jetë inicializuar, ai mund të fillojë të fillojë përpunimin e të dhënave dhe mund të përpunojë një rrjedhë paketash derisa çdo transmetim të mbyllet ose grafiku të anulohet . Pastaj grafiku mund të shkatërrohet ose të fillojë përsëri.
Jetëgjatësia e nyjës
Ekzistojnë tre metoda kryesore të jetës që korniza do të thërrasë në një nyje:
- Hap: thirret një herë, përpara metodave të tjera. Kur thirret, të gjitha paketat anësore hyrëse të kërkuara nga nyja do të jenë të disponueshme.
- Procesi: thirret disa herë, kur një grup i ri inputesh është i disponueshëm, sipas politikës së hyrjes së nyjës.
- Mbyll: thirret një herë, në fund.
Përveç kësaj, çdo kalkulator mund të përcaktojë konstruktorin dhe destruktorin, të cilët janë të dobishëm për krijimin dhe ndarjen e burimeve që janë të pavarura nga të dhënat e përpunuara.
Politikat e hyrjes
Politika e paracaktuar e hyrjes është renditja përcaktuese e paketave sipas vulës kohore. Një nyje merr të gjitha hyrjet për të njëjtën stampë kohore në të njëjtën kohë, në një thirrje të metodës së saj Process; dhe grupet e njëpasnjëshme të hyrjes merren sipas renditjes së tyre të vulës kohore. Kjo mund të kërkojë vonimin e përpunimit të disa paketave derisa të merret një paketë me të njëjtën vulë kohore në të gjitha transmetimet hyrëse, ose derisa të garantohet se një paketë me atë vulë kohore nuk do të arrijë në transmetimet që nuk e kanë marrë atë.
Ekzistojnë gjithashtu politika të tjera, të zbatuara duke përdorur një lloj komponenti të veçantë të njohur si InputStreamHandler.
Shikoni Sinkronizimi për më shumë detaje.
Transmetimet në kohë reale
Grafikët llogaritës MediaPipe përdoren shpesh për të përpunuar transmetimet e kornizave video ose audio për aplikacione interaktive. Normalisht, çdo Llogaritësi funksionon sapo të gjitha paketat e tij hyrëse për një vulë kohore të caktuar bëhen të disponueshme. Llogaritësit e përdorur në grafikët në kohë reale duhet të përcaktojnë kufijtë e vulës kohore të daljes bazuar në kufijtë e vulës kohore të hyrjes në mënyrë që të lejojnë që llogaritësit e rrjedhës së poshtme të planifikohen menjëherë. Shikoni Transmetimet në kohë reale për detaje.