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

Discussion :

Question sur la doc de Phonon::Mediasource

  1. #1
    Invité
    Invité(e)
    Par défaut Question sur la doc de Phonon::Mediasource
    Bonjour,
    J'ai une question à propos de la classe MediaSource du module Phonon : si on regarde ici il est marqué dans la description détaillée ceci :
    Currently, Qt's backends support files in local and remote locations. Support for other sources, such as CD/DVD, are planned for the future.
    = ce qui veut dire mot pour mot que les backend de Qt ne supportent pas en paramètres du constructeur un pointeur sur QIODevice* ?
    En gros lorsque je construis un objet de type MediaSource en utilisant ce constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MediaSource::MediaSource (QIODevice * ioDevice)
    : est-ce que cela veut dire que le backend de Qt ne peut pas crée l'objet avec pour paramètre le pointeur vers la carte son ?

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 808
    Points
    219 808
    Billets dans le blog
    125
    Par défaut
    Bonjour,

    En fait, Qt propose un constructeur de MediaSource prennant QIODevice* dans les cas ou vous avez déjà ouvert un fichier (ou alors, de la création à la volée) et que vous voulez le lire.
    Il est indiqué que pour Windows, votre QIODevice doit contenir des données sur les formats suivants: avi, mp3, or mpg
    Cela montre bien que les données qui doivent être passé sont très restrictives.

    Et MediaSource ne peut pas être un pointeur sur une carte son (enfin je ne pense pas) (Parlez vous d'une entrée MIC par exemple ?)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Bon allez je me lance : je pose la question car j'ai un petit souci de compréhension par rapport à la doc : la class QAudioInput : la fonction Ils disent ceci : returns a pointer to the QIODevice being used to handle data transfert
    Quand ils disent returns a pointer : la fonction retourne une adresse mémoire : celle du périphérique audio contenu dans l'objet de type QAudioInput non ? C'est à moi de crée la variable pointeur non ?

    J'ai vraiment envie de trouver le truc par moi-même, aussi puis-je demander s'il vous plaît, sans trop vouloir abuser, de juste répondre à la question sans dire comment faire ? J'aimer bien trouver les choses par moi-même et puis me donner la solution ne m'apprendra rien...

    J'espère qu'il n'y a pas de souci et que vous me comprendrez je ne cherche à vexer personne.
    Merci d'avance pour la réponse. Bonne soirée.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 808
    Points
    219 808
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par gizmo27 Voir le message
    Bonsoir,
    Bon allez je me lance : je pose la question car j'ai un petit souci de compréhension par rapport à la doc : la class QAudioInput : la fonction Ils disent ceci : returns a pointer to the QIODevice being used to handle data transfert
    Quand ils disent returns a pointer : la fonction retourne une adresse mémoire : celle du périphérique audio contenu dans l'objet de type QAudioInput non ? C'est à moi de crée la variable pointeur non ?

    J'ai vraiment envie de trouver le truc par moi-même, aussi puis-je demander s'il vous plaît, sans trop vouloir abuser, de juste répondre à la question sans dire comment faire ? J'aimer bien trouver les choses par moi-même et puis me donner la solution ne m'apprendra rien...

    J'espère qu'il n'y a pas de souci et que vous me comprendrez je ne cherche à vexer personne.
    Merci d'avance pour la réponse. Bonne soirée.
    J'espère ne pas en dire trop

    Start retourne un pointeur sur un QIODevice. Cela veut dire que cela retourne une variable contenant l'emplacement du QIODevice qui nous intéresse.
    Maintenant, sur l'objet pointé en lui même, je pense que c'est une juste représentation mémoire du fichier lu (fichier passé dans le constructeur de MediaSource)

  5. #5
    Invité
    Invité(e)
    Par défaut
    ah vous êtes là mdr non non ça va mais j'espère ne pas trop avoir abusé.
    Aucun soucy j'espère...
    Et merci beaucoup pour la réponse. Je suis soulagé : ça ne vient pas d'un problème de compréhension de my taylor is rich (poor?)
    Bonne soirée ou bonne nuit devrais-je dire. A bientôt.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Quand on regarde la doc de phonon : dans la classe MediaSource on a ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	MediaSource ( const QString & fileName )
    	MediaSource ( const QUrl & url )
    	MediaSource ( Phonon::DiscType discType, const QString & deviceName = QString() )
    	MediaSource ( QIODevice * ioDevice )
    	MediaSource ( const MediaSource & other )
    Le but de mon projet étant de réaliser un égaliseur graphique audio en temps réel, je veux :
    => dès que la carte son est "traversée" par un flux audio, crée un objet "flux audio"
    Avec la classe MediaSource une telle chose est impossible si je ne spécifie pas le chemin du fichier ou l'url ?
    La librairie actuellement ne me permet pas de dire : "crées un objet son qui répresente en fait le flux audio traversé par la carte son"
    Objet qui récupèrerait le flux audio passant dans la carte son, et qui me permettrait de bidouiller facilement afin d'insérer des effets d'égalisation pour une plage de fréquence donnée ?

    PS : dans le cas où ce que je veux faire est impossible, j'avais pour idée d'enregistrer le son dans un fichier (c'est possible avec QAudioInput) et de récupérer le fichier contenant le son enregistré avec le MediaSource mais bon...
    De plus, il y aurait 2 sons qui sortiraient de la carte son : le son normal + le son égalisé ? ça a l'air rock'n roll...
    Dernière modification par Invité ; 14/02/2011 à 19h31.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Hier soir j'ai eu une révélation : ma tête a heurté la cuvette des toilettes et il s'est présenté là, devant moi : le convecteur temporel !
    Non plus sérieusement : j'ai pensé à une chose pour mon souci audio : pourquoi je ne passerais pas par QTCPSocket ? Du moment que j'ai localisé la carte avec le port ? Ex : IP 127.0.0.1 : port 200 ? Mes paquets contiendraient de l'audio et miracle : c'est une classe dérivée de QIODevice ! Pouvez-vous me dire si cette piste n'est pas suicidaire dans le cas où je n'ai aucune connaissance en programmation réseau mdr ? Passez une bonne journée à bientôt.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 808
    Points
    219 808
    Billets dans le blog
    125
    Par défaut
    Hum,

    Peut être qu'il est possible de faire encore plus local avec un QIODevice que l'on remplit progressivement ... (ce qui enlèverai la partie réseau ?)
    Sinon ce n'est pas trop un mauvaise idée, sauf que ... la carte audio en elle même n'a pas d'adresse IP / Port (ah moins, qu'elle ne soit pas dans le PC ... ?)

  9. #9
    Invité
    Invité(e)
    Par défaut
    Dans le gestio de périph de mon pc quand je regarde la carte son il y a de marqué "emplacement 65535 (bus interne)"
    Et pour l'IP eh bien c'est 127.0.0.1 : cette IP désigne le local non ? C'est le pc même dans ce cas ? Je ne sais pas... C'est bizarre il me semble pourtant que chaque matériel du pc (carte son, disque dur...) utilise un port pourtant...

    Dans tous les cas il est vrai que cela aurait été plus pratique s'il y avait une classe qui communique direct avec le pilote de la carte son, parceque là j'ai quand même l'impression, vu mon niveau, de m'engager dans un chemin plus qu'épineux...
    Dernière modification par Invité ; 16/02/2011 à 10h00.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 808
    Points
    219 808
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par gizmo27 Voir le message
    Dans le gestio de périph de mon pc quand je regarde la carte son il y a de marqué "emplacement 65535 (bus interne)"
    Et pour l'IP eh bien c'est 127.0.0.1 : cette IP désigne le local non ? C'est le pc même dans ce cas ? Je ne sais pas... C'est bizarre il me semble pourtant que chaque matériel du pc (carte son, disque dur...) utilise un port pourtant...

    Dans tous les cas il est vrai que cela aurait été plus pratique s'il y avait une classe qui communique direct avec le pilote de la carte son, parceque là j'ai quand même l'impression, vu mon niveau, de m'engager dans un chemin plus qu'épineux...
    Le chemin n'est peut etre pas si epineux que cela, mais c'est la facon a laquelle vous foncez dedans qui est assez dangeureuse

    Plus serieusement, c'est vrai, chaque peripherique a un port, mais celui la n'est pas le meme que les port du reseau. Effectivement, lorsque l'on parle de port pour peripheriques, il faut voir cela comme un cable (ou un bus (connection)) entre la carte mere et le peripherique en lui meme.
    Il faut un port different pour chaque peripherique, pour que le systeme puisse envoyer des messages a un peripherique et non a un autre.
    Du coup... je reste toujours perplexe sur le "est ce que la carte son peut etre utilise par le reseau?" Et j'ai bien peur (pour vous) que la reponse soit non.

    La solution, je pense c'est:
    - Lire un flux audio (fichier ou n'importe quoi d'autre)
    - Appliquer les valeurs de l'egaliseur sur le flux du fichier (application de l'effet)
    - Envoyer le resultat a Qt::MediaSource.

    Je pense qu'il faut que je regarde beaucoup plus la documentation pour savoir ce qui est possible de faire.

    De plus, dans Phonon (dependant de la machine / implementation) il y a deja un egaliseur (presque graphique) qui permet de changer le son (ainsi qu'une petite serie d'effets additionnels)

  11. #11
    Invité
    Invité(e)
    Par défaut
    oui j'ai mieux regardé et effectivement ce sont des emplacement physiques donc ça ne va pas. l'idéal aurait été de communique directement avec le pilote de la carte son mais là j'imagine que c'est hard...
    En fait les classes qui dérivent de QIODevice sont : QFile, QBuffer, QAbstractSocket, QLocalSocket, QNetworkReply, QProcess, Q3SocketDevice, Q3Socket.
    Eliminés de ceci les QAbstractSocket, QLocalSocket, QNetworkReply, QProcess, Q3SocketDevice, Q3Socket. Donc il reste des fichiers ou des buffers : étant donné que les buffers ça me fait un peu peur alors il me reste les fichiers. Merci à vous mais ne vous embêter pas trop à regarder la doc : c'est à moi qu'il appartient de chercher et de trouver la solution : si ça doit prendre un an eh bien ça prendra 1 an je ne suis pas pressé mdr
    Merci pour la réponse et bonne journée.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 808
    Points
    219 808
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par gizmo27 Voir le message
    oui j'ai mieux regardé et effectivement ce sont des emplacement physiques donc ça ne va pas. l'idéal aurait été de communique directement avec le pilote de la carte son mais là j'imagine que c'est hard...
    C'est hard, et je ne pense pas que ce soit totalement une bonne solution (Qt donne une interface pour faire quelque chose de proche a cela, et ce n'est pas pour (au moins, cela garde une compatibilite entre les differents peripheriques / OS).

    EDIT:
    En regardant rapidement la documentation de Qt ... (ici [FR] http://qt.developpez.com/doc/latest/phonon-module/ )
    On remarque que http://qt.developpez.com/doc/latest/phonon-audiooutput/ semble correspondre a l'interface sur le peripherique audio de sortie, que vous cherchez temps.
    Apres, comme on peut lire dans la doc ... pour lui envoyer du son, il faut le connecter avec un MediaObject -> http://qt.developpez.com/doc/latest/...utput/#details -> http://qt.developpez.com/doc/latest/...bject/#details et on arrive ... au MediaSource http://qt.developpez.com/doc/latest/phonon-mediasource/
    Ok je n'ai pas avance ...

    Et finalement, je ne vois que la solution de l'injection en passant par un QIODevice...

    Comme je l'avais dit, on peut faire des effets avec la classe directement integre pour -> http://qt.developpez.com/doc/latest/phonon-effect/
    Peut etre que l'idee (la meilleure je veux dire) c'est d'herite de Effect et de faire son propre truc ?
    Sachant que le pipeline sera donc:
    QMediaSource dans QMediaObject -----> Effect ----> AudioOutput

    EDIT2:
    En fait, pour ce que vous voulez faire, je continue a douter de la possibilite de faire avec Qt. Effectivement Qt donne une interface trop haut niveau pour avoir acces au stream et autre trucs que l'on peut avoir besoin pour travailler sur le son ...

    EDIT3:
    A la place des fichiers, vous devriez vous pencher sur les buffer en fait. Ce n'est pas parce que quelque chose vous fait peur qu'il ne faut pas decouvrir ce que c'est

  13. #13
    Invité
    Invité(e)
    Par défaut
    Quand on regarde l'exe capabilities.exe fournit avec Qt Creator l'effet que je veux existe déjà. De toute façon, fichier ou buffer, il faudra que je localise le fichier en cours de lecture/l'emplacement mémoire du buffer. Mais ça je compte de trouver tout seul (bon je sais c'est hardcore mais bon... )
    Bonne journée. Cordialement, Gizmo.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 808
    Points
    219 808
    Billets dans le blog
    125
    Par défaut
    Pour la surcharge des effets ... cela risque d'etre assez pointu (mais super interessant )
    (J'ai regarde la code de Qt directement pour en savoir un peu plus ... et je vous conseille de faire de meme si vous voulez surcharger la classe Effect).
    On peut aussi utiliser la methode qui consiste a regarder comment les autres effets ont ete developpe

  15. #15
    Invité
    Invité(e)
    Par défaut
    Vous avez confiance en moi là...
    Connaîtriez-vous un site Internet où la définition de la mémoire tampon et son fonctionnement sont bien expliqués : j'ai bien regardé ici et sur le net mais pour l'instant je n'ai rien trouvé.
    Ou bien si ça ne dérange pas me l'expliquer avec vos mots à vous... Enfin je ne veux pas vous embêter de trop...
    Dernière modification par Invité ; 16/02/2011 à 19h48.

Discussions similaires

  1. Une question sur la doc php.net
    Par abc.xyz dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2015, 11h22
  2. [SAX] Question sur la validation d'un doc XML
    Par nahr_Elk dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 19/10/2009, 11h28
  3. Questions sur la génération d'un .doc
    Par DarkSeiryu dans le forum Windows Forms
    Réponses: 19
    Dernier message: 26/01/2009, 08h43
  4. [PEAR][Auth] Question sur la doc et la gestion des sessions
    Par nathieb dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/11/2006, 19h35
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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