1. #1
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    janvier 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2006
    Messages : 229
    Points : 126
    Points
    126

    Par défaut Utilisation d'un buffer sur plusieurs devices

    Bonjour,

    Je cherche à faire une acquisition d'un micro sur un device puis de le renvoyer en lecture sur un autre device (acquisition sur une carte son et lecture sur une autre).
    Est ce que je peux utiliser le pointeur sur le buffer d'acquisition pour l'envoyer sur la source de lecture de l'autre device sans soucis ?
    Il est possible par la suite que je doive transmettre le buffer d'un pc vers un autre... dans ce cas là, est-ce que je peux récupérer ce que contient le buffer d'acquisition ?

    Merci d'avance !

    Sylvain

  2. #2
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    janvier 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2006
    Messages : 229
    Points : 126
    Points
    126

    Par défaut

    Plus je réfléchis à ma question et plus je me dis que je raconte n'importe quoi....
    ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void COpenAL::ProcessCapture()
    {    
    	// On récupère le nombre d'échantillons disponibles
    	ALCint nSamplesAvailable;
    	alcGetIntegerv(m_pInDevice, ALC_CAPTURE_SAMPLES, 1, &nSamplesAvailable);
     
    	// On lit les échantillons et on les ajoute au tableau
    	if (nSamplesAvailable > 0)
    	{
    		ALshort *pBuffIdTemp = new ALshort[nSamplesAvailable];
    		alcCaptureSamples(m_pInDevice, pBuffIdTemp, nSamplesAvailable);
    		m_vCaptureBufferQueue.push_back(pBuffIdTemp);
    	}
    }
    Je récupère directement les échantillons son, non ?
    Du coup, je n'ai plus qu'à générer des buffers de lecture avec ces données là... c'est bien ça ?

  3. #3
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    1 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 1 934
    Points : 5 400
    Points
    5 400

    Par défaut

    Je n'ai jamais utilisé ta lib , mais pourquoi ne pas le vérifier ?
    Tu enregistre ton echantillons de son dans un fichier et tu le lit en raw (je tenterai le PCM 16 bits en premier ).

  4. #4
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    janvier 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2006
    Messages : 229
    Points : 126
    Points
    126

    Par défaut

    Oui, je sais, c'est ce que je suis en train de faire.... réponse dans quelques heures j'espère !
    C'est surtout que j'ai posté trop vite ma première question !

  5. #5
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    1 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 1 934
    Points : 5 400
    Points
    5 400

    Par défaut

    Ok , j'ai oublié de préciser de dire que on peut lire échantillons avec audacity

  6. #6
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    janvier 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2006
    Messages : 229
    Points : 126
    Points
    126

    Par défaut

    Donc c'est bien ça, la fonction renvoie directement les données sons et pas un pointeur vers un buffer interne de la carte son.
    Je peux donc renvoyer ces données directement ces données vers un autres device ou même un autre PC pour lecture.

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    4 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 4 449
    Points : 17 607
    Points
    17 607

    Par défaut

    Un buffer c'est un buffer. Il ne contient que des données arbitraires. Ce que tu en fais ne dépend que de toi.
    Si tu veux l'envoyer n'importe où, c'est ton problème.
    Les lib sont généralement assez bien faîtes pour te demander un buffer avec lequel travailler en interne, se passant par la même occasion des problèmes de (dés)allocations mémoire.
    Pour ton problème de lib, faut voir la doc de la lib en question.

    D'ailleurs la simple lecture de ce code est assez flagrante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALshort *pBuffIdTemp = new ALshort[nSamplesAvailable];
    alcCaptureSamples(m_pInDevice, pBuffIdTemp, nSamplesAvailable);
    Ta lib ne retourne rien du tout, elle ne fait que remplir le buffer passé en paramètre.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    janvier 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2006
    Messages : 229
    Points : 126
    Points
    126

    Par défaut

    Effectivement, annoncé comme cela, ça parait évident.
    Ce qui m'a perdu au début c'est que tu as une notion de buffer interne à la librairie auquel tu n'as pas accès directement.
    Mais j'ai fini par m'en rendre compte tout seul...

    Merci quand même !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utilisation visual studio 2010 sur plusieurs postes
    Par jurassicjeff dans le forum Visual Studio
    Réponses: 1
    Dernier message: 05/09/2012, 21h01
  2. [PPT-2007] Utiliser du code VBA sur plusieurs objets et pas qu'un seul
    Par beegees dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 25/03/2010, 09h55
  3. Réponses: 6
    Dernier message: 09/03/2009, 18h56
  4. Réponses: 2
    Dernier message: 30/11/2004, 09h42
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23

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