Page 1 sur 2
Librairie OggStream
Publié : jeu. 11/mars/2004 23:34
par KarLKoX
Bon, pour ceux que ça interesse, j'ai mis la dernière touche à OggStream, une librairie permettant de lire les flux Ogg Vorbis.
Ce n'est que la première version mais permet tout ce dont on à besoin pour faire un player par exemple.
J'aimerais donc avoir vos impressions, suggestions et surtout rapports de bugs, avant que je ne post sur le forum anglais

C'est
ici que ca se passe.
L'aide se trouve dans le dossier "Help" de PureBasic et un exemple se trouve dans le dossier "Examples\Sources - Advanced\OggStream".
Prochaine étape, le support des mp3 via la bibliothèque Mad ...
Publié : ven. 12/mars/2004 10:20
par Fred
Juste pour préciser: le support interne de l'OGG-Vorbis en purebasic ne necessite pas de filtre directshow, c'est une library statique, comme la tienne

. J'ai testé ta lib et ca marche nickel !
Publié : ven. 12/mars/2004 12:20
par Oliv
Excuse moi mais ça correspond à quoi ?
Publié : ven. 12/mars/2004 14:05
par KarLKoX
Fred>erf ! Excuse moi, c'est ce qu'avais dit Polux (auteur de Lethal Judgment) dans un post donc j'y ai cru, bêtement, je rectifierais ca dans le fichier d'aide.
A ce propos, tant que je t'ai sous la main : lorsque je compile la lib en release et qu'ensuite je compile l'exemple, le linker d'lcc plante lamentablement, je suis obligé de laisser les symboles de débogages, en en full (mode C7, parametre /ZI de VC++).
Ce serait bien que j'y arrive en release, ca permettrais de diminuer considérablement la taille de l'exe final (de moitié je pense).
Autre bug (en est ce un ?) : j'ai fait un driver DirectSound (8.0) mais lorsque je compile l'exemple, le linker lcc tombe dans une boucle (il ne plante pas) et me prend 100 % cpu, sans message d'erreur . (j'ai beau changer la lib dsound.lib de PureBasic par la version 8 ou 9, rien n'y fait)
J'utilise les notification et j'instancie donc l'objet COM de directX pour avoir acces aux fonctions de notifications et, mon petit me doight me dit que ca doit venir de ca.
Je sais, je n'ai qu'a réécrire le driver sans notification (c'est ce que je compte faire) mais j'aimerais juste comprendre (si tu veux les sources, pas de pb

).
Oliv>la librairie permet de lire les musiques compressées au format
Ogg Vorbis, qui est un sérieux "concurrent" du mp3/mp3 pro.
Publié : ven. 12/mars/2004 15:06
par Fred
J'avoue que je suis meme étonné que le linker LCC accepte les .lib de VC++ en debug, j'avais deja essayé (en release) et ca marchait pas. Je ne peux pas vraiment t'aider là dessus.. J'utilise LCC pour tout, meme si je dois adapter un peu un code C pour qu'il compile, comme ca j'ai pas de problèmes.
Publié : ven. 12/mars/2004 16:23
par KarLKoX
Oki ca marche, c'est pas un problème en soit, ca faisait juste de gros éxécutable, si je trouve une parade, je t'en informerais

Tient, je viens d'ajouter le support préliminaire des mp3 en passant (via libmad 0.15 soit 108 ko de plus par exe, aie !)
Publié : ven. 16/avr./2004 4:36
par KarLKoX
Un petit up pour donner le status du wip actuel :
- Support complet des mp3 via Mad 0.15,
- Support des idtag v1.x/2.x en unicode/utf8,
- Support du streaming internet (shoutcast, icecast prochainement),
- Support du driver DirectSound via DirectX 8 et >,
- Réécriture du driver Windows WaveOut : plus de coupure lorsque l'on fait autre chose,
- Support alpha du MPC (MusePack) : j'ai un problème bizarre qui fait que la musique est saccadée,
- Apres avoir scruté le code de la bibliothèque Modplug (modules sonores), la convertir du C++ en C serait un trop gros chantier (contrairement à la bibliotheque du MPC) donc je pense que j'utiliserais MikMod.
Et à venir :
- Ajout des API pour manipuler tout ca sans se prendre la tête
Un exe (sans support MPC) compilé avec la userlib fait environ 320 ko.
Bon, bah dodo moi ...

Publié : sam. 17/avr./2004 16:38
par Polux
Phénoménal Karlkox! Je m'en sers pour Pure Intruders 2, cette librairie est vraiment excellente! Beau boulot!
( tu es cité au générique bien entendu!

)
Publié : sam. 17/avr./2004 18:27
par KarLKoX
Merci, ca fait plaisir de voire que ce que je fait sert à quelque chose, y a pas plus grande satisfaction
J'en profiter pour ajouter mes dernieres modifications :
- J'ai dernièrement amélioré le support du shoutcast (presque plus de "grosses" coupures, merci au multithread)
- Support des pilotes WDM (meilleur performances audio),
- Support (en cours) des canaux > 2 (quad, 5.1, 6.1, 7.1, surround), la encore, il faut des pilotes WDM,
- En cours : support des serveurs icecast 1/2.
Et à venir :
- Intégration de mikmod pour lire les modules et un set dédié de fonctions uniquement aux modules (récupération du pattern, rows, nombres de voies en cours ...)
Toute aide est la bienvenue surtout en ce qui concerne le support des floats via le WAVEFORMATEXTENSIBLE.
J'ai beau essayer toute sorte de combinaison, rien n'y fait, mais je perd pas espoire

Publié : lun. 19/avr./2004 18:08
par Polux
RRaaah, de temps en temps j'ai l'impression que soit le play soit le stop me font planter l'appli...
Publié : lun. 19/avr./2004 20:42
par Polux
Bon ben apparement ça a plus l'air de le faire... maintenant je fais un oggstreamclose() avant de recharger une zic, je teste d'abord si elle est jouée, si oui, je la stoppe avant... Je sais pas si ça joue, mais ça semble être plus stable.
Mais je ne fais pas d'erreur je pense, j'initialise la lib au début:
OggStreamSetDriver(#OGG_DSOUND)
OggStreamInit()
pis j'utilise
OggStreamLoadFile("mazizic.ogg")
OggStreamPlay()
pis j'utilise
If OggStreamIsPlaying()=1:OggStreamStop():EndIf
OggStreamClose()
OggStreamLoadFile("mazizic2.ogg")
OggStreamPlay()
pour en lancer une autre...?
Publié : sam. 24/avr./2004 1:54
par KarLKoX
Oui tu as bien utilisé la lib, tu utilises DSOUND mais comme marqué dans la doc, ce driver n'étais pas fonctionnel

J'ai ausi réécrit le code du driver DSOUND (et celui de WINMM en passant) pour le faire fonctionner avec MikMod et j'ai ajouté une fonction essentielle : OggStreamFree !
Plutot que d'utiliser OggStreamClose qui peut s'utiliser pour libérer toutes les ressources utilisées par la lib et la lib elle même, j'ai ajouté cette fonction qui ne libère que les ressources utilisées par le stream en cours

J'ai pas mal de nettoyage de code, la doc à mettre à jour et des tests pour faire une mises à jour, donc dans maxi deux semaines, ca devrait être bon

Publié : lun. 26/avr./2004 11:51
par Polux
RRRaaaahhhh... merci KArlKox! Tip top!
Publié : lun. 03/mai/2004 21:26
par KarLKoX
Petite update pour signaler que je ne suis pas mort ^^
Alors, au niveau de mes avancements :
- Ajout du support des fichiers Flac, il manque juste la lecture des tags. Je comprend pas pourquoi mes routines ne passent pas car il s'agit d'idtag tout bete. M'enfin, c'pas méchant,
- Ajout d'une fonction permettant de récupérer les metatags (ShoutCast),
- Ajout du support des fichiers MPC (MusePack) : j'ai enfin compris mon erreur (de débutant ...). J'ai du aussi convertir la lib MPC du C++ en C
- Ajout du support des modules via MikMod ainsi que plus d'une douzaine de fonctions dédiées pour récupérer la vitesse, les bpm, nombre d'instrument, samples, voix ...
- DSOUND : je le met en standby, je vais me concentrer uniquement sur WinMM et des que j'aurais une lib qui sera stable/complete en WinMM, j'ajouterais le support de DSOUND, une chose à la fois
- Shoutcast encore plus stable,
- Possibilité de choisir le taux d'échantillonage : 11025, 22050 ou 44100 (8000 aussi, mais bon, c'est bien kaka). J'utilise une lib qui utilise de tres bon algos (secret rabbit), j'ai pu comparer avec des lib commerciales comme FMOD/BASS, et la qualité est identique. (test d'oreille donc subjectif, je l'avoue)
- Il y avait un léger "blip" lorsque l'on se déplacait dans la musique, c'est réparé
@ bientôt

Publié : mar. 18/mai/2004 12:16
par Polux
Well done Karlkox!!! j'attends ça avec impatience. ta librairie est d'ores et déjà inclue dans pure intruders 2 ( ainsi que ton nom au générique ), si ça ne te gêne pas du moins

! Du très beau boulot!
