Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Vláďa J

Stran: [1] 2 3
1
Vývoj / Re:V čem napsat jednoduché GUI?
« kdy: 10. 04. 2014, 13:20:17 »
Od GTK poslední dobou všichni utíkají ke Qt. Dá se jmenovat například Avidemux, OpenShot, VLC, celý Unity.

Pokud neni potřeba přístup k lokálnímu disku, doporočuju napsat to celý v Qt/QML. Jednou napsanej program pak běhá bez problémů na všech OS (včetně mobilních). Případně se dá napsat nějaký backend v Pythonu nebo C++. Python je jednodušší, ale odstřelí mobilní platformy.

2
Vývoj / Re:Qt a multimediální backend
« kdy: 24. 02. 2014, 19:21:12 »
Na Windows používá QtMultimedia buďto DirectShow nebo Media Foundation.

Každopádně to nemění nic na tom, že nelze nastavit hlasitost v decibelech na rozdíl od staršího Phononu. Kromě toho je tam nějaká údajná podpora bezešvého přehrávání, které závisí na dekódovacím backendu. Jenže nefunguje ani ve Windows ani v Linuxu (s libVLC ani GStreamerem), takže nevim, kde tedy má vlastně fungovat.

Přehrávání videa budu řešit tak jako tak přes QML Video komponentu, takže to mě netrápí. Jde čistě o hudbu, kde chci, aby to hrálo bez pauz a hlavně aby se daly použít replay gain tagy. Zdá se, že jediná šance je ten moloch GStreamer, protože libVLC také evidentně nezvládá bezešvé přehrávání.

3
Vývoj / Qt a multimediální backend
« kdy: 24. 02. 2014, 15:39:51 »
Hezký den všem,

mám trochu dost specifickou otázku a nevím, jestli mi vůbec bude někdo tady schopný poradit, ale za pokus nic nedám.

Kdysi jsem vytvořil přehrávač primárně pro můj tablet s Windows napsaný v Pythonu a Qt4/QML. K vidění je tady.

Jelikož projekt PySide a s ním i portace Pythonu na mobilní OS (Android, Sailfish, Ubuntu, Tizen) je v podstatě mrtvý, rozhodl jsem se program přepsat do Qt5 a C++. Narazil jsem ale na poměrně zásadní problém.

Základní funkcí, bez které si nedokážu použitelný přehrávač představit, je podpora replay gain, tedy vyrovnání hlasitosti různých skladeb. Funguje to tak, že se soubor oskenuje a do tagu se zapíše hodnota o kolik se má zesílit nebo zeslabit tak, aby všechny skladby hrály stejně hlasitě. V předchozí Qt4 veriz jsem jako backend používal Phonon a ten měl funkci setVolumeDecibel, která umožňovala hlasitost srovnat. V Qt5 se přešlo na QtMultimedia a tato funkce zmizela. Existuje pouze setVolume s rozsahem hodnot 0-100, což je pro moje účely nepoužitelné.

Nastává teda otázka, co dál. Jedna možnost je nabourat se nějak hlouběji pod kapotu QtMultimedia a tam s hlasitostí hýbat. Na to ale rozhodně moje znalosti a schopnosti nejsou dostatečné, s C/C++ teprve začínám. Další možností je použít komplet jiný backend. Napadá mě GStreamer a libVLC.

GStreamer běží na platformách na které mířím - Windows, Linux a Android. Ale je to obrovský balík a hlavně je postavený kolem GTK+. Existuje sice nějaký binding QtGstreamer, ale ten je postavený na zastaralých knihovnách GStreamer 0.10 a zdá se, že vývoj pro 1.x nějak usnul...

Další možností je libVLC. I ta knihovna by měla fungovat na všech požadovaných platformách, ale nemám s ní vůbec žádné zkušenosti. Ale dostupná dokumentace mi přijde poměrně nekompletní a nevím, jestli to není vzhledem k mým slabým znalostem C/C++ příliš low-level záležitost.

Máte s tím někdo nějaké zkušenosti? Také jsem slyšel, že je problém s dynamicky linkovanými knihovnami na Androidu. Je to pravda?

Předem děkuju za jakoukoliv radu.

4
Vývoj / Re:SQL - pomoc s dotazem
« kdy: 27. 10. 2013, 09:37:01 »
Já jsem si myslel, že to píšu docela jasně, ale asi ne. :-D Každopádně díky všem za rady, SQL syntaxi jakž-takž znám, akorát jsem nevěděl, jak spojit výstup ze dvou sloupců do jednoho. Hodnoty samostatně v A a samostatně v B budou vždy unikátní. Co jsem potřeboval poradit, byl operátor UNION, jak radí jholas.

Z dokumentace jsem potom našel:
Citace
The UNION operator selects only distinct values by default. To allow duplicate values, use the ALL keyword with UNION.

