IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Buffeur a élément de 12 bit


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 60
    Par défaut Buffeur a élément de 12 bit
    salut
    voici mon problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                         u_int16_t buf[1024];
    	             int i;
                         int  len=176;
                      for (i = 0;( i < (len-16)); i++){
    	                               buf[i] = ulaw2linear(pl[i]);
    	                       }
                 	  wlen=250;    
                      fwrite(buf, wlen,  1, f_out1);
    je fais un decodage de voix de g.711 a pcm linaire
    l'instruction buf[i]= ulaw2linair(pl[i])
    doit décoder chaque élément de 8 bit a un élément de 12 bit
    pour raison de qualité de voix a la sortie je doit travaille avec un buffeur a élément de 12 bit et non pas de 16 bit comme dans le code, mais quand je fait "u_int12_t buf" ça marche pas il me sort des erreur "u_int32_t non declarer"
    comment je peut résoudre ce problème ?
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kh12040 Voir le message
    je fais un decodage de voix de g.711 a pcm linaire
    l'instruction buf[i]= ulaw2linair(pl[i])
    doit décoder chaque élément de 8 bit a un élément de 12 bit
    pour raison de qualité de voix a la sortie je doit travaille avec un buffeur a élément de 12 bit et non pas de 16 bit comme dans le code,
    Absurdité détectée...
    mais quand je fait "u_int12_t buf" ça marche pas il me sort des erreur "u_int32_t non declarer"
    Je doute fort que ta plateforme dispose d'éléments de 12-bits (tu peux toujours le simuler avec une structure et un champ de bit de 12 de large, mais je doute fort que ce soit efficace...

    Utilise une variable de type unsigned int (16-bit minimum), et ne considère que les 12 bits LSB. Tu peux fair un masque avec 0x0FFF si besoin est...

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 60
    Par défaut
    j ai fait une erreur a la rédaction du message
    j'ai voulu dire :erreur "u_int12_t non declarer"
    je m'excuse

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kh12040 Voir le message
    j ai fait une erreur a la rédaction du message
    j'ai voulu dire :erreur "u_int12_t non declarer"
    je m'excuse
    J'avais compris, mais ça ne change rien au problème. Tu as lu ma réponse ou je perds mon temps ?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 60
    Par défaut
    Je doute fort que ta plateforme dispose d'éléments de 12-bits (tu peux toujours le simuler avec une structure et un champ de bit de 12 de large, mais je doute fort que ce soit efficace
    dans ce cas je doit faire 250 écriture dans le fichier et ça c'est du tempe dans l'exécution
    Utilise une variable de type unsigned int (16-bit minimum), et ne considère que les 12 bits LSB. Tu peux fair un masque avec 0x0FFF si besoin est...
    ça revient au même problème ...j'aurai a la fin des zéro n'appartenant pas au signale voix numérique .

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kh12040 Voir le message
    dans ce cas je doit faire 250 écriture dans le fichier et ça c'est du tempe dans l'exécution

    ça revient au même problème ...j'aurai a la fin des zéro n'appartenant pas au signale voix numérique .
    Ah, tu veux générer un flux de bits (par groupe de 12) dans un fichier, c'est ça ?

    est codé dans le fichier
    C'est difficile ?

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 60
    Par défaut
    Ah, tu veux générer un flux de bits (par groupe de 12) dans un fichier, c'est ça ?
    c un peut ça et j'ai pas arriver a mettre les donnée dans un buffeur de 12bit par élément .
    avec 16bit ça marche mais le signale voix de sortie n'est pas bon donc je doit éliminer le les bits de 13 a 16
    pour avoir ca

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kh12040 Voir le message
    c un peut ça et j'ai pas arriver a mettre les donnée dans un buffeur de 12bit par élément .
    avec 16bit ça marche mais le signale voix de sortie n'est pas bon donc je doit éliminer le les bits de 13 a 16
    pour avoir ca
    ce n'est pas possible.

    Tu as une grandeur codée sur 12-bit à faire entrer dans des unités de 8-bits
    Déjà, il faut définir comment est codé le flux (en principe, MSB en tête, selon les conventions...)

    Le bloc de 12 bits ABC est constitué de 3 quartets (blocs de 4-bit) : A, B et C.

    on va mettre A et B dans le premier octet : AB

    et on va le mettre dans le fichier fputc(AB)

    ensuite, on va mettre le dernier quartet C avec le premier quartet suivant : CA

    que l'on écrit dans le fichier : fputc(CA)

    ensuite, on met les 2 derniers quartets (BC) dans le fichier etc.

    On obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AB CA BC etc.
    <12><12> etc.
    Je te laisse écrire l'algorithme (synchroniser 8 (2x4) avec 12 (3x4), c'est pas la mer à boire...)

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 60
    Par défaut
    non c'est pas ça se que je veut ... on doit enlever les bit 13 14 15 16 sans toucher au bit 0....12
    0254
    0365
    0210
    devient ca
    254
    365
    210

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kh12040 Voir le message
    non c'est pas ça se que je veut ... on doit enlever les bit 13 14 15 16 sans toucher au bit 0....12

    devient ca
    Purée, t'es lourd...

    C'est impossible. C'est clair ? Les flux sont des multiples de 8-bit. J'ai déjà donné la solution. Refléchis un peu...

Discussions similaires

  1. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25
  2. Main icon (16 bits)
    Par DR dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/09/2002, 08h23
  3. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  4. Debugger 16-32 bits
    Par Mat dans le forum Assembleur
    Réponses: 4
    Dernier message: 28/06/2002, 11h34
  5. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo