audiodiyers.hu
http://audiodiyers.hu/

Optimalizált lejátszó Allwinner H3 alapokon
http://audiodiyers.hu/viewtopic.php?f=49&t=3856
Oldal: 1 / 1

Szerző:  Konzol [ 2018.09.30. 14:03 ]
Hozzászólás témája:  Optimalizált lejátszó Allwinner H3 alapokon

A sok kísérletezés,próbálkozás után csináltam egy image fájlt Orane Pi One egykártyás gépre.
A cél egy teljesen lecsupaszított, csak zenelejátszásra alkalmas rendszer létrehozása.

Az image fájl letölthető innen:
[url]
https://drive.google.com/drive/folders/ ... EE77QDUKAf
[/url]

Az opi-mpd.img.bz2 fájl egy teljesen kész, komplett rendszer.

Telepítés:

A letöltött image kicsomagolás után minmum 4GB-s mikro sd kártyára írható:
Kód:
bunzip2 opi-mpd.img.bz2
dd if=opi-mpd.img of=/dev/mmcblk0 bs=1M 

( a /dev/mmcblk0 helyett értelemszerűen a megfelelő eszköz írandó pl /dev/sdc )

Az SD kártyát egy Orange Pi One-be helyezve bekapcsolva a gépet a rendszer elindul, bootolás után egy kész lejátszó fut.
A rendszer indulása csak soros portra csatlakoztatott 3.3V-os soros-usb eszközön követhető - pl FTD1232 -, a HDMI kimenet nem él! A rákötött monitor nem mutat képet! 115200 8N1 formátumban.
sceen, minicom használható, vagy pl. az arduino terminálja

Kód:
screen /dev/ttyUSB0 115200


A rendszer használatba vehető soros terminállal vagy SSH-n keresztül az alábbi IP címeken:
10.64.4.4
192.168.2.6

felhasználó név: root
jelszó: X ### NAGY BETŰ

Szerző:  Konzol [ 2018.09.30. 14:20 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

A rendszeren RT kernel fut, alapértelmezetten mpd-0.20.18_rtopt verzió felelős a lejátszásért.
Telepítve van az mpd-0.19.12_rtopt verzió illetve a disztribúcióval szállított mpd is.

CSAK I2S dac-okat kezel a rendszer, az USB portok nem élnek.

Beállítás:

IP cím
Szerkeszteni kell az /etc/network/interfaces fajlt/

Kód:
mcedit /etc/netwok/interfaces

Csatolmány:
Képernyőkép – 2018-09-30 14-13-10_1.png
Képernyőkép – 2018-09-30 14-13-10_1.png [ 50.32 KiB | Megtekintve 34011 alkalommal. ]


Az eth0:0 bejegyzés alatti sorok tartalmazzák az IP beűllításokat.
( az eth0 beűllítás egy második IP címet ad a rendszerhez, ezt a két SBC-s rendszer használja )
Módosítás után a fájlt mentnei kell, majd myreboot parancs után kb. 15-20 másodperc után a rendszer a megadott új címen elérhető.

Szerző:  Konzol [ 2018.09.30. 14:36 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

mpd beállítása

Mivel a rendszer nem kezeli az USB portokat, ezért a lejátszás csak hálózati tárolóról -NAS-, vagy az SD kártyáról lehetséges.
Az mpd adatbázisa lehet helyi, vagy "proxy" amikor is NAS-on is fut egy mpd folyamat és az szolgáltatja az adatbázist

Kód:
#music_directory       "smb://192.168.2.2/Music"
music_directory      "nfs://192.168.2.254/media/"
#playlist_directory      "/var/lib/mpd/playlists"
#db_file         "/var/lib/mpd/tag_cache"
#log_file         "/var/log/mpd/mpd.log"
log_file         "/dev/null"
pid_file         "/run/mpd.pid"
#state_file         "/var/lib/mpd/state"
state_file         "/tmp/mpd_state"

....

database {
       plugin "proxy"
       host "192.168.2.254"
       port "6600"
}



A fenti beállítások nem mountolják a NAS megosztásokat.
Mountolt meghajtó esetén a beállításokat értelemszerűen kell módosítani!

Szerző:  Konzol [ 2018.09.30. 17:55 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Az opi-mpd.img Orange Pi One-on, illetve arra készült. Elvileg futnia kell a H2 alapú Orange Pi Zero-n is, bár azon a forrasztgatás elkerülhetetlen.

A Banana Pi M2+ illetve az Orange Pi PC is H3 alapú. A Banana előnye, hogy van SPDIF kimenete, gigabites az ethernete, illetve valamivel magasabb frekvencián jár a RAM-ja. Ennek megfelelően valamivel drágább is mint a Narancs. Amikor lehet Banana Pi M2+ EDU verziót használok. Az opi-mpd.img erre nem jó.

Önálló image fájlt Banana-ra nem töltöttem föl, helyette bemutatom hogyan lehet egy ilyen végletekig lecsupaszított rendszert csinálni. Úgy gondolom, hogy ez hasznosabb, mert más SOC-t tartalmazó rendszereken is alkalmazhatóak a leírtak. Másrészt kicsit talán oszlatja az egyébként rendkívül hatékony és kényelmes linux parancssor "misztikusságát".

A dolog nem túl bonyolult, bár tény, hogy végig "informatika" még akkor is, ha a végül egy "futómű" lesz belőle, de figyelmet és némi kitartást igényel. Hogy hasznos-e végigcsinálni? Szerintem igen. Még akkor is, ha valaki nem Banana-t, hanem Orange Pi-t szeretne/fog használni - a két rendszer létrehozása két-három helyen tér el egymástól.
Akiknek nincs kedvük végig csinálni, használhatják az opi-mpd.img-t. Végül is annak összeállítását fogom ismertetni - föltéve, hogy nem jut eszembe még valami, vagy nem kapok,hallok,olvasok valamit.

A végeredmény pedig... nos, a saját véleményem ebben az ügyben kevéssé lényeges, utólagos engedelmükkel - nickjük nélkül - ismertetném néhány fórumtárs véleményét, akik ismerik, hallották a végeredményt.

- mióta megvan az Orange a PC-t be sem kapcsoltam

- Igy a gyakorlatilag gyári armbian imageval összevetve (az mpd-n a logolás, buffer, ilyen alap dolgok nekem is be vannak állítva) a kiherélt RT gépet, eléggé szembeötlö a különbség. Nem a hangkarakter más, hanem a zene, már ahogy megszólal az is. Nem részletesebb, tehát az arányok nem változnak, viszont a részletek könnyedén hallható, nem kell figyelni, egyszerüen ott vannak.

-A tere sokkal természetesebb, az akusztika környezet mikro-visszhangjai ott vannak. A nem moddolt kernelnék itt jelentös hiányérzet van.

-A hangszer hangok kerekebbek, a hegedü ezen nagyon jó. A zongora csengése is természetesebb, a húrpadnak meg a mechanikának olyan finom zörejei is ott vannak, amik a másikon nem tünik fel.

-Azért gyanítom, hogy a zajhatár ment lentebb, mert az arányok nem változtak, tehát nem az van mint az AK4495-nél, hogy a képedbe tolja a részletet, ha kéred - ha nem.

- Olyan mintha kevesebb magas lenne elsöre, de inkább finomabb, analógosabb, tisztább. A sima kernel kicsivel torzabbnak hat magasban. A mélyekkel ugyanez van, nagyon jó mélybasszusa van, igen mélyre megy, a felsö mély búgása, harapás ebben nincs.

- Azt lehetne mondani sokkal folyékonyabb a zene. Szerintem ez nagyon egyben van így. Igaz a többit nem hallottam, csak így valaminek az eleje és vége közt eléggé jelentös a különbség. Szerintem ezzel jóval túl lett lépve a miniITX-es csodaPC szintje (amit a triodáson hallottunk).

- Egy Beethoven zongoraverseny erejéig .... is belehallgatott, a hegedük nagyon jók, a fúvósok is realisztikusak. A tér nagyon jó.

- én ugyan nem tudom ilyen jól összefoglalni, de egyet értek mindennel (írta valaki aki ismerte a korábbi véleményeket )

Szerző:  Konzol [ 2018.10.03. 19:43 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Az alaprendszer telepítéséhez le kell tölteni az SBC-nek megfelelő tömörített image fájlt innen:

https://drive.google.com/drive/folders/ ... EE77QDUKAf

( Armbian_5.61_Bananapim2plus_Ubuntu_xenial_default_3.4.113.img.bz2 illetve
Armbian_5.61_Orangepione_Ubuntu_xenial_default_3.4.113.img.bz2 )

A kicsomagolt image fájlt linux alatt a

Kód:
dd if=Armbian_........img of=/dev/mmcblk0   bs=1M


paranccsal, Windows alatt valamilyen imagelő programmal ( Etcher, Win32DiskImager ) írható ki egy minimum 4GB-os micro SD kártyára.

A telepítéshez az SBC-t kössük hálózatba, tegyük bele az SD kártyát, és vagy monitort és billentyűzetet kapcsolva hozzá, vagy soros vonalon keresztül elvégezhető a telepítés. ( én a soros vonalas megoldást szoktam használni, mert nem kell a monitort, billentyűt átdugdosni, elég az USB-RS232 konvertert a laptopra csatlakoztatni )

Csatolmány:
IMG_20181003_194159.jpg
IMG_20181003_194159.jpg [ 90.92 KiB | Megtekintve 33918 alkalommal. ]

Szerző:  Konzol [ 2018.10.03. 19:51 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Az első induláskor az alapértelmezetten root felhasználóként 1234 jelszóval lehet bejelentkezni. A jelszót rögtön meg kell változtatni.
Először meg kell adni a régi jelszót, majd kétszer egymás után az újat. Kicsit háklis az uj jelszóra, Minimum hat karakteres legyen. Később bármire lecserélhető természetesen.

Csatolmány:
elso_boot.png
elso_boot.png [ 133.85 KiB | Megtekintve 33915 alkalommal. ]


Egy felhasználót is létre akar hozni, amiről CTRL+C-vel le lehet beszélni.

Csatolmány:
user.png
user.png [ 100.33 KiB | Megtekintve 33915 alkalommal. ]

Ezután egy reboot paranccsal indítsuk újra a rendszert, hogy használatba tudja venni az egész SD kártyát!

Szerző:  Konzol [ 2018.10.03. 20:02 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Ujrindulás után bejelentkezve
Kód:
ifconfig eth0


paranccsal lekérdezhető az aktuális IP cím, és a továbbiakban nem kell soros terminált,vagy monitort és billentyűzetet használni,hanem nyugodtan lehet SSH-n keresztül ( Windows-on pl a Putty-t használva ) lehet folytatni a telepítést.

Először frissítsük a rendszert/
Kód:
apt update && apt upgrade -y


Mivel a telepítő image-et néhány napja csináltam,csak kevés csomag fog frissülni.

A frissítés után telepíteni kell a szükséges programokat, könyvtárakat:
Kód:
apt install -y mpc mpd sox ffmpeg mc g++ \
  libmad0-dev libmpg123-dev libid3tag0-dev \
  libflac-dev libvorbis-dev libopus-dev \
  libadplug-dev libaudiofile-dev libsndfile1-dev libfaad-dev \
  libfluidsynth-dev libgme-dev libmikmod2-dev libmodplug-dev \
  libmpcdec-dev libwavpack-dev libwildmidi-dev \
  libsidplay2-dev libsidutils-dev libresid-builder-dev \
  libavcodec-dev libavformat-dev \
  libmp3lame-dev libtwolame-dev libshine-dev \
  libsamplerate0-dev libsoxr-dev \
  libbz2-dev libcdio-paranoia-dev libiso9660-dev libmms-dev \
  libzzip-dev \
  libcurl4-gnutls-dev libyajl-dev libexpat-dev \
  libasound2-dev libao-dev libjack-jackd2-dev libopenal-dev \
  libpulse-dev libroar-dev libshout3-dev \
  libsndio-dev \
  libmpdclient-dev \
  libnfs-dev libsmbclient-dev \
  libupnp-dev \
  libavahi-client-dev \
  libsqlite3-dev \
  libwrap0-dev \
  libcppunit-dev xmlto \
  libboost-dev \
  libicu-dev



Ezzel elszöszöl egy ideig, de gond nélkül le kell futnia.

Szerző:  Konzol [ 2018.10.04. 18:37 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Folytatva a rendszer telepítését következzen a systemd lecserélése a klasszikus systemV stílusú rendszerindító scriptekre. Pontosabban upstart-ra...

Kód:
apt install -y upstart-sysv sysvinit-utils

reboot


Újraindulás után NEM LESZ soros terminálunk, tehát vagy SSH, vagy billentyű és monitor használható.

Intsünk kevéssé fájdalmas búcsút a systemd-nek!
Kód:
apt-get remove --purge --auto-remove systemd systemd:armhf -y


Tiltsuk a systemd újratelepítését, illetve a kapcsolódó csomagokat/
Kód:
echo -e 'Package: systemd\nPin: release *\nPin-Priority: -1' > /etc/apt/preferences.d/systemd
echo -e '\n\nPackage: *systemd*\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd
echo -e '\nPackage: systemd:amd64\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd
echo -e '\nPackage: systemd:i386\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd


Kapcsoljuk ki a fölösleges terminálokat - ezek mindegyike egy futó folyamatot jelent, bár az optimalizált kernel nem kezeli az usb portokat és a billentyűzetet sem.
Kód:
cd /etc/init

mv ./tty2.conf ./tty2.conf.orig
mv ./tty3.conf ./tty3.conf.orig
mv ./tty4.conf ./tty4.conf.orig
mv ./tty5.conf ./tty5.conf.orig
mv ./tty6.conf ./tty6.conf.orig


Ezzel kikapcsolunk a Linuxoson szokásos hat terminálból ötöt. Egyet egyelőre meghagyunk, ha valami rosszul sülne el, így még mindig elérhető marad a gép.
Hozzuk létre a soros vonali terminál inditó fájlját!
Kód:
cp ./tty1.conf ./serial-tty.conf
mcedit ./serial-tty.conf


Hozzuk ilyen alakra!
Kód:
root@orangepione:/etc/init# cat ./serial-tty.conf
 
# ttyS0 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345] and (
            not-container or
            container CONTAINER=lxc or
            container CONTAINER=lxc-libvirt)

stop on runlevel [!2345]

respawn
exec /sbin/getty -L 115200 ttyS0 vt102

root@orangepione:/etc/init#
reboot


Újraindulás után ellenőrizzük, hogy be tudunk-e jelentkezni soros terminálon, illetve SH-n keresztül!
Amennyiben igen, letiltható a tty1 is.

Kód:
mv /etc/init/tty1.conf /etc/init/tty1.conf.orig


Kis takarítás:
Kód:
apt clean

Szerző:  Konzol [ 2018.10.04. 19:04 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Töltsük le a korábbi linkről az mpd forráskódját! ( mpd-0.19.12_rtopt.tar.bz2 illetve mpd-0.20.18_rtopt.tar.bz2 )
scp-vel ( winscp Windows alatt ) másoljuk a forrást az SBC /usr/local/src könyvtárába/

Az asztali gépen/laptopon
Kód:
cd ¬/Letöltések

scp ./mpd-0.20.18_rtopt.tar.bz2 root@192.168.2.6:/usr/local/src/


Az SBC-n tömörítsük ki az mpd forráskódját!

Kód:
cd /usr/local/src/
tar xjvf ./mpd-0.20.18_rtopt.tar.bz2
cd mpd-0.20.18


Itt található egy mpdconfig_min.sh script, amely elvégzi az mpd konfigurálását. Ez a script egy minimális képességekkel rendelkező mpd-t konfigurál. Kikapcsol sok-sok modult, gyakorlatilag majdnem minden olyat, ami nem szükséges az wav,flac,mp3,aiff wv formátumú fájlok lejátszásához.

Kód:
./mpdconfig_min.sh
...
....
########### MPD CONFIGURATION ############

Archive support:
   (-bzip2) (-ISO9660) (-ZIP)
Client support:
   (-IPv6) (+TCP) (-UNIX Domain Sockets)
Storage support:
   (+NFS) (+SMB)
File format support:
   (-AAC) (-AdPlug) (-DSD) (-C64 SID) (-FFMPEG) (+FLAC) (-FluidSynth) (-GME)
   (+libsndfile) (-MikMod) (-MODPLUG) (-MAD) (+MPG123) (-Musepack)
   (-Opus) (-OggTremor) (-OggVorbis) (-WAVE) (+WavPack) (-WildMidi)
Other features:
   (-libsamplerate) (-libsoxr) (+libmpdclient) (-inotify) (-SQLite) (+rtopt)
Metadata support:
   (+ID3)
Playback support:
   (+ALSA) (-FIFO) (-SNDIO) (-File Recorder) (-Haiku) (-HTTP Daemon) (-JACK)
   (-libao) (-OSS) (-OpenAL) (-OS X) (-Pipeline)
   (-PulseAudio) (-ROAR) (-SHOUTcast) (-Solaris) (-WinMM)
Streaming support:
   (-CDIO_PARANOIA) (-CURL) (+SMBCLIENT) (-Soundcloud)
   (-MMS)
Event loop:
   epoll

##########################################
.....


A konfig végén kiír egy rövid összefoglalót a konfigurált mpd képességeiről ( - jelzi, ha valamit kikapcsoltunk, + a funkció elérhetőségét )

Fordítsuk le az mpd-t!

Kód:
make -j2


A fordítás eltart egy darabig. A -j2 opció azt jelenti, hogy két CPU mag fog fordítani a négyből megelőzve a memória gondokat.
A fordításnak hiba nélkül le kell futnia.A futtatható mpd az src könyvtár alatt készül el. Az eredmény ellenőrizhető, illetve a futtatható binárisból eltávolíthatóak a debugger működéséhez benne lévő szimbólumok.

Kód:
root@orangepione:/usr/local/src/mpd-0.20.18# ls -la src/mpd
-rwxr-xr-x 1 root root 4740312 Oct  4 15:59 src/mpd
root@orangepione:/usr/local/src/mpd-0.20.18# strip --strip-all src/mpd
root@orangepione:/usr/local/src/mpd-0.20.18# ls -la src/mpd
-rwxr-xr-x 1 root root 372288 Oct  4 16:07 src/mpd


A 4.7Mbyte-os binárisból végül 370K-s lett.

Az új binárist másoljuk a végleges helyére, egyúttal mentsük el a korábban telepített mpd példányt!

Kód:
root@orangepione:/usr/local/src/mpd-0.20.18# service mpd stop
root@orangepione:/usr/local/src/mpd-0.20.18# cp src/mpd /usr/bin/mpd_0.20.18_rtopt
root@orangepione:/usr/local/src/mpd-0.20.18# mv /usr/bin/mpd /usr/bin/mpd_0.19.12
root@orangepione:/usr/local/src/mpd-0.20.18# ln -s /usr/bin/mpd_0.20.18_rtopt /usr/bin/mpd


A fentiek közül az utolsó parancs egy szimbólikus linket hoz létre az mpd_0.20.12_rtopt-ra, így az mpd parancs kiadása a 0.20.18-as verziót fogja elindítani.
Természetesen az mpd-0.19.12_rtopt verziót is választahatjuk. Konfigurálása telepítése megegyezik az itt leírtakkal a könyvtár illetve fájl nevek kivételével.

A munka sikeressége ellenőrizhető:
Kód:
mpd -V | grep Daemon

Szerző:  Konzol [ 2018.10.04. 19:23 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Bár zenélni még nem tud a masina, de már komoly előrelépést értünk el a "gyári" állapotokhoz képest. Kikapcsoltunk hat fölösleges folyamatot, rt képességekkel felruházott mpd van a rendszeren...

Folytassuk a beállításokat!
Az
Kód:
/etc/security/limits.conf
fájl végére szúrjuk be az alábbi sorokat:
Kód:
@audio - rtprio 99
@audio - memlock unlimited
@audio - nice -19


Távolítsuk el a haveged csomagot!
Kód:
apt remove --purge --autoremove -y haveged


A cpufrequtils csomagra sincs szükség, jobb, ha teljes sebeséggel futnak a magok.
Kód:
root@orangepione:~# apt remove --purge --autoremove -y cpufrequtils


Kapcsoljuk ki a fölösleges hardver elemeket! ( USB, illetve grafikus kártya )
Kód:
root@orangepione:~# h3consumption -h
Usage: h3consumption [-h/-H] [-p] [-g on|off] [-m max_cpufreq] [-c 1|2|3|4]
       [-d dram_freq] [-D dram_freq] [-u on|off] [-e on|off|fast]

############################################################################

 This tool allows to adjust a few consumption relevant settings of your
 H3 device. Use the following switches

 -h|-H           displays help or verbose help text
 -p              print currently active settings
 -g on|off       disables GPU/HDMI for headless use
 -m max_cpufreq  adjusts maximum allowed cpu clockspeed (mhz)
 -c 1|2|3|4      activate only this count of CPU cores
 -d dram_freq    adjusts dram clockspeed (408 - 624 mhz)
 -D dram_freq    like -d but as low as 132 mhz possible (experimental!)
 -u on|off       enables/disabled all USB ports
 -e on|off|fast  enables/disables Ethernet, the fast switch
                 forces 100 mbits/sec negotiation on gigabit devices
 -w on|off       enables/disables Wi-Fi powermanagement when interface
                 supports this and is controlled by network-manager

############################################################################

root@orangepione:~# h3consumption -g off -u off
Settings changed. Please reboot for changes to take effect
and verify settings after the reboot using "h3consumption -p"

reboot


Az ujraindítás után:
Kód:
root@ThinkPad:~# ssh root@192.168.2.6
root@192.168.2.6's password:
  ___                               ____  _    ___             
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_)  / _ \ _ __   ___
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | | | | '_ \ / _ \
| |_| | | | (_| | | | | (_| |  __/ |  __/| | | |_| | | | |  __/
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_|  \___/|_| |_|\___|
                       |___/                                   

Welcome to ARMBIAN 5.61 user-built Ubuntu 16.04.5 LTS 3.4.113-sun8i   
System load:   0.53 0.12 0.04     Up time:       0 min      
Memory usage:  6 % of 495MB     IP:            192.168.2.6
CPU temp:      45°C              
Usage of /:    36% of 3.5G      

Last login: Thu Oct  4 17:17:24 2018 from 192.168.2.222

root@orangepione:~# h3consumption -p
Active settings:

cpu       1200 mhz allowed, 1200 mhz possible, 4 cores active

dram      624 mhz

hdmi/gpu  off

usb ports off

eth0      100Mb/s/Full, Link: yes


Szerző:  Konzol [ 2018.10.05. 09:02 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Következő lépés az I2S illetve Banana Pi-n az SPDIF bekapcsolása, és az SOC belső hangeszközének kikapcsolása.
A hardvert az úgynevezett fex fájlon keresztül lehet konfigurálni

Kód:
cd /boot
bin2fex ./script.bin > ./pi_i2s.fex


Szerkesszük az így létrejött pi_i2s.fex fájlt!
Keressük meg benne az alébbi szakaszokat és módosítsuk az alábbiaknak megfelelően!

Kód:

[twi1]
twi_used = 0  // 1->0 hogy az I2S-t lehessen használni!
twi_scl = port:PA18<3><default><default><default>
twi_sda = port:PA19<3><default><default><default>

...

[pcm0]
daudio_used = 1      //0->1 I2S be
daudio_master = 4
daudio_select = 1
audio_format = 1      // I2S, audio_format = 2 -> RJ,

...

[audio0]
audio_used = 0 // 1->0  Belső hangeszkök ki
lineout_vol = 31

...

[spdif0]
spdif_used = 0  //Banana Pi-n 0->1 ha kell SPDIF
spdif_dout = port:PA17<2><1><default><default>


A fex fájlból létre kell hozni a megfelelő bin-t

Kód:
fex2bin ./pi_i2s.fex > ./script.bin

reboot


Új real-time kernel telepítéséhez le kell tölteni két fájlt és felmásolni azokat a Pi-re.

Asztali gépen:
Kód:
cd Letöltések
scp ./linux-image-sun8i_5.61_armhf.deb ./ linux-u-boot-orangepione_5.61_armhf.deb root@192.168.2.6:/


Figyelni kell, hogy Banana-hoz a linux-u-boot-bananapim2plus_5.61_armhf.deb fájlt kell használni!!

Az új kernel telepítése:

Kód:
root@orangepione:~# cd /
root@orangepione:/# ls
bin   dev  home  linux-image-sun8i_5.61_armhf.deb         lost+found  mnt  proc  run   selinux  sys  usr
boot  etc  lib   linux-u-boot-orangepione_5.61_armhf.deb  media       opt  root  sbin  srv      tmp  var
root@orangepione:/# dpkg -i /linux-image-sun8i_5.61_armhf.deb /linux-u-boot-orangepione_5.61_armhf.deb
(Reading database ... 46746 files and directories currently installed.)
Preparing to unpack .../linux-image-sun8i_5.61_armhf.deb ...
update-initramfs: Deleting /boot/initrd.img-3.4.113-sun8i
Removing obsolete file uInitrd-3.4.113-sun8i
Unpacking linux-image-sun8i (5.61) over (5.61) ...
Preparing to unpack .../linux-u-boot-orangepione_5.61_armhf.deb ...
Unpacking linux-u-boot-orangepione-default (5.61) over (5.61) ...
Setting up linux-image-sun8i (5.61) ...
update-initramfs: Generating /boot/initrd.img-3.4.113-rt143-sun8i
update-initramfs: Converting to u-boot format
Setting up linux-u-boot-orangepione-default (5.61) ...
Updating u-boot on /dev/mmcblk0
root@orangepione:/# reboot



Újraindulás után:

Kód:
root@ThinkPad:~# ssh root@192.168.2.6
root@192.168.2.6's password:
  ___                               ____  _    ___             
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_)  / _ \ _ __   ___
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | | | | '_ \ / _ \
| |_| | | | (_| | | | | (_| |  __/ |  __/| | | |_| | | | |  __/
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_|  \___/|_| |_|\___|
                       |___/                                   

Welcome to ARMBIAN 5.61 user-built Ubuntu 16.04.5 LTS 3.4.113-rt143-sun8i   
System load:   0.53 0.13 0.04     Up time:       0 min      
Memory usage:  4 % of 502MB     IP:            192.168.2.6
Usage of /:    34% of 3.5G      

Last login: Fri Oct  5 06:38:55 2018 from 192.168.2.222

root@orangepione:~# uname -a
Linux orangepione 3.4.113-rt143-sun8i #41 SMP PREEMPT RT Sat Sep 29 15:43:30 CEST 2018 armv7l armv7l armv7l GNU/Linux
root@orangepione:~#

root@orangepione:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: snddaudio [snddaudio], device 0: SUNXI-TDM0 snddaudio-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0


Látható, hogy az új kernel fut,az I2S hangeszköz működik!

Szerző:  Konzol [ 2018.10.05. 09:27 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Foglalkozzunk kicsit a kernel induláskori beállításaival! Szerkesszük a /boot/armbianEnv.txt fájlt

Kód:
cd /boot
mcedit armbianEnv.txt

...
console=serial
...


illetve a /boot/boot.cmd -t
Kód:
...
setenv docker_optimizations "off"
...
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory swapaccount=1"; fi

##SZURJUK BE EZT A SORT
setenv bootargs "${bootargs} sunxi_no_mali_mem_reserve nosoftlockup audit=0 selinux=0 monitor=none  ipv6.disable=1 apparmor=0 rcu_nocb_poll skew_tick=1 nousb clocksource=OSTS"

load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage
...
...


Fordítsuk le a cmd fájlt!

Kód:
cp /boot/boot.scr /boot/boot.scr.save
root@orangepione:/boot# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
Image Name:   
Created:      Fri Oct  5 07:24:18 2018
Image Type:   ARM Linux Script (uncompressed)
Data Size:    3821 Bytes = 3.73 kB = 0.00 MB
Load Address: 00000000
Entry Point:  00000000
Contents:
   Image 0: 3813 Bytes = 3.72 kB = 0.00 MB

reboot

Szerző:  Konzol [ 2018.10.05. 10:24 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Egy lehetséges mpd.conf fájl:
Kód:
root@orangepione:~# cat /etc/mpd.conf
#Windows stilusu megosztas, mountolas nelkul guest-nek tudnia kell olvasnia a megosztast
#music_directory       "smb://192.168.2.2/Music"

#nfs megosztas hasznalata mountolas nelkul
#music_directory      "nfs://192.168.2.254/media/"

#helyi fajlrendszer hasznalata
music_directory         "/media"

#playlist_directory      "/var/lib/mpd/playlists"

###
# VAGY az itt megadott fajl lesz az adatbazis, vagy proxy mpd-rol kapja

#db_file         "/var/lib/mpd/tag_cache"

database {
   plugin "proxy"
   host "192.168.2.254"
   port "6600"
}

#log_file         "/var/log/mpd/mpd.log"
log_file         "/dev/null"
pid_file         "/run/mpd.pid"
#state_file         "/var/lib/mpd/state"
state_file         "/tmp/mpd_state"
state_file_interval      "120"
#sticker_file                   "/var/lib/mpd/sticker.sql"
#user            "mpd"
user            "root"
group                          "audio"
bind_to_address      "any"
#bind_to_address      "/run/mpd/socket"
port            "6600"
connection_timeout      "600"
log_level         "default"
#log_level         "none"
gapless_mp3_playback         "yes"
#restore_paused "no"
#save_absolute_paths_in_playlists   "no"
#metadata_to_use   "artist,album,title,track,name,genre,date,composer,performer,disc"
#auto_update    "yes"
#auto_update_depth "3"
follow_outside_symlinks   "yes"
follow_inside_symlinks      "yes"
zeroconf_enabled      "no"
zeroconf_name         "opi-player"


##real-time beallitasok
realtime_option {
    memlock              "yes"
#    stack_reserve        "1024"
    stack_reserve    "2048"
    heap_reserve         "10240"
    main_priority        "OTHER:0"
    player_priority      "FIFO:50"
    decoder_priority     "FIFO:49"
    update_priority      "OTHER:0"
    io_priority      "OTHER:0"
}

#database {
#    plugin "upnp"
#}

##input {
#        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
#}


#
# Lejatszasi puffer merete
#

#audio_buffer_size "196608"
audio_buffer_size "262144"
#audio_buffer_size "4192"
buffer_before_play "10%"

audio_output {
   type      "alsa"
   name      "I2S"
   device      "hw:0,0"   # optional
        format      "*:24:2"   # AD1865->*:24:2  TDA1541A->*:16:2
   auto_format   "no"
   auto_resample   "no"
   auto_channels   "no"
   mixer_type      "none"
#   mixer_type      "software"      # optional
#   mixer_type    "hardware"
#   buffer_time    "200000"
#   period_time   "256000000"
#   period_time   "50000"
#   mixer_device   "default"   # optional
#   mixer_control   "PCM"      # optional
#   mixer_index   "0"      # optional
#        always_on   "yes"
        replay_gain_handler "none"

   priority   "FIFO:99"
   timerslack    "100"      # mpd-0.20.18 nem ismeri, mpd-0.19.12 igen
}

#audio_output {
#   type      "alsa"
#   name      "SPDIF"
#   device      "hw:1,0"   # optional
#   mixer_type      "none"      # optional
#        format      "*:*:2"
#   buffer_time   "200000"
#   period_time   "256000000"
#   dsd_usb      "yes"
#   auto_format   "no"
#   auto_channels   "no"
#   auto_resample   "no"
#   sample_rate_converter "0"
#   mixer_device   "default"   # optional
#   mixer_control   "PCM"      # optional
#   mixer_index   "0"      # optional
#        priority   "FIFO:99"
#        timerslack "100"
#}

#samplerate_converter      "Fastest Sinc Interpolator"

replaygain         "off"
#replaygain_preamp      "0"
#replaygain_missing_preamp   "0"
#replaygain_limit      "yes"
#volume_normalization      "no"

filesystem_charset      "UTF-8"
id3v1_encoding         "UTF-8"

#decoder {
#    plugin "ffmpeg"
#    enabled "no"
#}
max_output_buffer_size    "8192"



Mentsük el /etc/mpd.conf_rt néven,
mald csináljunk rá egy linket!
Kód:
ln -s /etc/mpd.conf_rt /etc/mpd.conf


Sajnos a systemd-nek vannak hozadékai...
Kód:
rm /etc/systemd/system/sockets.target.wants/mpd.socket
reboot


Újraindítva az új beállításokat fogja használni.
Kód:
service mpd restart


Ekkor már kipróbálható a rendszer!
Az I2S port elérhető:
Csatolmány:
Orange_Pi_One__Lite_I2S_out.png
Orange_Pi_One__Lite_I2S_out.png [ 176.55 KiB | Megtekintve 33799 alkalommal. ]



( a képet innen ollóztam: http://www.dimdim.gr/2016/12/orange-pi- ... rs-part-2/ )

Szerző:  Konzol [ 2018.10.05. 20:07 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Már majdnem készen van a lejátszó...

Közben kijött egy újabb kernel verzió, lefordítottam minimális változtatással. Nos ez a minimális módosítás szerintem nagyon is hallható változást hozott hangban. Feltöltöttem az új kernelt linux-image-sun8i_5.62_armhf.deb a fájl neve.

Azt gondolom nagyon megéri frissíteni erre a verzióra! ( Az u-boot-ot nem kell frissíteni )

Szerző:  Konzol [ 2018.10.06. 08:33 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Amit még érdemes megcsinálni: szerkesszük az /etc/sysctl.conf fájlt! Ebben lehet hangolni a kernel viselkedését futási időben.

Adjuk hozzá, illetve szükség szerint módosítsuk az alábbi sorokat!

Kód:
...
##
vm.swappiness=0

kernel.sched_rt_runtime_us=-1
vm.stat_interval = 36000
#kernel.nmi_watchdog = 0
#kernel.sched_rt_period_us = 1000000
kernel.sched_rt_period_us = 2000000

#kernel.sched_rt_runtime_us = 0
#kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536

### IP STACK HANGOLASA

net.ipv4.tcp_low_latency=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_workaround_signed_windows=1
#net.ipv4.tcp_keepalive_probes=9
#net.ipv4.tcp_keepalive_intvl=60
#net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_reordering = 3
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.ip_no_pmtu_disc=0
net.ipv4.tcp_mtu_probing=1
net.ipv4.tcp_frto=0
#net.ipv4.tcp_frto_response=2
net.ipv4.tcp_congestion_control=reno
net.ipv4.tcp_timestamps = 0
net.core.netdev_max_backlog=250000
net.core.rmem_max=4194304
net.core.wmem_max=4194304
net.core.rmem_default=4194304
net.core.wmem_default=4194304
net.core.optmem_max=4194304
#net.ipv4.tcp_rmem="4096 87380 4194304"
#net.ipv4.tcp_wmem="4096 65536 4194304"
net.ipv4.tcp_adv_win_scale=1

[code]

A [code]sysctl -p[/code] parancs azonnal módosítja a kernel beállításokat, egyébként pedig a rendszer indulásakor jutnak érvényre.

Nem túl elegáns megoldás, de számomra kényelmes és egy ilyen egy feladatos rendszeren szerintem teljesen elfogadható megoldás a végleges szoftveres környezet módosítása az [code]/etc/rc.local[/code] fájlon keresztül. Ez a script a rendszer indítás végén fut le...

Nálam valami ilyesmi lehet a tartalma
[code]
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Az 5.62 -es kernel nem támogatja a "printk" rendszerhívást.
#Korábbi verziójú kerneleknél NE legyen megjegyzésben

# /bin/dmesg -n 1

/bin/mount -n -o remount,size=50M /tmp
/bin/chmod 01777 /tmp
/bin/mount -n -o remount,size=50M /dev

##Ha van a lejátszónak internet kapcsolata illetve a helyi hálózaton van time szerver
# megpróbálja beállítani a pontos időt
# szüksége van az ntpdate csomagra - apt install -y ntpdate
# célszerű engedélyezni, forrásból fordítunk valamit

/usr/sbin/ntpdate 0.hu.pool.ntp.org 2>&1 >>/dev/null &

## softirq kezelés prioritásainak módosítáasa

prs=$(ps -A | grep ksoftirqd | awk '{print $1}')
for ppid in $prs
do
    chrt -f -p 99 $ppid
done

## Pontosabb belső időzítés
if [ -f /sys/class/rtc/rtc0/max_user_freq ]
then
    echo 3072 > /sys/class/rtc/rtc0/max_user_freq
    /bin/chgrp audio /dev/rtc0
    /bin/chmod 660 /dev/rtc0
fi

## A kernel virtuális gep statisztikaja nem fontos zenehallgatas kozben
# Ezek lehetnenek akar a systl.conf-ban is, de itt ragadtak
#
if [ -f /proc/sys/vm/dirty_writeback_centisecs ]
then
    echo 36000 > /proc/sys/vm/dirty_writeback_centisecs
fi

if [ -f /proc/sys/kernel/hung_task_check_count ]
then
    echo 1 > /proc/sys/kernel/hung_task_check_count
fi

if [ -f /proc/sys/vm/dirty_background_ratio ]
then
    echo 5 > /proc/sys/vm/dirty_background_ratio
fi

## Az lldma.c forrasat kozzetettem,  letoltheto, lefordithato 
# A binarist celszeru az /usr/local/sbin konyvtarba tenni, es nagyon alacsony prioritassal futtatni

if [ -x /usr/local/sbin/lldma ]
then
    /usr/bin/nice -20 /usr/local/sbin/lldma
fi

# Leallitgatja a nem hasznalt szolgaltatasokat
#
#
if [ -x /etc/init.d/upmpdcli ]; then
    /usr/sbin/service upmpdcli stop
fi
#/usr/sbin/service networkaudiod stop
if [ -x /etc/init.d/ntp ]; then
    /usr/sbin/service ntp stop
fi
if [ -x /etc/init.d/haveged ]; then
    /usr/sbin/service haveged stop
fi
if [ -x /etc/init.d/udev ]; then
    /usr/sbin/service udev stop
fi
if [ -x /etc/init.d/dbus ]; then
    /usr/sbin/service dbus stop
fi
if [ -x /etc/init.d/cron ]; then
    /usr/sbin/service cron stop
fi
if [ -x /etc/init.d/rsyslog ]; then
    /usr/sbin/service rsyslog stop
fi

# ssh alacsony prioritasra
/usr/bin/renice -n 20 $(pidof sshd)

#init szinten
/usr/bin/renice -n 20 1
killall /sbin/getty

## vegul az mpd inditasa
# az rtopt mpd-kben megadható az egyes programszálak prioritása
# ezért egyszerűen csak futtatni kell a binárist

cp /etc/default/mpd_state /tmp/mpd_state
/usr/bin/mpd /etc/mpd.conf

exit 0

Szerző:  Konzol [ 2018.10.06. 08:53 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Magyarázatra szorul az rc.local fájl utolsó néhány sora.

Az mpd state fájlról már írtam korábban. A futó mpd állapotát tartalmazza. Lejátszási listát, hangerőt, kimenetek állapotát stb.
Az mpd rendszeresen frissíti ezt a fájlt. A rendszeres írás nem igazán tesz jót az SD kártyáknak. A state fájl használata kikapcsolható ugyan, de én hasznosnak találtam ezt a szolgáltatást - nem kell folyton visszakapcsolnom pl. a consume módot, ki-be kapcsolnom az SPIF kimenetet stb.

Csináltam egy "mpd_state" fájlt az /etc/default könyvtárban
Kód:
root@AD1865:~# cat /etc/default/mpd_state
sw_volume: 100
audio_device_state:1:I2S
state: play
current: 0
time: 55.797000
random: 0
repeat: 0
single: 0
consume: 1
crossfade: 0
mixrampdb: 0.000000
mixrampdelay: -1.000000
playlist_begin
playlist_end


Ezt a fájlt másolja be az rc.local script a /tmp könyvárba, ami a rendszer RAM-jában van, tehát nyuodtan írható, és az mpd conf fájl is ezt a beállítást tartalmazza.
Így aztán induláskor egy nekem megfelelő alap beállítás töltődik be, normál üzemben pedig nem kell aggódni azSD kártya fáradása miatt.

Szerző:  Konzol [ 2018.10.06. 09:17 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Ezzel gyakorlatilag el is készült az optimalizált lejátszó.
Remekül szól, tábla gépről,telefonról PC-ről egyszerűen vezérelhető. Persze sok változtatást lehet rajta csinálni.
Pl. az mpd-ben engedélyezni a curl plugint, vagy az ffmpeg-et - újból le kell fordítani - és telepíteni az upmpdcli-t, ha mondjuk straem-et szeretne hallgatni az ember. Abban az esetben, ha valamkinek mountolni szeretné a
windows megosztást, annak szüksége lesz a cifs-utils csomagra
Kód:
apt install -y cifs-utils


Lehetőség van az egyes mpd verziókat összevetni. Lefordítva pl. a 0.19.12_rtopt verziót
Kód:
killall mpd
/usr/bin/mpd_0.19.12_rtopt /etc/mpd.conf_ö.19.12_rtopt


mpd verzió váltás ha mondjuk a 0.19.12 jobban tetszik

Kód:
rm /usr/bin/mpd
ln -s /usr/bin/mpd_0.19.12_rtopt /usr/bin/mpd
rm /etc/mpd.conf
ln -s /etc/mpd.conf_0.19_12_rtopt /etc/mpd.conf

Szerző:  Konzol [ 2018.10.12. 19:20 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Új kernel 5.64-es számmal letölthető.

Szerző:  Konzol [ 2018.10.18. 19:59 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Az mpd-0.21 végleges verziójához nincs még rtopt folt. A legutolsó elérhető verzió használata:

Szükség lesz a megfelelő patch fájlra. Föl kell másolni az SOC-ra, az /usr/local/src könyvtárba
A patch letölthető innen:

https://onedrive.live.com/?cid=CE384832 ... 8DA832!105

Kód:
cd /usr/local/src

git clone -n https://github.com/MusicPlayerDaemon/MPD
cd MPD
git checkout 9c617607136fa88f11b1d030471ecaaa6a052c4c
 git rebase -i HEAD~1
patch -p1 < ../mpd-0.21git-9c617607136fa88f11b1d030471ecaaa6a052c4c-rtopt20180418.patch
 cp ../mpd-0.20.18/mpdconfig_min.sh ./
./autogen.sh
./mpdconfig_min.sh
make -j2
strip --strip-all src/mpd
cp src/mpd /usr/bin/mpd_0.21_git



Használható az mpd-0.20 konfig fàjlja, ügyelve rá, hogy az audio buffer mérete legfeljebb 65536 lehet.

Szerző:  Konzol [ 2018.10.20. 08:44 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Az audio buffer felső korlátja 65536 a git-ről letöltött verzióban. Ez módosítható az mpd forrásában.

Kód:
cd /usr/local/src/MPD

mcedit src/Main.cxx



A kód 315 sorát kell módosítani ( eredetileg 1<<15 )

Azt tudni kell, hogy az mpd.conf fájlban megadott buffer értéknek összhangban kell lennia a hardver lehetőségeivel, hogy az mpd le tudja foglalni a szükséges memóriát.

Kód:
...

   if (buffered_chunks >= 1 << 18)                                                                                                         
                FormatFatalError("buffer size \"%lu\" is too big",                                                                             
                                 (unsigned long)buffer_size);
...


A buffer_before_play változó felső korlátja 80%
Magyarázat erre a korlátra található a forráskódban. Én még nem tapasztaltam gondot nagyobb értékénél.

A korlát a fenti fájl 331. sorában talàlható:

Kód:
               if (perc > 80) {                                                                                                               
                        /* this upper limit should avoid deadlocks                                                                             
                           which can occur because the DecoderThread                                                                           
                           cannot ever fill the music buffer to                                                                                 
                           exactly 100%; a few chunks always need to                                                                           
                           be available to generate silence in                                                                                 
                           Player::SendSilence() */                                                                                             
                        FormatError(config_domain,                                                                                             
                                    "buffer_before_play is too large (%f%%), capping at 80%%; please fix your configuration",                   
                                    perc);                                                                                                     
                        perc = 80;                                                                                                             
                }



Módosítva a 80-as értéket a korlát föloldható. A változtatások után az mpd-t újra kell fordítani.

Szerző:  Konzol [ 2018.10.21. 08:08 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Az ALSA-nak van egy érdekes segédprogramja ami latency néven fut
[url]
http://www.alsa-project.org/main/index. ... _latency.c
[/url]

Forrásból érhető el Armbian alatt.
Kód:

cd /usr/share/doc/libasound2-dev/examples
mkdir ../include
cp /usr/include/alsa/asoundlib.h ../include/
gunzip latency.c.gz

gcc latency.c -o latency -lasound -lm

strip latency

./latency -m 128 -M 128 -p -S 99


Más Linux alapú lejátszókon is lehet próbálgatni. :):)

Szerző:  cyberpalko [ 2018.12.10. 01:16 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Mit kell tenni usb háttértárolóról való zenéléshez?

Szerző:  Konzol [ 2018.12.10. 06:14 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Engedélyezni az USB támogatást a kernelben - az optimalizált kernel nem tartalmazza - , ha nem azt a kernelt használod, akkor a boot paraméterek közül ki kell venni az usb tiltását -nousb.

Ekkor mar latja majd az usb eszközt a kernel.

Szerző:  Konzol [ 2019.06.11. 20:12 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Érdekes holmi az mpd. Fordítottam egy 0.21.10 sorozatú mpd-t, erőteljesen minimalista stílusban. Hogy önmagában mennyire jó, vagy sem az most lényegtelen. Az viszont meglehetősen aggasztó, hogy FLAC fájlokat lejátszva másképp szól, ha ffmpeg engedélyezve, vagy tiltva van. Sajnos a dekóderek prioritása bele van drótozva az mpd-be. Korábban létezett egy patch, amivel ezeket lehetett módosítani - pl FLAC-t a flac plugin dekódolja és ne az ffmpeg - , most nincs ilyen. Sajnos így a forráskód átnézése nélkül nehézkes megmondani mivel dekódolódik modjuk egy FLAC file. Gyanús, hogy ffmpeg-gel, ha engedélyezett, merthogy az ffmeg tiltása volt a megoldás a néha lefagyó adatbázis frissítéseknek tisztán csak flac fájlokat tartalmazó könyvtárakon.
Bele kell nézni a forrásba, sajnos két havonta átszervezik az egész forrásfát:( :(:(

Szerző:  Konzol [ 2019.07.17. 09:04 ]
Hozzászólás témája:  Re: Optimalizált lejátszó Allwinner H3 alapokon

Linux alapú NAS-okon hasznos lehet az alábbi script. Ez megkeresi a nagy felbontású zenéket az adott könyvtárban, illetve az alkönyvtárakban és kiiírja a mintavételi frekvenciát minden egyes fájlhoz. A soxi nevű programnak telepítve kell lennie.

Kód:
root@nas:/media/Zene# cat ./findhires.sh
#!/bin/bash
IFS=$'\n'
find . -type f -name '*.flac'  |
while read file;
do
#    echo "$file"
    RATE=$( soxi -r "$file" )
    if [ $RATE -eq 88200 ]
    then
   echo ${RATE}"  ---  ${file}"
    fi
    if [ $RATE -eq 176400 ]
    then
   echo ${RATE}"  ---  ${file}"
    fi
    if [ $RATE -eq 96000 ]
    then
   echo ${RATE}"  ---  ${file}"
    fi
    if [ $RATE -eq 192000 ]
    then
   echo ${RATE}"  ---  "${file}

    fi
done

Oldal: 1 / 1 Időzóna: UTC + 1 óra [ nyi ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/