Takže to rovnou řeší moje oba dva požadavky. Ještě jednou díky za radu!

5
Vývoj / Re:Použití knihovny (C++)
« kdy: 25. 10. 2013, 10:31:13 »
Tak nakonec jsem si zkompiloval TagLib samostatně pomocí CMake a gcc z command lajny. Pak jí v mym projektu linkuju dynamicky a zdá se, že všechno funguje tak, jak má. Díky všem za rady!

6
Vývoj / SQL - pomoc s dotazem
« kdy: 25. 10. 2013, 10:29:03 »
Ahoj,

potřeboval bych pomoct s SQL dotazem s následujícíma podmínkama:

Mam tabulku v ní dva sloupce A a B s textem. Potřeboval bych do jednoho výstupu dostat kombinaci A a B seřazenou podle abecedy. Problém je ten, že A a B budou v některých případech obsahovat to samý, v tom případě tam chci takový záznam jenom jednou.

Jak si s tím poradit? Je to nějaký jednoduchý postup? Díky!

7
Vývoj / Re:Použití knihovny (C++)
« kdy: 09. 10. 2013, 10:35:23 »
Já používám MinGW verzi Qt. Chtěl bych to všechno kompilovat pomocí toho.

Pokud se tedy vrátím k té TagLib knihovně. Jak ji mám konkrétně použít?

Nakopíroval jsem celý adresář "taglib" s .h a .cpp soubory do adresáře s mým projektem. V potom uvedu v mém kódu #include "taglib/tag.h". Ale při kompilaci nastane problém, že soubory v adresáři taglib linkujou další soubory, které jsou ale v podadresářích a překladač je nevidí. Proč to tak TagLib má? Co s tím?

8
Vývoj / Re:Použití knihovny (C++)
« kdy: 08. 10. 2013, 15:13:31 »
Díky moc za rady. Takže to zkusím přilinkovat staticky a uvidím, jestli se mi to nějak podaří rozběhat...


9
Vývoj / Použití knihovny (C++)
« kdy: 08. 10. 2013, 12:16:38 »
Ahoj,

před časem jsem si pro svoje potřeby napsal hudební přehrávač v PySide (Python + Qt), který používám v autě na tabletu s Windows 7. Problém je v tom, že použitý backend Phonon je ve spojení s DirectShow extrémně nespolehlivý a jsem stále zaseknutý na starých Qt 4 knihovnách. Nezdá se, že by projekt PySide někdy v dohledné době podporu Qt 5 přidal. Kromě toho bych rád můj púřehrávač portoval i na Android a Ubuntu Touch.

Zkrátka situace dospěla do bodu, kdy je nutné přejít z Pythonu na C++. A to je problém, protože C++ skoro vůbec neznám. Není problém implementovat valnou část funkcí v JavaScriptu přímo v QML. Moje původní idea byla, že celý přehrávač bude jenom QML a jediné, na co použiju C++ bude načtení souborů na disku (to přímo z QML nelze). Celé by klaplo nebý toho, že QML objek pro přehrávání MediaPlayer a jeho metaData nefunguje ve Windows a na Androidu jenom omezeně. Načíst vešekrý možný tagy a podle nich vyhledávat v kolekci je přitom základní věc, kterou od přehrávače chci a proč si programuju svůj vlastní.

V Pythonu jsem používal knihovnu MediaInfo, která toho umí načíst opravdu hodně. Bohužel neumí zapisovat dp tagů. Bez toho bych se lehce obešel, ale nenašel jsem nikde verzi pro Android. Takže bych si jí musel nejspíš sám zkompilovat. A když už kompilovat nějakou céčkovou knihovnu, tak proč ne třeba TagLib, která umí všechno. Prostě váhám a nemám dost informací k tomu, abych se mohl rozhodnout. :-)

Za prvé mi není úplně jasný, jaký je z mého pohledu rozdíle mezi dynamickou a statiskou knihovnou. Předpokládám, že pokud používám dynamickou, stačí mi už předem zkompilovaná .dll knihovna (jako jsem jí používal v Pythonu). TagLib je distribuovaná jenom ve formě zdrojáku, takže si jí musím sám zkompilovat, ale to by asi neměl být výrazný problém. Kdybych chtěl použít knihovnu staticky, je to dobrý nápad? Má to pro mě nějaké výhody nebo naopak nevýhody?

Co všechno potřebuju k tomu, abych knihovnu mohl používat? Stačí .dll nebo k tomu potřebuju i hlavičkový soubor? Co je zač soubor s příponou .a? Jak se liší v .cpp souboru použití dynamický a statický knihovny?

Budu rád za odkaz na nějaký text, kde to je vysvětlené. Bohužel skoro všechno, co je na internetu, se týká obyčejného C. Jako IDE používám QtCreator, ale to by asi nemělo hrát zásadní vliv.

