Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
mar
Založen: 16. 06. 2012 Příspěvky: 602
|
Zaslal: 18. červen 2012, 15:27:14 Předmět: |
|
|
Tím líp, pokud vím, OpenAL je nativní součástí Linuxu, OSXu a dokonce i iOSu. |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 18. červen 2012, 15:38:12 Předmět: |
|
|
Našel jsem toto, snad to z toho vycucám...jen nevím, jak je na tom ten vorbis-balast...
Mě v podstatě stačí, abych mohl přehrávat ogg. Malé soubory nahraju celé do paměti, větší budu streamovat... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 602
|
Zaslal: 18. červen 2012, 15:47:33 Předmět: |
|
|
To je přesně ono. Jak jsem psal, zkusil bych tremor. To je osekané ogg/vorbis, optimalizované pro celočíselnou aritmetiku pokud se nepletu.
Pak by mělo stačit #include <tremor/ogg.h> nebo tak něco a hotovo. ov_xxx funkce by měly v pohodě fungovat. A klidně to linkovat staticky a hotovo. |
|
Návrat nahoru |
|
|
manutara
Založen: 02. 01. 2012 Příspěvky: 81 Bydliště: Kosice SVK
|
Zaslal: 18. červen 2012, 15:56:35 Předmět: OpenAL |
|
|
zdravim,
len pre zhrnutie.
ak je naistalovane OpenAL staci do adresara aplikacie dodavat ``alut.dll''
ak to v programe pouzivas.
ak nieje naistalovane OpenAL tak treba prilozit aj OpenAL32.dll, program
pobezi, ale bez zvukov. ak to ma korektne fungovat treba prilozit aj
``wrap_oal.dll'' potom to cele funguje ako ma.
co sa tyka samostatnej instalacie OpenAL, podla vsetkoho nieje nutna. staci
vedla ``.exe'' suboru nakopirovat ``OpenAL32.dll'', ``wrap_oal.dll'' a ak
pouzivas alut tak aj ``alut.dll''.
u mna to tak funguje zatim... _________________ hadam to OpenGL este par rokov prezije |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1552
|
Zaslal: 18. červen 2012, 16:23:07 Předmět: |
|
|
Pokud chceš minimalizovat počet dll, tak je dobré se alut vyhnout. Své k OpenAL32.dll vs wrap_oal.dll jsem už napsal. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 18. červen 2012, 20:44:55 Předmět: |
|
|
Vypadá to, že si to budu muset naprogramovat sám. Ani jedna metoda se mi nelíbí...
Asi to udělám tak, že data ogg načtu do paměti. Dejme tomu, že minuta hudby bude přibližně 3MB, to není moc, paměti máme dost. A pak budu real-time dekódovat a přehrávat podobně jako zde.
Mám zkrátka rád, když mám nad kódem vyšší moc.
Takže ve výsledku použiji jen OpenAL... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 602
|
Zaslal: 18. červen 2012, 22:58:41 Předmět: |
|
|
Dobrý nápad. A já se mordoval se streamováním oggu ze zipu. Zip reader co je k dispozici se zlibem totiž není thread safe |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 19. červen 2012, 09:00:30 Předmět: |
|
|
No, to by jsi mi tedy mohl poradit s tím dekódováním. Nastudoval jsem si strukturu dat (kupa OggPage), ale jsem poměrně línej šťourat se ve zdrojácích vorbis-balastu...
I když, asi budu muset... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 602
|
Zaslal: 19. červen 2012, 13:05:54 Předmět: |
|
|
Tak to by snad nemusel být až takový problém.
Co koukám na svůj kód tak z tremoru includuji ogg.h a ivorbisfile.h.
callbacky:
kód: |
static ov_callbacks callbacks = {
(size_t (*)(void *, size_t, size_t, void *)) cb_fread,
(int (*)(void *, ogg_int64_t, int)) cb_seek,
(int (*)(void *)) cb_close,
(long (*)(void *)) cb_ftell
};
|
počítám, že to budeš mít v paměti, takže by to neměl být problém.
Místo FILE * bych dal asi rovnou pointer na ogg v paměti.
kód: |
ov_open_callbacks((void *)file, &vf, NULL, 0, callbacks)
|
otevře ogg. vrací -1 při chybě.
file bude pointer na data a vf je
informace (pokud bude potřeba):
kód: |
vorbis_info *vi = ov_info( &vf, -1 );
|
vi->rate je samplerate
vi->channels je počet kanálů
čtení:
kód: |
int currentSection;
ov_read( &vf, dst, bytes, ¤tSection )
|
vrací počet přečt. bytů nebo -1 při chybě
dst je dest. buffer
pozn. ov_read vrací už dekódovaná data
zavírání:
snad to pomůže |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 19. červen 2012, 13:09:07 Předmět: |
|
|
Díky, ale nakonec jsem se rozhodl, že si to celé nakódím sám, od píky. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1533 Bydliště: u Prahy
|
Zaslal: 19. červen 2012, 13:23:30 Předmět: |
|
|
Když máš tolik času _________________ Award-winning game developer |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 19. červen 2012, 13:24:57 Předmět: |
|
|
Mám.
Když mi to nepůjde, tak holt šáhnu po nějakém hotovém řešení, ale mě se ani jedno nelíbí, mám vlastní vizi, jak by to mělo fungovat... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 602
|
Zaslal: 19. červen 2012, 14:03:56 Předmět: |
|
|
To je škoda, proč plýtvat časem. Navíc co se ti nelíbí na Ogg parseru/Vobis dekodéru přímo od Xiphu? Stejně to celé zabalíš do classu, takže to bude fungovat tak, jak budeš chtít ty. A to nemluvím o času, který strávíš jenom laděním.
Nebo si snad chceš psát i vlastní audio codec? A co takhle rovnou i vlastní C++ překladač a IDE a třeba i OS? No ale je to tvůj boj...
Každopádně hodně štěstí s enginem i se Sollertií |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 19. červen 2012, 14:40:34 Předmět: |
|
|
1) Nechci se hrabat v cizím kódu, musím říci, že co jsem tak koukal, tak jejich kód je pěkná prasečina.
2) Potřebuji, abych mohl "streamovat" z paměti a z několika míst (přehrávání stejného zvuku vícekrát)
3) Chci nad tím kódem mít absolutní moc...
Pokud jde o překladač, tak ten dělám (btw). _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 602
|
Zaslal: 19. červen 2012, 15:03:43 Předmět: |
|
|
VODA napsal: |
1) Nechci se hrabat v cizím kódu, musím říci, že co jsem tak koukal, tak jejich kód je pěkná prasečina.
2) Potřebuji, abych mohl "streamovat" z paměti a z několika míst (přehrávání stejného zvuku vícekrát)
3) Chci nad tím kódem mít absolutní moc...
Pokud jde o překladač, tak ten dělám (btw). |
No pořád mi uniká, na co se potřebuješ v jejich kódu hrabat, když z toho využiješ pár funkcí a jednu strukturu? Co s tím uděláš dál je tvoje věc.
(off topic: Super, stavíš to na LLVM nebo úplně komplet vlastní? A C++ nebo vlastní jazyk? Nebo skript?)
EDIT: A co si to do paměti rozbalit rovnou celé, jestli to potřebuješ jenom na samply? |
|
Návrat nahoru |
|
|
|