annotate DOCS/tech/tech-hun.txt @ 1225:9b974dd1faf0

*** empty log message ***
author gabucino
date Mon, 25 Jun 2001 06:31:33 +0000
parents fadb8eeff7a8
children 4f61dc71a8e2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
1 Nos, akkor leirom, hogyan is működik ez az egész.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
2
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
3 A fő modulok:
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
4
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
5 1. streamer.c: ez az input layer, azaz ez olvassa a filet, VCD-t vagy stdin-t.
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
6 amit tudnia kell: megfelelő sectoronkenti bufferelés, seek, skip funkciók,
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
7 byte-onkénti ill. tetszőleges méretű blockonkénti olvasás.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
8 Egy stream (input device/file) leírására a stream_t struktura szolgál.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
9
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
10 2. demuxer.c: ez végzi az input szétszedését audio és video csatornákra,
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
11 és a kiválasztott csatornák bufferelt package-enkénti olvasását.
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
12 A demuxer.c inkább csak egy framework, ami közös minden input
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
13 formátumra, és az egyes formátumokhoz (mpeg-es,mpeg-ps, avi, avi-ni, asf)
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
14 külön parser van, ezek a demux_*.c fileokban vannak.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
15 A hozza tartozo struktura a demuxer_t. osszesen egy demuxer van.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
16
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
17 2.a. demux_packet_t, azaz dp.
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
18 ez egy darab chunk-ot (avi) vagy packet-et (asf,mpg) tartalmaz.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
19 memoriaban ezek lancolt listaban vannak, mivel kulonbozo meretuek.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
20
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
21 2.b. demuxer stream, azaz ds.
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
22 struct: demux_stream_t
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
23 minden egyes csatornahoz (a/v) tartozik egy ilyen.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
24 ez tartalmazza a stream-hez tartozo packeteket (lasd. 2.a.)
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
25 egyelore demuxer-enkent 3 ilyen lehet:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
26 - hang (d_audio)
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
27 - kep (d_video)
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
28 - DVD felirat (d_dvdsub)
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
29
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
30 2.c. stream header. 2 fele van (egyelore): sh_audio_t es sh_video_t
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
31 ez tartalmaz minden, a dekodolashoz szukseges parametert, igy az input
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
32 es output buffereket, kivalasztott codecet, fps/framerate stb adatokat.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
33 Annyi van belole, ahany stream van a fileban tarolva. Lesz minimum egy
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
34 a videohoz, ha van hang akkor ahhoz is, de ha tobb audio/video stream
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
35 is van, akkor mindegyikhez lesz egy ilyen struct.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
36 Ezeket avi/asf eseten a header alapjan tolti fel a header beolvaso,
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
37 mpeg eseten pedig a demux_mpg.c fogja letrehozni ha egy uj streamet
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
38 talal. Uj stream eseten ====> Found audio/video stream: <id> jelenik meg.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
39
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
40 A kivalasztott stream header es a hozza tartozo demuxer stream kolcsonosen
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
41 hivatkoznak egymasra (ds->sh es sh->ds) az egyszerubb hasznalat miatt.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
42 (igy a funkciotol fuggoen eleg vagy csak a ds vagy csak az sh atadasa)
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
43
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
44 Pelda: van egy .asf fileunk, abban 6 db stream, ebbol 1 audio es 5 video.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
45 A header beolvasasakor letre fog jonni 6 db sh struct, 1 audio es 5 video.
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
46 Amikor elkezdi olvasni a packeteket, az elso talalt audio es video
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
47 packethez tartozo streamet
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
48 kivalasztja, es ezekre allitja be a d_audio es d_video sh pointereit.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
49 Igy kesobbiekben mar csak ezeket a streameket olvassa, a tobbit nem.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
50 Persze ha az user masik streameket szeretne kivalasztani, akkor
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
51 force-olhatja a -aid es -vid kapcsolokkal.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
52 Jo pelda erre a DVD, ahol nem mindig az angol szinkron hang az elso
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
53 megtalalt stream, es igy random minden vob mas nyelven szolalhat meg :)
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
54 Ilyenkor kell pl. az -aid 128 kaocsolot hasznalni.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
55
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
56 hogy is muxik ez a beolvasosdi?
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
57 - meghivodik a demuxer.c/demux_read_data(), megkapja melyik ds-bol
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
58 (audio vagy video), mennyi byteot es hova (memoriacim) szeretnenk
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
59 beolvasni. ezt hivogatjak gyakorlatilag a codec-ek.
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
60 - ez megnezi,hogy az adott ds bufferében van-e valami, ha igen akkor
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
61 onnan olvas amennyit kell. ha nincs/nincs eleg, akkor meghivja
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
62 a ds_fill_buffer()-t ami:
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
63 - megnezi hogy az adott ds-ben vannak-e bufferelve csomagok (dp-k)
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
64 ha igen, akkor a legregebbit atrakja a bufferbe es olvas tovabb.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
65 ha ures a lancolt lista, akkor meghivja a demux_fill_buffer()-t:
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
66 - ez az input formatumnak megfelelo parser-t meghivja ami olvassa
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
67 tovabb a filet, es a talalt csomagokat rakja be a megfelelo bufferbe.
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
68 na ha mondjuk audio csomagot szeretnenk, de csak egy rakat video csomag
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
69 van, akkor jon elobb-utobb a DEMUXER: Too many (%d in %d bytes) audio
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
70 packets in the buffer... hibauzenet.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
71
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
72 Eddig kb tiszta ugy, ezt akarom majd atrakni kulon lib-be.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
73
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
74 na nezzuk tovabb:
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
75
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
76 3. mplayer.c - igen, o a fonok :)
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
77 az idozites eleg erdekesen van megoldva, foleg azert mert minden
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
78 fileformatumnal maskepp kell/celszeru, es neha tobbfele keppen is lehet.
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
79
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
80 van egy a_frame es egy v_frame nevu float valtozo, ez tarolja az epp
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
81 lathato/hallhato a/v poziciojat masodpercben.
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
82
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
83 A lejatszo ciklus felepitese:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
84 while(not EOF) {
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
85 fill audio buffer (read & decode audio) + increase a_frame
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
86 read & decode a single video frame + increase v_frame
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
87 sleep (wait until a_frame>=v_frame)
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
88 display the frame
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
89 apply A-V PTS correction to a_frame
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
90 check for keys -> pause,seek,...
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
91 }
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
92
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
93 amikor lejatszik (hang/kep) akkor a lejatszott valami idotartamaval
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
94 noveli a megfelelo valtozot:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
95 - audional ez a lejatszott byteok / sh_audio->o_bps
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
96 megj: i_bps = tomoritett byteok szama egy masodpercnyi hanghoz
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
97 o_bps = tomoritetlen byteok szama egy masodpercnyi hanghoz
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
98 (ez utobbi == bps*samplerate*channels)
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
99 - videonal ez altalaban az sh_video->frametime.
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
100 Ez altalaban == 1.0/fps, persze meg kell jegyeznem hogy videonal nem
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
101 igazan szamit az fps, asf-nel pl. nincs is olyan, ahelyett duration
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
102 van es framenkent valtozhat.
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
103 mpeg2-nel pedig repeat_count van ami 1-2.5 idotartamban elnyujtja
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
104 a framet... avi-nal van talan egyedul fix fps, meg mpeg1-nel.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
105
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
106 Na most ez addig nagyon szepen mukodik, amig a hang es kep tokeletes
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
107 szinkronban van, mivel igy vegulis a hang szol, az adja az idozitest,
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
108 es amikor eltelt egy framenyi ido akkor kirakja a kovetkezo framet.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
109 de mi van ha valamiert az input fileban csuszik a ketto?
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
110 Akkor jon be a PTS correction. az input demuxer-ek olvassak a csomagokkal
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
111 egyutt a hozzajuk tartozo PTS-t (presentation timestamp) is, ami alapjan
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
112 eszreveheto ha el van csuszva a ketto. ilyenkor egy megadott maximalis
87
061aab88aa9e fixed some typos
arpi_esp
parents: 86
diff changeset
113 hataron (lasd -mc opcio) belul kepes az mplayer korrigalni az a_frame
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
114 erteket. a korrekciok osszege van a c_total-ban.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
115
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
116 persze ez meg nem minden szinkron ugyben, van meg nemi gaz.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
117 pl. az hogy a hangkartya eleg rendesen kesleltet, ezt az mplayernek
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
118 korrigalnia kell! Az osszes audio kesleltetes masodpercben ezek osszege:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
119 - az utolso timestamp (PTS) ota beolvasott byteok:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
120 t1 = d_audio->pts_bytes/sh_audio->i_bps
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
121 - Win32/ACM eseten az audio input bufferben tarolt byteok:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
122 t2 = a_in_buffer_len/sh_audio->i_bps
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
123 - az audio out bufferben tarolt tomoritetlen byteok:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
124 t3 = a_buffer_len/sh_audio->o_bps
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
125 - a hangkartya buffereben (vagy DMA bufferben) tarolt, meg nem
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
126 lejatszott byteok:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
127 t4 = get_audio_delay()/sh_audio->o_bps
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
128
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
129 Ezekbol kiszamolhato egeszen pontosan, hogy az epp hallhato hanghoz
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
130 milyen PTS tartozik, majd ezt osszevetve a video-hoz tartozo PTS-el
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
131 meg is kapjuk az A-V eltereset!
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
132
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
133 avi-nal sem egyszeru az elet. ott a 'hivatalos' idozitesi mod a
87
061aab88aa9e fixed some typos
arpi_esp
parents: 86
diff changeset
134 BPS-alapu, azaz a headerben le van tarolva hany tomoritett audio
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
135 byte tartozik egy masodpercnyi (fps darab) kephez.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
136 ez persze nem mindig mukodik... miert is mukodne :)
87
061aab88aa9e fixed some typos
arpi_esp
parents: 86
diff changeset
137 ezert en megcsinaltam hogy az mpeg-nel hasznalatos sectoronkenti
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
138 PTS erteket emulalom avi-ra is, azaz az AVI parser minden beolvasott
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
139 chunk-nal szamol egy kamu PTS-t a framek tipusa alapjan. es ez
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
140 alapjan idozitek. es van amikor ez mukodik jobban.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
141 persze itt meg bejatszik az is, hogy AVI-nal altalaban elore letarolnak
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
142 egy nagyobb adag hangot, es csak utana kezdodik a kep. ezt persze
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
143 bele kell szamolni a kesleltetesbe, ez az Initial PTS delay.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
144 ilyen persze 2 is van, az egyik a headerben le is van irva, es
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
145 nem nagyon hasznlajak :) a masik sehol nincs leirva de hasznaljak, ezt
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
146 csak merni lehet...
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
147
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
148 3.a. audio playback:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
149 par szo az audio lejatszasrol:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
150 az egeszben nem maga a lejatszas a nehez, hanem:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
151 1. hogy tudjuk mikor lehet irni a bufferbe, blocking nelkul
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
152 2. hogy tudjuk, mennyit jatszott mar le abbol amit a bufferbe irtunk
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
153 Az 1. az audio dekodolashoz kell, valamint hogy a buffert mindig teli
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
154 allapotban tudjuk tartani (igy sose fog megakadni a hang).
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
155 A 2. pedig a korrekt idoziteshez szukseges, ugyanis nemely hangkartya
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
156 akar 3-7 masodpercet is kesleltet, ami azert nem elhanyagolhato!
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
157 Ezek megvalositasara az OSS tobbfele lehetoseget is kinal:
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
158 - ioctl(SNDCTL_DSP_GETODELAY): megmondja hany lejatszatlan byte
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
159 varakozik a hangkartya bufferjeben -> idoziteshez kivallo,
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
160 de nem minden driver tamogatja :(
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
161 - ioctl(SNDCTL_DSP_GETOSPACE): megmondja mennyit irhatunk a kartya
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
162 bufferebe blocking nelkul. ha a driver nem tudja a GETODELAY-t,
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
163 akkor ezt hasznalhatjuk arra is, hogy megtudjuk a kesleltetest.
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
164 - select(): meg kene mondja, hogy irhatunk-e a kartya bufferebe
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
165 blocking nelkul. azt, hogy emnnyit irhatunk, nem mondja meg :(
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
166 valamint sok driverrel egyaltalan nem, vagy rosszul mukodik :((
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
167 csak akkor hasznalom, ha egyik fenti ioctl() sem mukodik.
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
168
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
169 4. codecek. ezek kulonbozo lib-ek szanaszet mindenfelol.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
170 mint pl. libac3, libmpeg2, xa/*, alaw.c, opendivx/*, loader, mp3lib.
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
171 az mplayer.c hivogatja oket amikor egy egy darab hangot vagy framet
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
172 kell lejatszani (lasd 3. pont elejen).
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
173 ezek pedig hivjak a megfelelo demuxert hogy megkapjak a tomoritett
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
174 adatokat (lasd 2. pont).
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
175 parameterkent a megfelelo stream headert (sh_audio/sh_video) kell
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
176 atadni, ez elvileg tartalmaz minden infot ami szukseges a
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
177 dekodolashoz (tobbek kozott a demuxert is: sh->ds).
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
178 A codecek szeparalasa folyamatban van, az audio mar el van kulonitve
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
179 (lasd. dec_audio.c), a videon meg dolgozunk. Cel, hogy ne az mplayer.c
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
180 kelljen tudja milyen codecek vannak es hogy kell oket hasznalni, hanem
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
181 egy kozos init/decode audio/video functiont kelljen csak meghivnia.
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
182
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
183 5. libvo: ez vegzi a kep kirakasat.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
184
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
185 Az img_format.h-ban definialva vannak konstansok a kulonbozo pixel-
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
186 formatumokhoz, ezeket kotelezo hasznalni.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
187
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
188 1-1 vo driver a kovetkezoket kell kotelezoen implementalja:
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
189
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
190 query_format() - lekerdezi hogy egy adott pixelformat tamogatott-e.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
191 return value: flags:
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
192 0x1 - supported (by hardware or with conversion)
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
193 0x2 - supported (by hardware, without conversion)
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
194 0x4 - sub/osd supported (has draw_alpha)
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
195 FONTOS: minden vo driver kotelezo tamogassa az YV12 formatumot, es
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
196 egyiket (vagy mindkettot) a BGR15 es BGR24 kozul, ha kell, konvertalassal.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
197 Ha ezeket nem tamogatja, akkor nem fog minden codec-kel mukodni!
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
198 Ennek az az oka, hogy az mpeg codecek csak YV12-t tudnak eloallitani,
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
199 a regebbi Win32 DLL codecek pedig csak 15 es 24bpp-t tudnak.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
200 Van egy gyors MMX-es 15->16bpp konvertalo, igy az nem okoz kulonosebb
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
201 sebessegcsokkenest!
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
202
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
203 A BPP tablazat, ha a driver nem tud bpp-t valtani:
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
204 jelenlegi bpp: ezeket kell elfogadni:
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
205 15 15
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
206 16 15,16
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
207 24 24
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
208 24,32 24,32
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
209
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
210 Ha tud bpp-t valtani (pl. DGA 2, fbdev, svgalib) akkor ha lehet, be kell
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
211 valtani a kert bpp-re. Ha azt a hardver nem tamogatja, akkor a legkozelebbi
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
212 modra (15 eseten 16-ra, 24 eseten 32-re) kell valtani es konvertalni!
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
213
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
214 init() - ez hivodik meg a legelso frame kirakasa elott - bufferek foglalasa
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
215 stb a celja.
861
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
216 van egy flags parameter is (regen fullscreen volt a neve):
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
217 0x01 - fullscreen (-fs)
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
218 0x02 - vidmode switch (-vm)
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
219 0x04 - scaling enabled (-zoom)
c80faaa2c2c1 some updates
arpi_esp
parents: 544
diff changeset
220 0x08 - flip image (upside-down)
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
221
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
222 draw_slice(): ez planar YV12 kepet rak ki (3 db plane, egy teljes
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
223 meretu ami a fenyerot (Y) tartalmazza, es 2 negyedakkora, ami a
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
224 szin (U,V) infot). ezt hasznaljak az mpeg codecek (libmpeg2,opendivx).
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
225 ez mar tud olyat hogy nem az egesz kep kirakasa, hanem csak kis
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
226 reszletek updatelese: ilyenkor a sarkanak es a darabka meretenek
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
227 megadasaval lehet csinalni.
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
228
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
229 draw_frame(): ez a regebbi interface, ez csak komplett framet rak ki,
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
230 es csak packed formatumot (YUY2 stb, RGB/BGR) tud.
86
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
231 ezt hasznaljak a win32 codecek (divx,indeo stb).
f61bcfc02d2d how does mplayer works - hungarian doc
arpi_esp
parents:
diff changeset
232
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
233 draw_alpha(): ez rakja ki a subtitle-t es az OSD-t.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
234 hasznalata kicsit cseles, mivel ez nem a libvo API resze, hanem egy
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
235 callback jellegu cucc. a flip_page() kell meghivja a vo_draw_text()-et
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
236 ugy, hogy parameterkent atadja a kepernyo mereteit es a pixelformatumnak
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
237 megfelelo draw_alpha() implementaciot (function pointer).
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
238 Ezutan a vo_draw_text() vegigmegy a kirajzolando karaktereken, es egyenkent
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
239 meghivja minden karakterre a draw_alpha()-t.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
240 Segitseg keppen az osd.c-ben meg van irva a draw_alpha mindenfele
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
241 pixelformatumhoz, ha lehet ezt hasznald!
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
242
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
243 flip_page(): ez meghivodik minden frame utan, ez kell tenylegesen
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
244 megjelenitse a buffert. double buffering eseten ez lesz a 'swapbuffers'.
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
245
971
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
246 6. libao2: ez vezerli a hang lejatszast
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
247
971
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
248 A libvo-hoz (lasd 5.) hasonloan itt is kulonbozo driverek vannak, amik
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
249 egy kozos API-t (interface) valositanak meg:
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
250
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
251 static int control(int cmd,int arg);
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
252 Ez egy altalanos celu fuggveny, a driverfuggo es egyeb specialis parameterek
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
253 olvasasara/beallitasara. Egyelore nem nagyon hasznalt.
544
b6cfefccd071 some updates, and libvo description completed
arpi_esp
parents: 404
diff changeset
254
971
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
255 static int init(int rate,int channels,int format,int flags);
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
256 Driver initje, ilyenkor kell megnyitni a devicet, beallitani samplerate,
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
257 channels, sample format parametereket.
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
258 Sample format: altalaban AFMT_S16_LE vagy AFMT_U8, tovabbi definiciokert
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
259 lasd. dec_audio.c ill. linux/soundcard.h fileok!
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
260
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
261 static void uninit();
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
262 talald ki.
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
263 na jo, segitek: lezarja a devicet, kilepeskor (meg nem) hivodik meg.
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
264
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
265 static void reset();
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
266 reseteli a devicet. egesz pontosan a bufferek torlesere szolgal,
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
267 tehat hogy a reset() utan mar ne szoljon tovabb az amit elotte kapott.
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
268 (pause ill. seek eseten hivodik meg)
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
269
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
270 static int get_space();
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
271 vissza kell adja hogy hany byte irhato az audio bufferbe anelkul hogy
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
272 blockolna (varakoztatna a hivo processt). amennyiben a buffer (majdnem)
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
273 tele van, 0-t kell visszaadni!
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
274 ha sosem ad vissza 0-at akkor nem fog mukodni az MPlayer!
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
275
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
276 static int play(void* data,int len,int flags);
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
277 lejatszik egy adag hangot, amit a data cimu memoriateruleten kap, es len
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
278 a merete. a flags meg nem hasznalt. az adatokat at kell masolnia, mert a
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
279 hivas utan felulirodhatnak! nem kell feltetlen minden byetot felhasznalni,
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
280 hanem azt kell visszaadnia mennyit hasznalt fel (masolt a bufferbe).
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
281
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
282 static int get_delay();
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
283 vissza kell adja hogy hany byte varakozik az audio bufferben. lehetoleg
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
284 minel pontosabban, mert ettol fugg az egesz idozites!
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
285 legrosszabb esetben adja vissza a buffer meretet.
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
286
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
287 !!! Mivel a kep a hanghoz (hangkartyahoz) van szinkronizalva, igy nagyon
986
fadb8eeff7a8 commitus interruptus
gabucino
parents: 971
diff changeset
288 !!! fontos hogy a get_space ill. get_delay fuggvenyek korrektul legyenek megirva!
971
dcf8d81eed48 Gabucino oruljel :)
arpi_esp
parents: 861
diff changeset
289