Omlouvám se za tolik omáčky okolo. Ale chtěl jsem vysvětlit, že programovat umím a nepředstavuju si to jako Hurvínek válku. Akorát neznám C++ a nechci zabíhat víc do hloubky než je nutný. Většinu věcí chci dělat v JavaScriptu a v C++ pouze načíst adresářový strom (to už mám implementované) a potom soubor po souboru načtat tagy a ukládat je do databáze (to už bude zase v QML přes QSql).

10
Sítě / Re:Monitoring sítě
« kdy: 12. 05. 2013, 22:59:15 »
Díky za tipy, objevil jsem viníka - pulseaudio. Nějaký síťový služby, který vůbec npotřebuje totálně zahlcovaly síť, tak jsem je zakázal a už je to OK.

11
Sítě / Monitoring sítě
« kdy: 11. 05. 2013, 16:25:00 »
Ahoj,

mám Kubuntu 13.04 a hned po spuštění vidím v síťovém provozu, že se něco někam odesílá rychlostí cca 180 KiB/s. Zajímalo by mě, který program nebo služba to má na svědomí. Jak se tohle dá v Linuxu zjistit?

12
Vývoj / Re:Pomoc se strukturou databáze
« kdy: 17. 09. 2012, 10:02:05 »
Po dlouhé době jsem se konečně dostal k tomu, abych začal pracovat na optimalizaci mé databáze. Začal jsem komplet od nuly a tentokrát to, zdá se, funguje. Akorát některé dotazy trvají dle mého názoru neúměrně dlouho a já netuším proč. Je něco špatně na tomto dotazu? Dal by se nějak urychlit?

Kód: [Vybrat]
SELECT title, id, track FROM Library WHERE id IN (SELECT title_ref FROM genre__title WHERE genre_ref = 3) AND id IN (SELECT title_ref FROM artist_album_artist__title WHERE artist_album_artist_ref = 366) AND id IN (SELECT title_ref FROM album__title WHERE album_ref = 236) ORDER BY track ASC
Ono je to z toho celkem vidět, ale vybírám skladby podle žánru, autora a alba. Které skladby to splňují vyhledávám přes asociativní tabulky. Výsledkem jsou pouze 2 skladby, přesto dotaz zabere na pomalejším počítači až desetiny sekund. Nerozumím tomu proč. Očekával bych, že databáze nejprve vyfiltruje vše podle první podmínky, kdy odpadne přes 90% záznamů a potom už porovnává jenom malý množství řádek a další filtry budou mnohem rychlejší. Jenže podle mých pokusů to tak nefunguje. Kde může být problém?

13
Vývoj / Re:Výpis adresářů a souborů v C++
« kdy: 15. 05. 2012, 21:54:02 »
Knihu by to samozřejmě chtělo, ale já si to hlavně vždycky potřebuju prakticky vyzkoušet. Ale už se malinko začínám orientovat. Po prvotním zděšení z céčka už jsem pochopil, že v C++ existuje typ string, můžu proměnný deklarovat i uprostřed programu, existuje typ vektor a další věci, bez kterých bych se asi těžko obešel (respektive dalo by to neúměrně práce). Věci jako metody, třídy, dědění atd. znám z Pythonu, to bude předpokládám analogický, jenom se naučím jinou syntaxi (teda doufám :-)).

Qt knihovny používám už dlouho díky PySide. Ale Python zatím třeba na Androidu neběží, takže musím psát v C++. Tak se to snažím naučit...


14
Vývoj / Re:Výpis adresářů a souborů v C++
« kdy: 15. 05. 2012, 19:40:55 »
Ve finále to chci slinkovat s Qt knihovnama, takže to určitě bude C++. Ale na tu ukázku koukám jako puk a moc nechápu, co který příkaz dělá.

Znám celkem dobře Python a PHP, kdysi jsem se učil Pascal. Musím se do toho céčka nějak prokousat. Zatím vím jenom to, že C++ umožňuje OOP a obyčejné C ne, v čem jsou další rozdíly jsem zatím moc nepochytil. Ještě asi nejsem v učení tak daleko, abych na to narazil. Zatím se v tom trochu plácám. V podstatě jsem něco psal, abych pochopil hlavní principy Céčka, pochytil syntaxi a naučil se zkompilovat program. Každopádně pokud někdo víte o nějakym dobrym zdroji informací o programování v C++, sem s ním.

15
Vývoj / Re:Výpis adresářů a souborů v C++
« kdy: 15. 05. 2012, 14:38:36 »
tommy> Určitě na to v budoucnu kouknu, momentálně mi ale zatím funguje to, co potřebuju.

poustevnik> To jsem našel, ale tam to chce, abych při alokaci tý paměti zadal, kolik jí potřebuju. Já to samozřejmě dopředu nevím. Nevím, kolik souborů/adresářů najdu ani jak dlouhý bude jejich jméno. Jak se tohle řeší?

Stran: [1] 2 3