Dekodowanie sprzętowe w technice DVB

Slackware FAQ - czyli baza pytań i odpowiedzi.

Moderatorzy: Moderatorzy, Administratorzy

ODPOWIEDZ
Awatar użytkownika
tad
Użytkownik
Posty: 349
Rejestracja: 2005-08-02, 11:07
Lokalizacja: Kraków

Dekodowanie sprzętowe w technice DVB

Post autor: tad »

Dekodowanie sprzętowe w technice DVB - DEKODER DXR3 W TECHNICE DVB (satelitarnej)


---------------------------------------------------
1. Wstęp: O dekoderze sprzętowym

Dekoder sprzętowy kryjący się pod nazwą DXR3 to urządzenie znane pod handlowym odpowiednikiem Real Magic Hollywood+, lub Creative Labs dxr3.
Jest to karta PCI oparta o układ "em8300", który zapewnia b.dobrej jakości obraz na ekranie telewizora jak i monitora VGA.
W zamierzeniu twórców służyła do odtwarzania płyt DVD w czasach ( lata 90-te XX w.) kiedy procesory były za słabe do tego celu.
Już na Pentium II 200 Mhz. można oglądać płyty DVD.
Urządzenie wtedy kosztowało 300 $, obecnie 40 -80 zł PL.
Pozwala ono dekodować pliki video MPEG1 i MPEG2, czyli nie tylko płyty DVD, ale także (S)VCD, oraz
przekaż satelitarny nadawany w MPEG2-TS.
Dekodując sprzętowo DXR3 odciąża od wykonywanego zadania procesor.

Urządzenie jest wyposażone w wyjścia dźwięku analogowe-stereo i cyfrowe SPDIF.
Wyjście cyfrowe umożliwia przesyłanie sygnału DolbyDigital do zewnętrznego dekodera np.
w amplitunerze pozwalając na odbiór dźwięku wielokanałowego.
W pełni zastępuje kartę dźwiekową.
Również, ze wspomagniem programowym pozwala oglądać filmy Divx / Xvid / H264 itp. oraz słuchać muzyki mp3 / ogg / aac.
Za pośrednictwem mplayera , czy xine również wyświetla napisy do DVD i AVI.
W niewielkim zakresie możliwe jest skalowanie i panoramowanie obrazu.
Dekoder wyposażony jest w regulacje brightness / contrast / saturation,
programem "dhc"w KDE.
W systemach Linux dekoder obsugują programy dxr3player, mplayer, xine
Video Disc Recorder i kilka innych.

2. Instalacja modułów

Do obsługi urządzenia należy zainstalować pakiet: em8300-0.15.tar.gz, lub nowszy, http://dxr3.sourceforge.net/download/em ... 5.1.tar.gz
lub właściwy dla swojej dystrybucji.
Do zainstalowania modułów konieczne jest umieszczenie źródeł kernela
i przypisanie im skrótu do /usr/src/linux.
Po rozpakowaniu źródeł instalujemy w katalogu np. /usr/src/em8300:

Kod: Zaznacz cały

$ ./configure && make
i
# make install
Dodatkowo wchodzimy do podkatalogu /usr/src/em8300/modules i ponownie wykonujemy te same operacje.
Utworzone zostaną moduły: em8300.ko, adv717x i bt856.ko.
Po zainstalowaniu należy sprawdzić, czy właściwy plik microcode em8300.uc został umieszczony w /usr/share/misc.
I wykonać polecenie:

Kod: Zaznacz cały

# ./devices.sh 
w /usr/src/em8300/modules które utworzy pliki urządzeń w /dev.
Powinny powstać: /dev/em8300-0, /dev/em8300_mv, /dev/em8300_ma-0, /dev/em8300_sp-0
Następnie należy wykonać dowiązanie symboliczne urządzeń.

Kod: Zaznacz cały

# ln -s /dev/em8300-0 /dev/em8300
# ln -s /dev/em8300_mv-0 /dev/em8300_mv
# ln -s /dev/em8300_ma-0 /dev/em8300_ma
# ln -s /dev/em8300_sp-0 /dev/em8300_sp
# chmod 666 /dev/em8300* 
Moduły ładujemy i usuwamy poleceniami (w /usr/src/em8300/modules):

Kod: Zaznacz cały

 #./ldm ; ładowanie
# /.rmm. ; usuwanie


Moduły ładujemy z ustalonymi opcjami zależnie od typu urządzenia. Należy je rozpoznać na drodze prób i błędów.
Najczęstszymi skutkami błędnego ich podania jest "zielony ekran", czarno-biały obraz lub zamienione barwy niebeskie na czerwone.
Dla różnych modeli różne są wartości parametrów; dokładny opis jest w README-modoptions.

Najczęściej spotykane są poniższe cztery kombinacje:

Kod: Zaznacz cały

 
adv717x pixelport_16bit=1 pixelport_other_pal=1
em8300  dicom_fix=1 dicom_control=1 dicom_other_pal=1

adv717x pixelport_16bit=0 pixelport_other_pal=0
em8300  dicom_fix=1 dicom_control=1 dicom_other_pal=0

