2013/3/22 Till Oliver Knoll <till.oliver.kn...@gmail.com>: > Hi, > > I am trying to learn OpenAL. For that I need to read simple *.wav files > and thought the QAudioDecoder (Qt 5.0.1 - OS X 10.8.2) would be a > perfect fit. > > I have: > > m_audioDecoder = new QAudioDecoder; > qDebug("Error: %s", qPrintable(m_audioDecoder->errorString())); > connect(m_audioDecoder, SIGNAL(bufferReady()), > this, SLOT(handleBufferReady())); > ... > // select WAV file > ... > m_audioDecoder->setSourceFilename(filePath); > m_audioDecoder->start(); > ... > > When I run my application from within Qt Creator (in debug mode) I > immediatelly get on the console ("Application Output"): > > defaultServiceProvider::requestService(): no service found for - > "org.qt-project.qt.audiodecode"
Okay, so I have done some google research: it seems that the Q_MEDIASERVICE_AUDIODECODER ("org.qt-project.qt.audiodecode") interface is simply not implemented on Mac (OS X), e.g.in the QuickTime 7 based plugin: http://qt.gitorious.org/qt/qtmultimedia/blobs/stable/src/plugins/qt7/qt7serviceplugin.mm or in the AV Foundation based plugin: http://qt.gitorious.org/qt/qtmultimedia/blobs/stable/src/plugins/avfoundation/mediaplayer/avfmediaplayerserviceplugin.mm Note that in the create() method the only supported key seems to be Q_MEDIASERVICE_MEDIAPLAYER. As opposed to e.g. the GStreamer based plugin implementation: http://qt.gitorious.org/qt/qtmultimedia/blobs/stable/src/plugins/gstreamer/audiodecoder/qgstreameraudiodecoderserviceplugin.cpp which seems to have a dedicated QAudioDecoder plugin (the create() method reacts upon the Q_MEDIASERVICE_AUDIODECODER key. The supported key(s) for the GStreamer based AudioDecorder plugin are also listed here, as I just figured out: http://qt.gitorious.org/qt/qtmultimedia/blobs/stable/src/plugins/gstreamer/audiodecoder/audiodecoder.json However I don't find any such key in the AV Foundation based Mac plugins: http://qt.gitorious.org/qt/qtmultimedia/trees/stable/src/plugins/avfoundation (Nor in the QuickTime 7 based plugin: http://qt.gitorious.org/qt/qtmultimedia/trees/stable/src/plugins/qt7 which is probably outdated anyway: AV Foundation seems to be the way to go now). (I assume the above links point to the latest Master branch ;)). That seems to strongly imply that there is no QAudioDecoder support on Mac for now :( And as QMultimedia was last maintained in Australia (http://qt-project.org/wiki/Maintainers) I am not sure if anyone is still working on that one (Michael Goddard)? Well, at least there are still commits to QMultimedia: https://qt.gitorious.org/qt/qtmultimedia (Hint hint: we want audio decoding support on Mac ;)) In the meantime I will probably totally *mis-use* the private https://qt.gitorious.org/qt/qtmultimedia/blobs/stable/src/multimedia/audio/qwavedecoder_p.h, as decoding simple (Mono, 16bit 44 KHz PCM data) WAVE files is all I really need for now >:) For anyone who wants to jump in: in the "OpenAL Example" http://developer.apple.com/library/mac/#samplecode/OpenALExample/Listings/MyOpenALSupport_c.html#//apple_ref/doc/uid/DTS10003587-MyOpenALSupport_c-DontLinkElementID_5 I stumbled over the function "ExtAduioFileOpen" that they use in that example: https://developer.apple.com/library/mac/#documentation/MusicAudio/Reference/ExtendedAudioFileServicesReference/Reference/reference.html "Extended Audio File Services provides simplified audio file access, combining features of Audio File Services and Audio Converter Services. It provides a unified interface for reading and writing compressed as well as linear PCM audio files." That API looks pretty straight-forward to me. Maybe I'll try to come up with a "proof-of-concept" Qt Mac AudioDecoder plugin using that API... I am not sure whether that is the proper way nowadays to decode audio files on Mac (I am not a Cocoa expert by no means ;)) or whether the AV Foundation classes provide a better way. Cheers, Oliver _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest