Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1504 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  petit problème avec les pointeurs

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

petit problème avec les pointeurs

n°1426632
xphanoo
Posté le 17-08-2006 à 14:22:32  profilanswer
 

bonjour
 
j'ai une fonction qui prend en compte plusieurs paramètres:
 

Code :
  1. setSoftwareFormat( FREQUENCY, FMOD_SOUND_FORMAT_PCM16, 0, 0, FMOD_DSP_RESAMPLER_LINEAR )


 
pas de problème pour FREQUENCY puisque il suffit de le remplacer par une valeur int, par contre ça se complique pour le suivant:
 
y'a plusieurs options possibles, on met
FMOD_SOUND_FORMAT_PCM16     pour des sons en 16 bits
FMOD_SOUND_FORMAT_PCM8       pour des sons 8 bits
 
 
dans mon programme on choisis entre 8 bits ou 16 bits simplement en tapant une valeur, on tape soit 8 soit 16 !
il faudrait que j'arrive à coller FMOD_SOUND_FORMAT_PCM à la valeur tapée !
il me semble que pour cela on utilise les pointeurs mais j'y arrive pas.
si quelqu'un pouvait me faire ça ça m'aiderais beaucoup. pour FMOD_DSP_RESAMPLER_ c'est différent, ça va mettre a la fin NOINTERP, LINEAR ou SPLINE suivant si on tape 0, 1 ou 2; mais si j'ai un exemple avec FMOD_SOUND_FORMAT_PCM je pense être capable de l'appliquer pour toutes les autres fonctions  ;)  
 
merci


Message édité par xphanoo le 17-08-2006 à 14:23:11
mood
Publicité
Posté le 17-08-2006 à 14:22:32  profilanswer
 

n°1426640
_darkalt3_
Proctopathe
Posté le 17-08-2006 à 14:27:15  profilanswer
 

Non, les pointeurs n'ont rien à voir avec ca.
 
Tu saisis la chaine de caractères, tu la compares aux chaines "8" et "16", et selon le résultat (if/then/else) tu fais un setSoftwareFormat( FREQUENCY, FMOD_SOUND_FORMAT_PCM16, 0, 0, FMOD_DSP_RESAMPLER_LINEAR ) ou un setSoftwareFormat( FREQUENCY, FMOD_SOUND_FORMAT_PCM8, 0, 0, FMOD_DSP_RESAMPLER_LINEAR )


Message édité par _darkalt3_ le 17-08-2006 à 14:39:24

---------------
Töp of the plöp
n°1426659
xphanoo
Posté le 17-08-2006 à 14:59:32  profilanswer
 

