Bonjour.
Y as t'il un bug sur la vitesse de lecture des samples sous linux?
Par exemple , un buffer à 44000 samples par second, sera t'il bien lue à cette vitesse ou sera juste approximé?
merci
Bonjour.
Y as t'il un bug sur la vitesse de lecture des samples sous linux?
Par exemple , un buffer à 44000 samples par second, sera t'il bien lue à cette vitesse ou sera juste approximé?
merci
Aucune raison pour que ce ne soit pas le cas. Pourquoi poses-tu cette question ?
A part ça, ce n'est pas une vitesse de lecture mais un taux d'échantillonnage. Ca aura un impact sur la qualité, pas sur la vitesse de lecture.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
et 44000 sample par seconde, c'est bizarre comme taux d'échantillonnage, généralement c'est plutôt 44100
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
Problème entre windows et linux pour des flux en streaming pour du "live".
Sous windows pas de problème, mais sous linux, il semble lire trop vite les échantillons et comme j'utilise OpenAl en streaming, la lecture semble s'arrête de temps en temps et créé des blanc régulièrement .
Faut que je trace un peu mieux tout cela.
c'était un exempleEnvoyé par bafman
Sous Linux en streaming tu auras un "tic" à chaque remplissage de tampon. Quoique tu fasses. Même si tu utilises OpenAL-Soft.
J'ai pas encore trouvé la cause ni la solution, ça vient sûrement de plus bas genre ALSA.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Non. Je n'ai pas essayé non plus d'utiliser un autre device (genre OSS). Par contre j'ai essayé OpenAL-Soft, sans succès (enfin, ça règle tout de même les autres problèmes).
Si tu trouves quelque chose ça m'intéresse
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Juste pour info.
Mon problème est un bien un manque de buffer. Ce qui arrête la lecture avant de redémarré... Ca va être dure de trouver le problème
Par contre pour l'histoire des tic tic tic, sur une machine j'en ai pas et sur une autre oui...
Y as surement un moyen de faire fonctionner tout cela...
Es ce qu'avec OpenAL SOft on peut connaitre la position de lecture dans les sample? et es ce que le pitch fonctionne?
Hormis les tic tic sous Linux, tout fonctionne avec OpenAL Soft.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Bonjour peut-etre que c'est une histoire de bloque alignement ?Sous Linux en streaming tu auras un "tic" à chaque remplissage de tampon. Quoique tu fasses. Même si tu utilises OpenAL-Soft.
J'ai pas encore trouvé la cause ni la solution, ça vient sûrement de plus bas genre ALSA.
Il y a un moment j'avais fait un petit test sur windows pour jouer des sons ogg en stream avec openal.
Je me rappelle que j'avais un son de mauvaise qualité (des tics tics), si le bloque aligmenent n'était pas respecté...
C'est quoi le "bloque alignement" ?
Sous Windows il n'y a aucun problème de toute façon
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Ok.
Cependant je ne souviens plus si c'était du au fait que j'empilais et désempilais les tampons remplis avec des tailles différentes ou si c'était parceque ces tailles ne respectaient pas le block alignement que j'avais un son de mauvaise qualité ou les deux.
Pour le block alignement:
http://ccrma.stanford.edu/courses/422/projects/WaveFormat/
Un peu plus bas il y a un petite définition du block alignement.
Et voila un bout de code pour calculer le block alignement avec une taille de tampon de 1/4 de seconde trouvé depuis OgreAL.
Vla ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 void Sound::calculateFormatInfo() { switch(mChannels) { case 1: if(mBPS == 8) { mFormat = AL_FORMAT_MONO8; // Set BufferSize to 250ms (Frequency divided by 4 (quarter of a second)) mBufferSize = mFreq / 4; } else { mFormat = AL_FORMAT_MONO16; // Set BufferSize to 250ms (Frequency * 2 (16bit) divided by 4 (quarter of a second)) mBufferSize = mFreq >> 1; // IMPORTANT : The Buffer Size must be an exact multiple of the BlockAlignment ... mBufferSize -= (mBufferSize % 2); } break; case 2: if(mBPS == 8) { mFormat = AL_FORMAT_STEREO16; // Set BufferSize to 250ms (Frequency * 2 (8bit stereo) divided by 4 (quarter of a second)) mBufferSize = mFreq >> 1; // IMPORTANT : The Buffer Size must be an exact multiple of the BlockAlignment ... mBufferSize -= (mBufferSize % 2); } else { mFormat = AL_FORMAT_STEREO16; // Set BufferSize to 250ms (Frequency * 4 (16bit stereo) divided by 4 (quarter of a second)) mBufferSize = mFreq; // IMPORTANT : The Buffer Size must be an exact multiple of the BlockAlignment ... mBufferSize -= (mBufferSize % 4); } break; case 4: mFormat = alGetEnumValue("AL_FORMAT_QUAD16"); // Set BufferSize to 250ms (Frequency * 8 (16bit 4-channel) divided by 4 (quarter of a second)) mBufferSize = mFreq * 2; // IMPORTANT : The Buffer Size must be an exact multiple of the BlockAlignment ... mBufferSize -= (mBufferSize % 8); break; case 6: mFormat = alGetEnumValue("AL_FORMAT_51CHN16"); // Set BufferSize to 250ms (Frequency * 12 (16bit 6-channel) divided by 4 (quarter of a second)) mBufferSize = mFreq * 3; // IMPORTANT : The Buffer Size must be an exact multiple of the BlockAlignment ... mBufferSize -= (mBufferSize % 12); break; case 7: mFormat = alGetEnumValue("AL_FORMAT_61CHN16"); // Set BufferSize to 250ms (Frequency * 16 (16bit 7-channel) divided by 4 (quarter of a second)) mBufferSize = mFreq * 4; // IMPORTANT : The Buffer Size must be an exact multiple of the BlockAlignment ... mBufferSize -= (mBufferSize % 16); break; case 8: mFormat = alGetEnumValue("AL_FORMAT_71CHN16"); // Set BufferSize to 250ms (Frequency * 20 (16bit 8-channel) divided by 4 (quarter of a second)) mBufferSize = mFreq * 5; // IMPORTANT : The Buffer Size must be an exact multiple of the BlockAlignment ... mBufferSize -= (mBufferSize % 20); break; default: // Couldn't determine buffer format so log the error and default to mono Ogre::LogManager::getSingleton().logMessage("!!WARNING!! Could not determine buffer format! Defaulting to MONO"); mFormat = AL_FORMAT_MONO16; // Set BufferSize to 250ms (Frequency * 2 (16bit) divided by 4 (quarter of a second)) mBufferSize = mFreq >> 1; // IMPORTANT : The Buffer Size must be an exact multiple of the BlockAlignment ... mBufferSize -= (mBufferSize % 2); break; } }
Et le fait de respecter l'alignement de bloc a complétement supprimé les "tic" dans ton cas ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Faudra que je teste.
Sinon j'ai regardé un morceau code de mplayer.
Il utilise des buffer de 512 et créé une source par haut parleur...
Es ce que quelqu'un as déjà essayé quelque chose comme ca?
Hum,
Honnêtement je m'en souviens plus, respecter l'alignement de bloc c'était pas la seule manipe que j'avais faite pour supprimer le tic tac.
Rien ne t'empêche d'essayer en espérant que ça t'aide un peu
Non ça ne change rien, en fait j'ai déjà une taille de buffer alignée.
Tu te souviens d'autre chose ?respecter l'alignement de bloc c'était pas la seule manipe que j'avais faite pour supprimer le tic tac
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Ici,
il y as un tips pour utiliser alsa au lieu de oss en le spécifiant dans un fichier opanlrc
http://ggo.sourceforge.net/manual/ar01s09.html
Es ce que tu te rappel avoir fait un truc comme ca?
Bonjour.
J'ai essayé OpenAl Soft.
Marche nikel
sauf qu'il y as un bug
Quand je joue en streaming une vidéo, j'ai la musique mais pas les voix !!!!
En touchant un peut au volume du speaker droit indépendamment de l'autre, les voix reviennes ou redisparaisse...
Quelqu'un aurait une idée?
Un précision :
j'ai compilé avec cmake la lib puis fait une libstatic avec les .o "à la main".
Es ce que ca peut jouer?
J'ai configuré alsoft pour qu'il soit en mono16. Ca marche plustôt pas mal, mais c'est du MONO Personne aurai une idée de mon problème de voix qui disparait? peut être alsa à reconfigurer??
Pour configuré j'utilise la fichier ~/.alsoftrc :
[general]
format = AL_FORMAT_MONO16
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager