comparison DOCS/tech/playtree-hun @ 4959:7399c0dbd793

.sonak, hogy ne gorbuljon sirasra az.. arca - meg ha nevnapja nincs is
author gabucino
date Wed, 06 Mar 2002 23:16:33 +0000
parents
children
comparison
equal deleted inserted replaced
4958:ca6f6b35baf4 4959:7399c0dbd793
1
2 2 stuff van. A playtree maga, meg az iterator.
3 A playtree testesiti meg az adatot, az iteratort meg az mplayer
4 hasznalja arra hogy egyik bejegyzesrol a masikra lepjen
5
6 Eloszor, a play_tree struct :
7
8
9 struct play_tree {
10 play_tree_t* parent;
11 play_tree_t* child;
12 play_tree_t* next;
13 play_tree_t* prev;
14
15 play_tree_param_t* params;
16 int loop;
17 char** files;
18 int entry_type;
19 };
20
21 A play_tree_t* tartalmazza a linkeket a 4 iranyba, a params tartalmazza
22 az adott bejegyzes osszes parameteret, a loop 1ertelmu (loop < 0 vegtelen
23 loopot jelent), a files tartalmazza az adott bejegyzes osszes file-jat,
24 es az entry_type kurvaegyertelmuen az adott bejegyzes tipusat adja meg
25 (node, file, dvd, vcd, tv)
26
27 Egy bejegyzes egynel tobb filet is tartalmazhat, mie'?
28
29 Mert egy bejegyzes lehet network stream is, es altalaban egynel tobb
30 szerver van. De mind ugyanazt kuldi, sz'al ez egy olyan bejegyzes
31 aminek tobb forrasa van.
32
33 Es mit basszak ezzel a szarral?
34
35 Eloszor csinalj egy entryt a play_tree_new func segitsegevel. Ez letrehozza
36 a structot, es default ertekekkel tolti fel.
37 Eztan ez lehet node vagy leaf is. Node lesz rogton, ha a play_tree_set_child
38 vagy a play_tree_set_parent segitsegevel odalinkeled egy masikhoz.
39 Vagy leaf lesz, ha a play_tree_add_file-t nyomod ra.
40 Ha egy bejegyzes legalabb 1 filet tartalmaz, nem lehet node (egy assert
41 lesz raised) es ha egy bejegyzesnek van egy childje amihez nem adhatsz
42 filet (?) (itt is assert lesz)
43 Aztan hogy letrehozz egy listat a bejegyzesekrol, hasznald a play_tree_
44 _append_entry-t, a play_tree_prepend_entry-t vagy a play_tree_insert_entryt.
45 Ezek kozul barmelyikben hasznalhatod a lista barmelyik bejegyzeset elso
46 argumentumkent, nem csak az elsot. Ugyanez ervenyes arra amikor egy
47 node childjet allitod, a child argumentum barmelyik, listaban levo
48 bejegyzes lehet.
49 A bejegyzes treebol valo kiszedesehez hasznald a play_tree_removet. Ha a
50 masodik arg (free_it) true, akkor felszabaditja, ha a bejegyzest freezni
51 kell, es a harmadik arg is true, akkor a childjeit is.
52
53 Amikor a tree kesz, hasznalhatod a play_tree_cleanupot hogy eltavolitsd az
54 osszes nemhasznalt bejegyzest.
55
56 Playlist betoltesehez hasznald a parse_playtree-t ami egy stream_t-t fogad
57 argumentumkent, vagy a parse_playlist_file-t ami filenevet.
58 Mind2 funkcio NULL-t ad vissza hiba eseten, vagy ha egy uj (torolt)
59 fa eseten, amit hozzaadhatsz valahova a treedbe. (?)_
60
61 Hogy lehet DVD-t VCD-t TV-t?
62
63 igy
64 dvd://x where x is the title number.
65 vcd://x where x is the track number
66 tv://x where x is the channel
67
68
69 Kesz a playtreem, mit basszak a play_tree_iter-rel?
70
71 Ez egy iterator arra a celra hogy a treet atfesuljed jol.
72 <bazmeg ezt a mondatot szerintem o se ertette - SKIP>
73 Ezt a play_tree_iter_new-vel hozod letre, ami argumentumkent egy play_tree_t
74 es egy m_config_t-t eszik, amik aztan arra lesznek hasznalva hogy az
75 egyes bejegyzesek parametereit allitgassad. Miutan az iter pontot jol
76 semmibe krealtad, init az elso lepest. A listaban egy masik bejegyzesre
77 torteno atlepeshez hasznald a play_tree_iter_step-et. A masodik
78 argumentum a lepes iranya, pozitiv ertekek elore, negativok hatra, es
79 0 nem mozdul. A harmadik meg azt mondja meg hogy erdekel-e a node vagy se.
80 Ha igen, az iterator megall a nodeknel, maskulonben a kovetkezo
81 ervenyes bejegyzeshez megy.
82 This function return different values :
83 PLAY_TREE_ITER_ERROR : egyertelmu
84 PLAY_TREE_ITER_ENTRY : entryn vagyunk
85 PLAY_TREE_ITER_NODE : nodeon vagyunk
86 PLAY_TREE_ITER_END : targyalason vagyok ;)
87 (( Megj : kene rakni ide egy PLAY_TREE_ITER_BEGININGet a kezdethez.
88 Nemtom mit kene visszadni ilyen esetben. PLAY_TREE_ITER_ERROR ? ))
89
90 Van meg a play_tree_iter_up_step ami egy loop megtoresere vagy az adott
91 lista skipelesere jo. Ugyanazok az argok mint a play_tree_iter_stepnel.
92 A kulonbseg az hogy ez visszamehet a jelenlegi lista parentjehez, es az
93 argumentumok szerint lephet.
94
95 Eztan amikor az iter visszadta a PLAY_TREE_ITER_ENTRYt, hasznalhatod
96 a play_tree_iter_get_file-t hogy megkapd a filet. Ha egynel tobbszor
97 hivod meg, visszaadja az adott bejegyzeshez tartozo kovetkezo filet,
98 vagy loopolja a listat ha nincs tobb file. Megnezheted hogy hany
99 file all rendelkezesre az iter->num_files-sel (?) es hogy melyik adta
100 vissza, azt meg az iter->file-al (?).
101 Ha a bejegyzes DVD,VCD vagy tv, a visszaadott string nem file, hanem
102 "DVD title x", "VCD track x" or "TV channel x".
103 Hogy ezeket megkulonboztessuk egy normalis filetol, lehet csekkolni
104 az iter->tree->entry_type-ot. Tartalmazhat :
105 PLAY_TREE_ENTRY_DVD, PLAY_TREE_ENTRY_VCD,
106 PLAY_TREE_ENTRY_TV or PLAY_TREE_ENTRY_FILE.
107
108 Ha csekkelni akarsz meg az iterrel, mint pl hogy a kovetkezo
109 bejegyzes helyes-e, egy klont kell letrehoznod a play_tree_iter_new_copy-val.
110 Ez az iter nem fogja befolyasolni a configot, szal azt qrsz vele amit akarsz.
111
112 Es amikor annyit basztal az iterrel amennyit akartal, szabaditsd meg
113 szenvedeseitol a play_tree_iter_free-vel.
114
115
116 Miutan megvolt config parsing, az iterator az mplayer.c-ben jon letre.
117 Meg, a stream megnyitasa utan, ha a stream egy playlist, behelyettesiti
118 a bejegyzest amelyik a playlistet tarolta azzal mi a parsing eredmenye.
119 Az event handlingben megnezi hogy egy lepes megoldhato-e, stb. Es vegul
120 a vegen a kovetkezo bejegyzesre m1.