Mercurial > mplayer.hg
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/tech/playtree-hun Wed Mar 06 23:16:33 2002 +0000 @@ -0,0 +1,120 @@ + +2 stuff van. A playtree maga, meg az iterator. +A playtree testesiti meg az adatot, az iteratort meg az mplayer +hasznalja arra hogy egyik bejegyzesrol a masikra lepjen + +Eloszor, a play_tree struct : + + +struct play_tree { + play_tree_t* parent; + play_tree_t* child; + play_tree_t* next; + play_tree_t* prev; + + play_tree_param_t* params; + int loop; + char** files; + int entry_type; +}; + +A play_tree_t* tartalmazza a linkeket a 4 iranyba, a params tartalmazza +az adott bejegyzes osszes parameteret, a loop 1ertelmu (loop < 0 vegtelen +loopot jelent), a files tartalmazza az adott bejegyzes osszes file-jat, +es az entry_type kurvaegyertelmuen az adott bejegyzes tipusat adja meg +(node, file, dvd, vcd, tv) + +Egy bejegyzes egynel tobb filet is tartalmazhat, mie'? + +Mert egy bejegyzes lehet network stream is, es altalaban egynel tobb +szerver van. De mind ugyanazt kuldi, sz'al ez egy olyan bejegyzes +aminek tobb forrasa van. + +Es mit basszak ezzel a szarral? + +Eloszor csinalj egy entryt a play_tree_new func segitsegevel. Ez letrehozza +a structot, es default ertekekkel tolti fel. +Eztan ez lehet node vagy leaf is. Node lesz rogton, ha a play_tree_set_child +vagy a play_tree_set_parent segitsegevel odalinkeled egy masikhoz. +Vagy leaf lesz, ha a play_tree_add_file-t nyomod ra. +Ha egy bejegyzes legalabb 1 filet tartalmaz, nem lehet node (egy assert +lesz raised) es ha egy bejegyzesnek van egy childje amihez nem adhatsz +filet (?) (itt is assert lesz) +Aztan hogy letrehozz egy listat a bejegyzesekrol, hasznald a play_tree_ +_append_entry-t, a play_tree_prepend_entry-t vagy a play_tree_insert_entryt. +Ezek kozul barmelyikben hasznalhatod a lista barmelyik bejegyzeset elso +argumentumkent, nem csak az elsot. Ugyanez ervenyes arra amikor egy +node childjet allitod, a child argumentum barmelyik, listaban levo +bejegyzes lehet. +A bejegyzes treebol valo kiszedesehez hasznald a play_tree_removet. Ha a +masodik arg (free_it) true, akkor felszabaditja, ha a bejegyzest freezni +kell, es a harmadik arg is true, akkor a childjeit is. + +Amikor a tree kesz, hasznalhatod a play_tree_cleanupot hogy eltavolitsd az +osszes nemhasznalt bejegyzest. + +Playlist betoltesehez hasznald a parse_playtree-t ami egy stream_t-t fogad +argumentumkent, vagy a parse_playlist_file-t ami filenevet. +Mind2 funkcio NULL-t ad vissza hiba eseten, vagy ha egy uj (torolt) +fa eseten, amit hozzaadhatsz valahova a treedbe. (?)_ + +Hogy lehet DVD-t VCD-t TV-t? + +igy + dvd://x where x is the title number. + vcd://x where x is the track number + tv://x where x is the channel + + +Kesz a playtreem, mit basszak a play_tree_iter-rel? + +Ez egy iterator arra a celra hogy a treet atfesuljed jol. +<bazmeg ezt a mondatot szerintem o se ertette - SKIP> +Ezt a play_tree_iter_new-vel hozod letre, ami argumentumkent egy play_tree_t +es egy m_config_t-t eszik, amik aztan arra lesznek hasznalva hogy az +egyes bejegyzesek parametereit allitgassad. Miutan az iter pontot jol +semmibe krealtad, init az elso lepest. A listaban egy masik bejegyzesre +torteno atlepeshez hasznald a play_tree_iter_step-et. A masodik +argumentum a lepes iranya, pozitiv ertekek elore, negativok hatra, es +0 nem mozdul. A harmadik meg azt mondja meg hogy erdekel-e a node vagy se. +Ha igen, az iterator megall a nodeknel, maskulonben a kovetkezo +ervenyes bejegyzeshez megy. +This function return different values : +PLAY_TREE_ITER_ERROR : egyertelmu +PLAY_TREE_ITER_ENTRY : entryn vagyunk +PLAY_TREE_ITER_NODE : nodeon vagyunk +PLAY_TREE_ITER_END : targyalason vagyok ;) +(( Megj : kene rakni ide egy PLAY_TREE_ITER_BEGININGet a kezdethez. +Nemtom mit kene visszadni ilyen esetben. PLAY_TREE_ITER_ERROR ? )) + +Van meg a play_tree_iter_up_step ami egy loop megtoresere vagy az adott +lista skipelesere jo. Ugyanazok az argok mint a play_tree_iter_stepnel. +A kulonbseg az hogy ez visszamehet a jelenlegi lista parentjehez, es az +argumentumok szerint lephet. + +Eztan amikor az iter visszadta a PLAY_TREE_ITER_ENTRYt, hasznalhatod +a play_tree_iter_get_file-t hogy megkapd a filet. Ha egynel tobbszor +hivod meg, visszaadja az adott bejegyzeshez tartozo kovetkezo filet, +vagy loopolja a listat ha nincs tobb file. Megnezheted hogy hany +file all rendelkezesre az iter->num_files-sel (?) es hogy melyik adta +vissza, azt meg az iter->file-al (?). +Ha a bejegyzes DVD,VCD vagy tv, a visszaadott string nem file, hanem +"DVD title x", "VCD track x" or "TV channel x". +Hogy ezeket megkulonboztessuk egy normalis filetol, lehet csekkolni +az iter->tree->entry_type-ot. Tartalmazhat : + PLAY_TREE_ENTRY_DVD, PLAY_TREE_ENTRY_VCD, +PLAY_TREE_ENTRY_TV or PLAY_TREE_ENTRY_FILE. + +Ha csekkelni akarsz meg az iterrel, mint pl hogy a kovetkezo +bejegyzes helyes-e, egy klont kell letrehoznod a play_tree_iter_new_copy-val. +Ez az iter nem fogja befolyasolni a configot, szal azt qrsz vele amit akarsz. + +Es amikor annyit basztal az iterrel amennyit akartal, szabaditsd meg +szenvedeseitol a play_tree_iter_free-vel. + + +Miutan megvolt config parsing, az iterator az mplayer.c-ben jon letre. +Meg, a stream megnyitasa utan, ha a stream egy playlist, behelyettesiti +a bejegyzest amelyik a playlistet tarolta azzal mi a parsing eredmenye. +Az event handlingben megnezi hogy egy lepes megoldhato-e, stb. Es vegul +a vegen a kovetkezo bejegyzesre m1.