adv717x pixelport_16bit=0 pixelport_other_pal=1
em8300  dicom_fix=1 dicom_control=1 dicom_other_pal=1

adv717x pixelport_16bit=1 pixelport_other_pal=0
em8300  dicom_fix=0 dicom_control=0 dicom_other_pal=0
W moim przypadku stosuje tylko wpis: adv717x pixelport_16bit=0 dla urządzenia firmy Sigmy Desines.

Dla Creative Labs trzeba zamiast adv717x załadowac moduł bt865.

Kod: Zaznacz cały

 
# /sbin/modprobe bt865 
# /sbin/modprobe em8300 use_bt865=1
Aby za każdym razem ładować moduły z parametrami automatycznie zalecane jset umieszczenie wpisu
w modprobe.conf lub modules conf w /etc, lub rc.modules w zależności od kernela i dystrybucji.
Do testów możemy ładować i usuwać moduły przez te polecenia zmieniając za każdym razem wartości, aż uzyskamy zadawalający efekt. .
Następnie uruchamiamy konfigurator em8300setup:

Kod: Zaznacz cały

# em8300setup -p -d -S[/i]
( ładuje automatycznie microcode )
gdzie "p" oznacza kolor PAL, "d" wyjście audio digital "S" właczony dekoder napisów. (lub "-a" dla dźwieku znalogowego)
Działanie urządzenia sprawdzamy:

Kod: Zaznacz cały


# mplayer -vo dxr3 -ao oss://dev/em8300_ma plik.mpg
# mplayer -vo dxr3 -ao oss://dev/em8300_ma dvb://
3. Instalacja pluginu do VDR vdr-dxr3

Kiedy obraz i dźwięk sa prawidłowe przechodzimy do instalacji pluginu vdr-dxr3 do VDR.
VDR ładuje microcode automatycznie, a w przypadku kłopotów możemy uruchomic ręcznie skrypt:
# ./microcode_upload.pl

Aby zainstalować plugin potrzebujemy :
* źródeł kernela w /usr/src/linux
* skompilowany ffmpeg (wersja 0.4.8, lub najnowsza "cvs" z opcją
#./configure --enable-shared .. --enabled-kodek_1... --enabled-kodek_n
wprowadzenie nazw kodeków pozwoli później przez dxr3 i plugin mplayer/mp3 na odtwarzanie filmów, muzyki zakodowanymi tymi kodekami.
* źródła DVB: od wersji linux-dvb-2003-11-08 do najnowszych włącznie.
* źródła em8300, które zainstalowaliśmy
* plugin vdr-dxr3
Dla najnowszej wersji vdr-1.4.0 (maj 2006) ściągamy plugin z CVS poleceniami:

Kod: Zaznacz cały

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dxr3plugin login 
{ENTER] 
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dxr3plugin co dxr3 
Konieczne jest umieszczenie w/w komponentów w jednym katalogu np. /usr/src, tak aby mieć nastepujące katalogi:

Kod: Zaznacz cały

/usr/src/linux
/usr/src/DVB
/usr/src/ffmpeg
/usr/src/em800
/usr/src/vdr-1.3.37
plugin rozpakowujemy do ../vdr-1.3.32/PLUGINS/src/
Musi być umieszczony w podkatalogu dxr3, jeśli źródła były w innym katalogu to do rozpakowanego pluginu wykonujemy polecenie:
ln -s vdr-dxr3-xx dxr3 dowiązanie symboliczne.
Może się okazać konieczna dla wcześniejszych wersji vdr-a serii 1.3.xx edycja w ../dxr3 pliku Makefile
W tym przypadku nastepujące wymagane są ustawienia:

Kod: Zaznacz cały

DVBDIR = ../../../../DVB/driver
VDRDIR = ../../..
LIBDIR = ../../lib
TMPDIR = /tmp
FFMDIR = /usr/local/include/ffmpeg # ew. /usr/local/ffmpeg, lub /usr/src/ffmpeg
EM8300 = ../../../../em8300
Następnie możemy przejśc do kompilacji VDR z pluginem.
VDR uruchamiamy poleceniem:

$ ./vdr -P dxr3 ...


Inna alternatywną metodą jest korzystanie z pluginu vdr-xine z modułem wyjściowym dxr3.

4. Zakończenie

Przedstawiona tu metoda pozwala użyć tani dekoder zastępując wbudowane urządzenia służace temu celowi w drogich tunerach stalitarnych.
Ogladać obraz na ekranie odbiornika TV wysokiej jakości z w pełni funkcjonalnym menu OSD, oraz
inne warianty mediów jak DVD/(S)VCD, AVI i słuchać muzyki przez analogowe, lub cyfrowe wyjście dżwięku.
----------------------------------------------------------------------------------------------------------------------------------------------------
Autor: Tad, 2006-05-30, orginał tekstu znajdzie się wkrótce stronie specjalnie poświęconej programom satelitarnym pod Linuxa: na http://vdr.host.sk w odpowiednim dziale tematycznym.
Ostatnio zmieniony 2006-09-14, 22:56 przez tad, łącznie zmieniany 2 razy.
ODPOWIEDZ