. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Streamování a přehrávání videa s PIC
4. listopadu 2016 - 5:00 | Pandatron | Streamování a přehrávání videa s PIC | Komentářů: 1  

Streamování a přehrávání videa s PIC

Čtyři techniky streamování a přehrávání videa z SD karty s mikrokontrolérem PIC, které se snaží řešit základní problém omezené šířky pásma vstupního kanálu.

Hlavní překážkou návrhu aplikací pracujících s obrazovými daty a video-streamem bývá potřeba poměrně velké šířky pásma pro přístup mikrokontroléru (MCU) k datům z externích zařízení. V praxi se takové omezení projevuje nejčastěji ve sníženém počtu čtecích a zápisových cyklů z externího paměťového zařízení, během daného období. Proto se dnes často používají různé multimediální (a zároveň také ztrátové) kompresní algoritmy, kdy výsledná kvalita obrazu závisí na jeho náročnosti a ve většině případů je k ní obvykle i přímo úměrná. Dalším řešením, které je dnes poměrně obvyklé, spočívá ve striktním dodržení omezené šířky pásma a to tím, že se pro přenos použije například nižší rozlišení. Pro zobrazení se pak pouze změní měřítko obrazu (tedy tzv. upscaling), k čemuž dnes také existuje hned několik způsobů.

Společnost Microchip nyní uvolnila aplikační poznámku, která popisuje hned čtyři různé způsoby přehrávání videa za pomocí mikrokontrolérů řady PIC® a jednoduchých hardwarových řešení, která jsou rovněž od společnosti Microchip. Každý ze způsobů se v první řadě zaměřuje právě na některou z technik, řešících omezenou šířku pásma, potřebnou pro přístup k obrazovým datům a rychlost procesoru. Například hned první metoda používá k dosažení požadovaného výkonu změnu rozlišení videa, zatímco druhá metoda využívá speciální ovladače displeje LCD na multimediálním rozšiřující kartě (MEB) a přímého zápisu obrazových dat do framebufferu. Obě tyto metody však mají jedno společné a tím je čtení zdrojového souboru z paměťové karty typu SD (Secure Digital) a zobrazení výsledku na obrazovce LCD QVGA.

1) Metoda – Přehrávání videa za použití zvýšení rozlišení interpolací
Propustnost dat, která je potřebná pro přehrávání video souborů, lze vypočítat podle vzorce v rovnici 1.

  (1)

kde:

BPS = Počet bitů za sekundu
HREs = Horizontální rozlišení
VRES = Vertikální rozlišení
Fps = Počet snímků za sekundu
BPP = Počet bitů na jeden pixel

Následující příklad ukazuje výpočet nutné šířky pásma pro nekomprimované video v rozlišení QVGA při 30 snímcích za sekundu a datové hloubce 16 bitů na pixel.

  (2)

Pomocí techniky lineární interpolace je možné šířku pásma snížit podle rovnice 3.

  (3)

Interpolace je operace, která známé údaje využívá k odhadu neznámých dat. Známé údaje jsou přitom obrazová data s menším rozlišením a pojmeme neznámých dat uvažujeme rozdíl mezi menším a vyšším rozlišením. Ukázka aplikace je dobře vidět na obr. 1, kde první obrázek představuje obraz s rozlišením 4 x 4 pixely, celkem tedy 16 pixelů. Obr. 1b poté představuje výstup v rozlišení 8 x 8 pixelů - 64 bodů na obrazový snímek. Každý z pixelů na obr. 1a je v 2D rovině interpolován k získání čtyř pixelů v obr. 1b. Protože zde pracujeme s technikou lineární interpolace, jedná se z pohledu výkonu o jednoduchou operaci.


Obr. 1: Matice originálních (A) a interpolovaných pixelů (B)

Technika jednoduše předpokládá vysokou korelace v prostorové lokalitě stejného snímku s odlišným rozlišením. Na obr. 2 je ukázka vizuálního znázornění technikou lineární interpolace.


Obr. 2: Ukázka lineární interpolace pixelů

Použitý hardware:

  • Starter Kit I/O Expansion Board (DM320002)
  • PIC32 Starter Kit: GP (DM320001), USB II (DM320003), nebo Ethernet (DM320004)
  • PICtail™ Daughter Board for SD™ a MMC Cards (AC164122)
  • Secure Digital (SD) card
  • Graphics LCD Controller PICtail™ Plus SSD1926 Board (AC164127-5)
  • Graphics Display Truly 3.2'' 240 x 320 Board (AC164127-4)

Ukázková aplikace:
Grafické uživatelské rozhraní (GUI) je založené na knihovně Microchip Graphics Library a implementované s Microchip Graphics Display Designer. Detekci a inicializaci souborového systému SD karty zajišťuje knihovna Microchip Memory Disk Drive (MDD). Vlastní funkce aplikace je pak velice jednoduchá. Po zapnutí se na LCD displeji zobrazí seznam souborů, které lze přehrávat a uživatel jednoduchým dotykem displeje vybere nějaký soubor.

Pro komunikaci s paměťovou kartou se přitom používá integrované sériové rozhraní SPI, které pro dosažení nejvyšší propustnosti dat běží na maximální podporované frekvenci - 25 MHz. Data jsou pomocí 16-bitového paralelního portu Parallel Master Port (PMP) přenášena na SSD1926 a při přístupu k nim se tedy využívá přímého přístupu – DMA.


Obr. 3: Ukázka aplikace za použití interpolace rozlišení

2) Metoda - Přehrávání RAW dat z Micro-SD karty s využitím LCD grafického řadiče SSD1926 na MEB
Druhá metoda spočívá v implementaci přehrávání obrazových dat z Micro-SD karty za pomocí Multimediální rozšiřující karty – MEB (Multimedia Expansion Board) a PIC32/PIC24/dsPIC® DSC Starter Kit. Ukázková aplikace přehrává surové video-soubory ve formátu RGB565 z paměťové karty na QVGA LCD na MEB.

Použitý hardware:

  • Multimediální rozšiřující karta (DM320005)
  • PIC32 Starter Kit (GP, Ethernet, USB nebo II)/PIC24 Starter Kit/dsPIC DSC Starter Kit
  • Paměťová karta Micro-SD
  • Standardní Mini-USB B kabel

Implementace:
Tato aplikace využívá přímého přenosu obrazových dat ze souboru Micro-SD karty přímo na Solomon Systech SSD1926 LCD kontrolér. Tedy konkrétně do vyrovnávací snímkové paměti obvodu SSD1926. Tím veškerý streaming spočívá v přímém přenosu dat z karty do paměti displeje, čímž odpadá další režie, spojená obvykle s přenosem dat přes mikrokontrolér.


Obr. 4: Blokové schéma konfigurace s přímým přenosem surových obrazových dat

Z obrázku blokového schéma je vidět, že mikrokontrolér na vývojové desce přistupuje k souborům na paměťové kartě až prostřednictvím rozhraní SSD1926 na MEB. Pro vytvoření základního GUI jsou použity grafické knihovny Microchip.


Obr. 5: Ukázková aplikace s grafickým řadičem SSD1926

3) Metoda – Přenos nekomprimovaného videa přes síťové rozraní Ethernet MEB s pomocí obvodů řady PIC32
Aplikace implementuje obrazový AVI stream přes síťové rozhraní Ethernet, přičemž základem je opět MEB a PIC32 Ethernet Starter Kit.

Požadavky na soubor s videem:

  • Nekomprimovaný soubor AVI soubor ve formátu Device Independent Bitmap (DIB)
  • Rozlišení videa 320 x 240 px
  • Záznam až 20 obrazových snímků za sekundu

Použitý hardware:

  • Multimediální rozšiřující karta (DM320005)
  • PIC32 Ethernet Starter Kit (DM320004)
  • Ethernet (RJ-45) křížený kabel
  • Standardní Mini-USB B kabel

Struktura datového paketu:
Pro přenos obrazové informace přes rozhraní Ethernet je zde použita vlastní aplikace pro PC (UDPApp.exe).

Video-pakety jsou přenášeny na transportní vrstvě UDP protokolu, přičemž aplikace využívá tří typů dat, vedených do aplikace s PIC32. Jedná se o informační AVI Packet, Video Packet a Time Sync Packet.

AVI Packet: Datové pole paketu obsahuje informace o rozlišení videa, počtu snímků a dobu trvání daného snímku v mikrosekundách. Veškerá tato data čte PC aplikace přímo ze zdrojového souboru AVI a přenáší je do zobrazovací aplikace. Jelikož se jedná opravdu o surová data, slouží v aplikaci přímo k řízení přehrávání, jako je ovládání rychlosti videa a rozlišení snímků. Struktura tohoto paketu je vidět na následujícím obrázku.


Obr. 6: Struktura datového AVI paketu

kde:

  • Délka paketu = 20
  • Typ paketu = 4 (AVI Information Packet)
  • Adresy pixelů = nejsou zde použity
  • Velikost X = 320 (šířka obrazovky v pixelech)
  • Velikost Y = 240 (výška obrazovky v pixelech)
  • Počet snímků = přenáší počet snímků, podporovaných zdrojovým souborem AVI
  • Rychlost snímků = doba trvání snímků v mikrosekundách

Video Packet: slouží k přenosu surových obrazových dat z PC aplikace do obrazového zařízení. Datové pole video paketu obsahuje data o jednotlivých obrazových bodech ve formátu RGB565 (16-bit). Jelikož se obvykle pro ukládání používá formát RGB888 (24-bit), musí ještě aplikace před odesláním dat na síť provést celkovou analýzu zdrojového souboru a data převést na nižší počet bitů. Není snad ani třeba dodávat, že převod obrazových dat z 24-bitového formátu na 16-bitový nám šetří značnou šířku pásma rozhraní Ethernet. Součástí tohoto paketu je rovněž adresa pixelů, která nám v aplikaci pomáhá se správným vykreslením obrazových bodů na LCD. Struktura video paketu je na následujícím obrázku.


Obr. 7: Struktura Video paketu

kde:

  • Délka paketu = 8 + 2 x (počet pixelů)
  • Typ paketu = 1 (video paketu)
  • Adresa pixelů = adresa vždy prvního pixelu v datovém poli
  • Pixel 1 .... Pixel 'n' = Vlastní obrazové body

Time Sync Packet: Jelikož na použitém síťovém rozhraní nelze zajistit synchronní přenos, jsou jednotlivá obrazová data přenášena z PC aplikace po blocích. Každý takový blok obsahuje obrazová data o celém video-snímku a na konci je vždy odeslán jeden synchronizační paket. Následně aplikace čeká na jeho potvrzení od obrazového zařízení s PIC32 a dokud toto potvrzení nedostane, neodesílá do zařízení žádná další data. Vložení synchronizačního paketu obrazová data pomáhá s kontrolou rychlosti přehrávání.


Obr. 8: Struktura synchronizačního paketu


Obr. 9: Kontrolní mechanismus video frame rate, využívající synchronizačního paketu

Ukázková aplikace:
Uvedená ukázková aplikace využívá TCP/IP stack a Obrazový stack z Microchip Application Library. Jekmile proběhne nutná inicializace jednotlivých prvků systému, začne řídicí mikrokontrolér PIC32 čekat na obrazová data ze síťového rozhraní. Celý proces je přitom řízen z uvedené PC aplikace, která vždy jako první odesílá základní informace o AVI souboru, jako jsou snímkové informace v mikrosekundách apod. Ty jsou v zařízení uloženy do interní paměti procesoru a použity při následném přehrávání. Dále následuje přenos obrazových informací - AVI pakety přes Ethernet. Jejich obsahem je adresa pixelů a obrazová data jednotlivých bodů. Pro fyzický přenos dat se z PIC32 používá opět technologie DMA přenosu do obvodu SSD1926 (grafické karty) s rozhraním PMP.

4) Metoda - Přenos datového toku nekomprimovaného videa AVI přes Ethernet na WVGA pomocí PIC32
Poslední metoda vychází z předchozí varianty, ale na rozdíl od ní využívá pro zobrazení videa různé techniky, podporující větší rozlišení displeje, například WVGA.

Požadavky na soubor s videem:

  • Nekomprimovaný video soubor ve formátu DIB
  • Rozlišení 400 x 240
  • Snímková rychlost až 20 FPS

Použitý hardware:

  • Graphics PICtail™ Plus Epson S1D13517 Board (AC164127-7)
  • PIC32 Ethernet Starter Kit (DM320004)
  • Ethernet (RJ-45) křížený kabel
  • Standardní Mini-USB B datový kabel
  • Graphics Display Truly 7'' 800 x 480 Board (AC164127-9)

Ukázková aplikace:
Provoz celé aplikace vychází z předchozí metody, tedy opět řízením z PC aplikace dochází k přenosu nekomprimovaných obrazových dat přes Ethernet na MEB pomocí PIC32. Jedinou výjimkou je pouze části displeje.

aby bylo možné podporovat různé rozlišení použitého displeje, byla zde přidána již dříve uvedená technika interpolace obrazových bodů. Technikou prokládání se ze stávajícího rámce automaticky získává hodnota alternativní bodů (množina všech sudých a lichých řádků ve snímku). Pomocí interpolace lze dokonce zvýšit i počet snímků sekundu a tím dosáhnout plynulejšího videa.
Následující obrázek popisuje formát prokládaného videa na grafickém displeji.


Obr. 10: Formát obrazových dat na displeji

Závěr:
Všechny uvedené metody vycházejí z použití nekomprimovaného videa, kde se datový tok omezuje pouze změnou rozlišení jednotlivých snímků. Z toto důvodu jsou vhodné i pro použití na obyčejných mikrokontrolérech a v aplikacích, kde hlavní důraz kladen na cenu výsledného zařízení.
Více informací k tématu, včetně zdrojových kódů zmíněných ukázkových aplikací, je k dispozici v uvedené aplikační poznámce společnosti Microchip.

Odkazy & Download:
Domovská stránka firmy Microchip
Přehled distributorů

Video Playback and Streaming Solutions Using the PIC® MCU (AN1415)
Microchip Graphics Display Designer
Memory Disk Drive File System for PIC18 PIC24 dsPIC PIC32
Graphics LCD Controller PICtail Plus SSD1926 Board
PIC32 Ethernet Starter Kit







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (1):

Zobrazit starší 30 dnů (1)...

host
1. Dne 06. 11. 2016 v 10:53 zaslal host
Bez titulku
Jak hodne lze interpolovat aby byl vysledek koukatelny ?


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
PU232C - převodník USB-UART, modul
Modul s obvodem CP2102 od Silicon Labs - převodník USB-UART pro vývoj a malosériovou výrobu.
od 190 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007