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

Qt Discussion :

QAudioOutput::setVolume : un bogue ?


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut QAudioOutput::setVolume : un bogue ?
    Bonjour à tous !
    J'aurai besoin d'une info, savoir si je suis le seul ou pas...
    setVolume de QAudioOutput requiet un volume compris entre 0 et 1 (un qreal).

    Jusque là, ça va.
    J'ai créé un slider qui fait un setVolume sur mon QAudioOutput après l'avoir divisé par 100.
    Un qDebug() me permet de voir que les valeurs sont bonnes.

    Mon problème vient du fait qu'une fois que j'ai dépassé la valeur 0.5, plus aucune modification ne s'opère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void MainWindow::on_volumeSlider_valueChanged(int value)
        {
            qreal newVolume = (qreal)value/100;
            qDebug() << QString::number(value) + "->" + QString::number(newVolume);
            ... //Je défini ma valeur...
        }
    Je suis sur QT5 et win7 64.
    J'ai donc accès au mélangeur et j'ai la vision sur les volumes des programmes de façon indépendante.
    Je peux donc voir le slider de windows bouger en même temps que mon slider dans mon programme.

    Et bien même souci, on voit que le curseur ne dépasse pas la moitié parfaite.

    Pour résumer, mon QAudioOutput::setVolume semble ne plus changer le volume au delà de 0.5.

    J'apprécierai grandement vos lumières sur ce souci qui me bride depuis maintenant 2 jours !

    Merci d'avance !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Je vous conseille d'observer le mixeur des volumes pour voir commert le système réagit.
    Sinon, j'ai pensé à une échelle logarithmique, mais la documentaiton ne l'indique pas.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Bonjour,
    comme je l'ai indiqué dans mon post, le curseur du mixeur windows me montre le même constat : il s'arrête à la moitié parfaite, là ou mon curseur continue au dela des 50%.

    Pour le log, j'y avais pensé aussi, mais ce n'est pas une sensation auditive, c'est un vrai constat visuel.
    De toutes façons, j'utilise un algo exponentiel.
    C'est juste que j'attends de corriger ce problème avant de le mettre en place.

    ps : J'ai testé la demo d'exemple que QAudioOutput, il y a aussi une barre de volume.
    Et bien j'ai le même souci !

    Quelqu'un d'autre peut il essayer ?
    Et surtout, regarder si visuellement le curseur du mixeur windows dépasse les 50% ?
    Merci.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Personne pour essayer ? ^^
    PS, après investigation, il semblerai que ce soit un bug de waveOutSetVolume de Qt sur win7.

    Une idée pour palier à ça ?

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Je vais bien de 0 à 100%, tu dois avoir un limiteur de volume au niveau de tes pilotes, quelque chose du genre.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Citation Envoyé par Troudhyl Voir le message
    Je vais bien de 0 à 100%, tu dois avoir un limiteur de volume au niveau de tes pilotes, quelque chose du genre.
    Ah on se croise !
    Quelque chose me dit que tu es sur xp ^^.
    Ps : mon edit du dessus ^^.

    Sinon, je n'ai aucun souci avec d'autres applications telles que Foobar2000 ou tout va bien.
    Je sais que mes périphériques ne brident rien.
    Qt utilise "waveOutSetVolume".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void QAudioOutputPrivate::setVolume(qreal v)
    {
        const qreal normalizedVolume = qBound(qreal(0.0), v, qreal(1.0));
        if (deviceState != QAudio::ActiveState) {
            volumeCache = normalizedVolume;
            return;
        }
        const qint16 scaled = normalizedVolume * 0xFFFF;
        DWORD vol = MAKELONG(scaled, scaled);
        MMRESULT res = waveOutSetVolume(hWaveOut, vol);
        if (res == MMSYSERR_NOERROR)
            volumeCache = normalizedVolume;
    }
    Quelque chose semble l'empêcher de stocker volumeCache correctement sur certaines config.
    Je suis sur Win7x64.

Discussions similaires

  1. Drole de bogue avec Delphi?
    Par Jayceblaster dans le forum Delphi
    Réponses: 8
    Dernier message: 24/08/2006, 14h23
  2. De l'aide SVP un petit bogue de script une reconnaissance confuse
    Par richard77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/05/2006, 14h03
  3. [PhpPgAdmin] c'est lui qui bogue ou c'est moi ?
    Par Chauve souris dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 28/11/2005, 16h30
  4. Réponses: 4
    Dernier message: 18/04/2005, 09h06
  5. [regex][string] replaceAll bogué ?
    Par 7eme dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 13/11/2003, 16h36

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