j'y avait pensé, mais le problème c'est que c'est pas le seul paramètre a prendre en compte, il y a aussi FMOD_DSP_RESAMPLER_ qui est dans la meme fonction !
ça ferait 2x3 comparaisons avec if ... et bien + si il y avait plus de paramètres. (imagine s'il y avait 4 paramètres avec chacun 8 "valeurs" possible... ça ferait 8x8x8x8 soit 4096 lignes de IF !  :pt1cable: )
il n'y a pas un moyen de mettre un paramètre "NULL" qui fait en sorte qu'on soit pas obligé de définir tous les paramètres d'une fonction ? (comme ça je pourrais d'abord faire 2 if pour FMOD_SOUND_FORMAT_PCM, et ensuite 3 autres pour FMOD_DSP_RESAMPLER_, en gros je définis pas tous les paramètres de la fonction en 1 seul coup mais en plusieurs fois. les 4096 lignes (c'est un exemple) seraient réduites à 16 ^^)


Message édité par xphanoo le 17-08-2006 à 15:03:06
n°1426669
jbourdello​n
Posté le 17-08-2006 à 15:05:23  profilanswer
 

pas la peine de faire des if tu peux utiliser un "switch"  
 
autrement 2 fonctions bien faite qui font le traitement  
 
tu appelles la premiere pour PCM
tu appelles la seconde pour RESAMPLER
tu appelles ta fonction avec les parametres corrects

n°1426671
_darkalt3_
Proctopathe
Posté le 17-08-2006 à 15:07:44  profilanswer
 

non, pas de parametre a null.
 
Cela dit, dans ce cas, vérifie le type de FREQUENCY, FMOD_SOUND_FORMAT_PCM16 ou FMOD_DSP_RESAMPLER_LINEAR : ce devrait etre des entiers.
 
Dans ce cas, tu fais tes tests, et tu assignes les resultats à des variables, genre (pseudo code)
si (saisie = 8)
alors variablesoundformat = FMOD_SOUND_FORMAT_PCM8
sinon varaiblesoundformat = FMOD_SOUND_FORMAT_PCM16
etc.
 
Ensuite tu n'appelles qu'une fois setSoftwareFormat avec tes variables:
setSoftwareFormat( maVariableFrequence, maVariableSoundFormat, 0, 0, maVariableLinear )


---------------
Töp of the plöp
n°1426675
xphanoo
Posté le 17-08-2006 à 15:09:48  profilanswer
 

jbourdellon a écrit :

pas la peine de faire des if tu peux utiliser un "switch"  
 
autrement 2 fonctions bien faite qui font le traitement  
 
tu appelles la premiere pour PCM
tu appelles la seconde pour RESAMPLER
tu appelles ta fonction avec les parametres corrects


 
 
 
jbourdellon pourrais tu détailler stp ?
je pense que c'est un peu ce que je voulais faire au début, mais je comprends pas comment faire changer ce qui va arriver dans le setSoftwareFormat   (comment faire changer FMOD_SOUND_FORMAT_PCM16 pour qu'en fonction d'une autre valeur ça devienne FMOD_SOUND_FORMAT_PCM8 ou bien FMOD_SOUND_FORMAT_PCM24 ?)


Message édité par xphanoo le 17-08-2006 à 15:10:01
n°1426681
xphanoo
Posté le 17-08-2006 à 15:12:24  profilanswer
 


_darkalt3_ a écrit :

non, pas de parametre a null.
 
Cela dit, dans ce cas, vérifie le type de FREQUENCY, FMOD_SOUND_FORMAT_PCM16 ou FMOD_DSP_RESAMPLER_LINEAR : ce devrait etre des entiers.
 
Dans ce cas, tu fais tes tests, et tu assignes les resultats à des variables, genre (pseudo code)
si (saisie = 8)
alors variablesoundformat = FMOD_SOUND_FORMAT_PCM8
sinon varaiblesoundformat = FMOD_SOUND_FORMAT_PCM16
etc.
 
Ensuite tu n'appelles qu'une fois setSoftwareFormat avec tes variables:
setSoftwareFormat( maVariableFrequence, maVariableSoundFormat, 0, 0, maVariableLinear )


 
ah ok je vais tester ça ! (cependant je prends toujours s'il y a une méthode qui permet de se passer des IF de partout, au cas ou j'aurais une fonction qui peut avoir plein de "changements" possible)


Message édité par xphanoo le 17-08-2006 à 15:12:32
n°1426695
jbourdello​n
Posté le 17-08-2006 à 15:18:43  profilanswer
 

ben  
 
switch(VALEUR_POUR_PCM) {
       case(8) : variablesoundformat = FMOD_SOUND_FORMAT_PCM8;
       case(16) : variablesoundformat = FMOD_SOUND_FORMAT_PCM16;
       default : variablesoundformat = FMOD_SOUND_FORMAT_PCM16 OU 8
}
 
switch(VALEUR_POUR_RESAMPLER) {
       case xxxx:
       default : ATTRIBUTION D'UNE VALEUR PAR DEFAUT  
}
 
 
 
OU autre solution  
 
valeurpourpcm = fonctionPCM(valeurPCM);
valeurPourResampler = fonctionResampler(valeurResampler);
setSoftwareFormat( FREQUENCY, FMOD_SOUND_FORMAT_PCM16, 0, 0, FMOD_DSP_RESAMPLER_LINEAR )  
 

n°1426699
_darkalt3_
Proctopathe
Posté le 17-08-2006 à 15:20:48  profilanswer
 

Ca évite pas les tests de toutes façons.


---------------
Töp of the plöp
n°1426703
xphanoo
Posté le 17-08-2006 à 15:24:52  profilanswer
 

Code :
  1. int varformat;
  2. int varresampling;
  3. [...]
  4.   if (pReso = 8){ varformat = FMOD_SOUND_FORMAT_PCM8; }
  5.   if (pReso = 16){ varformat = FMOD_SOUND_FORMAT_PCM16; }
  6.   if (pReso = 24){ varformat = FMOD_SOUND_FORMAT_PCM24; }
  7.   if (pResample = 0){ varresampling = FMOD_DSP_RESAMPLER_NOINTERP; }
  8.   if (pResample = 1){ varresampling = FMOD_DSP_RESAMPLER_LINEAR; }
  9.   if (pResample = 2){ varresampling = FMOD_DSP_RESAMPLER_SPLINE; }
  10. result = system->setSoftwareFormat( pFrequ, varformat, 0, 0, varresampling );


 
bon j'ai essayé avec un peu tout (int, short, long, float, double, long double, char) et rien a faire... j'obtiens un message de ce style du compilateur :  impossible de convertir le paramètre 2 de 'int' en 'FMOD_SOUND_FORMAT'


Message édité par xphanoo le 17-08-2006 à 15:25:10
mood
Publicité
Posté le 17-08-2006 à 15:24:52  profilanswer
 

n°1426706
jbourdello​n
Posté le 17-08-2006 à 15:29:07  profilanswer
 

donne voir la declaration de tes variables

n°1426707
_darkalt3_
Proctopathe
Posté le 17-08-2006 à 15:29:43  profilanswer
 

T'as vérifié dans les entetes de FMOD (ou dans la doc) quelles étaient les types de FMOD_SOUND_* ?


---------------
Töp of the plöp
n°1426720
xphanoo
Posté le 17-08-2006 à 15:41:37  profilanswer
 

voila un extrait de la doc:
 
 
FMOD_SOUND_FORMAT
These definitions describe the native format of the hardware or software buffer that will be used.  
 
 
Enumeration
 
typedef enum {
  FMOD_SOUND_FORMAT_NONE,  
  FMOD_SOUND_FORMAT_PCM8,  
  FMOD_SOUND_FORMAT_PCM16,  
  FMOD_SOUND_FORMAT_PCM24,  
  FMOD_SOUND_FORMAT_PCM32,  
  FMOD_SOUND_FORMAT_PCMFLOAT,  
  FMOD_SOUND_FORMAT_GCADPCM,  
  FMOD_SOUND_FORMAT_IMAADPCM,  
  FMOD_SOUND_FORMAT_VAG,  
  FMOD_SOUND_FORMAT_XMA,  
  FMOD_SOUND_FORMAT_MPEG,  
  FMOD_SOUND_FORMAT_MAX
} FMOD_SOUND_FORMAT;
 
 
Values:
 
FMOD_SOUND_FORMAT_NONE
Unitialized / unknown.  
 
FMOD_SOUND_FORMAT_PCM8
8bit integer PCM data.  
 
FMOD_SOUND_FORMAT_PCM16
16bit integer PCM data.  
 
FMOD_SOUND_FORMAT_PCM24
24bit integer PCM data.  
 
FMOD_SOUND_FORMAT_PCM32
32bit integer PCM data.  
 
FMOD_SOUND_FORMAT_PCMFLOAT
32bit floating point PCM data.  
 
FMOD_SOUND_FORMAT_GCADPCM
Compressed GameCube DSP data.

 
etc...
 
typedef enum... je connais pas  :??:


Message édité par xphanoo le 17-08-2006 à 15:42:32
n°1426729
skelter
Posté le 17-08-2006 à 15:48:34  profilanswer
 

le compilateur te le dit !
 

Code :
  1. FMOD_SOUND_FORMAT varformat;

n°1426731
xphanoo
Posté le 17-08-2006 à 15:51:31  profilanswer
 

:ouch:  ça marche !
je pensais pas que les variables pouvaient avoir des types personnalisés
merci de votre aide  ;)

n°1426735
_darkalt3_
Proctopathe
Posté le 17-08-2006 à 15:52:01  profilanswer
 

[:grilled]


Message édité par _darkalt3_ le 17-08-2006 à 15:52:56

---------------
Töp of the plöp
n°1426894
Taz
bisounours-codeur
Posté le 17-08-2006 à 21:49:33  profilanswer
 

c'est quoi tous ces = dans les tests ?

n°1426910
_darkalt3_
Proctopathe
Posté le 17-08-2006 à 22:22:14  profilanswer
 

De toutes façons un  

Code :
  1. int maVariable = FMOD_SOUND_FORMAT_PCM16;


 
doit fonctionner.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  petit problème avec les pointeurs

 

Sujets relatifs
[VBA] Probleme copie after + ...quotes dans requête pose problème
realloc d'un tableau plus petitProbleme de socket ? ou de mise en place dans un fichier ?
Probleme avec mon code source pour les socketsProbleme mise à la ligne javascript
probleme script vbs[RESOLU][CSS] Problème de float
affichage d'un swf: firefox ok, IE probleme !Petit probleme de pointeurs sur des tableaux d'une structure
Plus de sujets relatifs à : petit problème avec les pointeurs


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR