On Tue, Dec 14, 2010 at 7:05 AM, Adam Davison <adamdavi...@gmail.com> wrote: > Yeah Phonon didn't expose audio data at all in 4.6 but there were > noises that in 4.7 things would be moving in the right direction. It's > a shame things haven't quite gone where we want them... > > It would be really great if Phonon did what we wanted because it's > built into Qt and would only require 1 lot of code rather than a > per-platform backend. Which is not to talk down what Albert is doing. > But I'm sure he remembers as well as me why we ditched our native > ALSA, Jack, ASIO etc code for PortAudio after the 1.5.x releases. > > It's worth bearing in mind that Phonon is fairly immature and if we > complain about the bits we don't like it may well have an impact. > Ultimately getting Phonon to do what we want may be the best long-term > strategy for better format support in Mixxx. Maybe it's always going > to be too heavyweight to provide realtime speeds. But if we say we > want it they may be able to expose some of the lower-level decoding > stuff in a future version. > > If you have insight into what exactly we need here, I would recommend > trying to make sure someone relevant knows that we're probably one of > the biggest audio applications using Qt (in users if not money :)) and > that this is what we would need out of them. >
I pretty much agree with everything you said, but we've been waiting for Phonon to mature for 2 years and it hasn't happened. Even worse, I think Phonon and Qt in general are quickly becoming less relevant because hell's going to freeze over before there's iOS and Android backends for either. Re: QuickTime - Turns out there's a nasty namespace collision with "SoundSource" in Mixxx and QucikTime. I'd have to throw Mixxx's SoundSource class into a namespace to fix it, but I'm anticipating that to be more difficult to do than it should be. Anyways, I did some more digging and the API of choice on Windows these days is the Source Reader API in Microsoft Media Foundation. It's only for Vista+, but it looks significantly easier to use than any of the other five Microsoft APIs I've looked it. If anyone wants to work on a Source Reader backend for Mixxx, there's a great example here: http://msdn.microsoft.com/en-us/library/dd757929(v=VS.85).aspx Anyone want to get a head start on this? Thanks, Albert > > On 14 December 2010 14:29, RJ Ryan <rr...@mit.edu> wrote: >> I think the main problem we have with Phonon is that it is an abstraction >> level higher than what we need. It's more oriented around playing files for >> you. >> It does seem to support a raw-data output via AudioDataOutput, but the >> description itself says it's not for realtime use: >> "Although it is not designed for realtime performance, the latencies >> associated with accessing the data should be low enough for applications >> that provide visualizations of the data. This class can also be used to save >> the audio data for further processing." >> Beyond this, another deal-breaker is that the most precise way to refer to >> time offered by Phonon is milliseconds. You seek by saying the millisecond >> you would like to seek to. >> RJ >> On Tue, Dec 14, 2010 at 9:04 AM, Adam Davison <adamdavi...@gmail.com> wrote: >>> >>> I think from a user point of view DirectX/CoreAudio would be a >>> preferable choice to Quicktime. For Windows users (i.e. most of our >>> users) Quicktime is a large additional download (O(100MB)). Quicktime >>> is fairly intrusive on windows too, generally slow, takes over all >>> your file types, installs stuff that sits in the system tray the whole >>> time and other unsavoury things like that (at least the last time I >>> tried it). I think we'll make a lot of people angry if we force them >>> to install Quicktime. >>> >>> Of course there is the pragmatic problem of the fact that most of our >>> developers are linux/osx and know nothing about DirectX... >>> >>> I would suggest that someone takes a more serious look at the current >>> state of Qt's Phonon stuff on Windows before implementing a Quicktime >>> layer. >>> >>> For linux we can use the distribution provided copy of libmp4v2 (or >>> ffmpeg if someone is feeling particularly enthusiastic/masochistic). >>> >>> Adam >>> >>> On 14 December 2010 13:13, Tobias Rafreider <dj.raffi....@googlemail.com> >>> wrote: >>> > Hey all, >>> > >>> > Quicktime is my preference for portability. It solves AAC playback and >>> > licensing issues on both OS X and Windows (I guess). The drawback is >>> > that Linux users won't be able to use M4A out of the box. Maybe we >>> > hazard the consequence. >>> > >>> > If we decide to use Quicktime and Albert can provide an initial >>> > implementation for OS X I am willing to "port" it to Win. Ideally, I >>> > will refactor the code such that we load Quicktime dynamically by using >>> > the QLibrary interface. If quicktime.dll on Windows is not available, no >>> > AAC playback is possible. We do same for MP3 recording and streaming via >>> > lame. >>> > >>> > Alternatively, since we have stable AAC code via libmp4v2 it might be >>> > possible to refactor the plugin code. If [libmp4v2.dll |libmp4v2.so] is >>> > available M4A playback is possible. I do not know if the plugin code >>> > works that way. But, there are a lot of libmp4v2.dll files available via >>> > google. It would be rather simple for our community users to activate >>> > AAC. Recall that AAC is a heavily requested feature in our forums. >>> > >>> > >>> > Thanks, >>> > >>> > Tobias >>> > >>> > Am 13.12.2010 19:32, schrieb Albert Santoni: >>> >> Hey Tobias, >>> >> >>> >> Yes, we could also use Quicktime or a native API like DirectShow. >>> >> Unfortunately, I'm going to be stuck with only my Macbook for the next >>> >> month, but I can still try playing with the Quicktime Audio Extraction >>> >> API: >>> >> http://developer.apple.com/quicktime/audioextraction.html >>> >> >>> >> http://developer.apple.com/library/mac/#samplecode/SimpleAudioExtraction/Introduction/Intro.html >>> >> >>> >> The ExtAudioFile API itself wasn't bad - once you have stuff >>> >> initialized, the basic decoding functions (read/seek) were >>> >> straightforward to use. This API also supposedly exists on iOS, which >>> >> is a bonus. :) >>> >> >>> >> I think making Quicktime a requirement on Windows for AAC playback is >>> >> not outlandish, so I can try to play around with that. >>> >> >>> >> Also, if we do manage to get a couple of these native or near-native >>> >> backends working, I'd be willing to convert them into pure C++ (no Qt) >>> >> and roll them into a library. We can't be the only people who need >>> >> cross-platform, low-level audio decoding using native APIs that don't >>> >> carry any legal baggage. (Distributing an MP3 decoder with your >>> >> application made more sense in the Windows 98 days.) >>> >> >>> >> Thanks guys, >>> >> Albert >>> >> >>> >> >>> >> On Mon, Dec 13, 2010 at 4:31 AM, Tobias Rafreider >>> >> <dj.raffi....@googlemail.com> wrote: >>> >>> Hey, >>> >>> >>> >>> great job. Could we also use Quicktime API to decode AAC/M4A on >>> >>> Windows? >>> >>> >>> >>> Tobias >>> >>> >>> >>> Am 13.12.2010 11:36, schrieb Adam Davison: >>> >>>> Hi, >>> >>>> >>> >>>> Just to say this is excellent and exactly how we should be doing >>> >>>> it... >>> >>>> >>> >>>> What happened to phonon in qt 4.7 in the end, have they managed to >>> >>>> expose audio data yet? >>> >>>> >>> >>>> Adam >>> >>>> >>> >>>> On 13 December 2010 06:55, Albert Santoni<albe...@mixxx.org> >>> >>>> wrote: >>> >>>>> Hi guys, >>> >>>>> >>> >>>>> Tonight I wrote a SoundSourceCoreAudio class that plays M4As using >>> >>>>> the >>> >>>>> system provided decoder on OS X. It uses the "Audio File Services" >>> >>>>> API >>> >>>>> (ExtAudioFile), which is part of AudioToolbox, which is part of Core >>> >>>>> Audio. We can freely distribute this as part of our main Mixxx >>> >>>>> builds >>> >>>>> without worrying about M4A patent issues because we're using Apple's >>> >>>>> decoder, which OS X users have already paid for. >>> >>>>> >>> >>>>> Special thanks to Apple's super crappy documentation and endless >>> >>>>> layers of redundant APIs. I spent more time trying to figure out >>> >>>>> which >>> >>>>> API to use than actually writing code. >>> >>>>> >>> >>>>> Seeking and metadata decoding (using TagLib) work fine. I've only >>> >>>>> tested with 44100 Hz / 16-bit files, but if it doesn't work with >>> >>>>> other >>> >>>>> formats, it shouldn't be difficult to fix. >>> >>>>> >>> >>>>> Code is pushed to: >>> >>>>> lp:~mixxxdevelopers/mixxx/features_coreaudio >>> >>>>> >>> >>>>> Enjoy, >>> >>>>> Albert >>> >>>>> >>> >>>>> >>> >>>>> ------------------------------------------------------------------------------ >>> >>>>> Oracle to DB2 Conversion Guide: Learn learn about native support for >>> >>>>> PL/SQL, >>> >>>>> new data types, scalar functions, improved concurrency, built-in >>> >>>>> packages, >>> >>>>> OCI, SQL*Plus, data movement tools, best practices and more. >>> >>>>> http://p.sf.net/sfu/oracle-sfdev2dev >>> >>>>> _______________________________________________ >>> >>>>> Mixxx-devel mailing list >>> >>>>> Mixxx-devel@lists.sourceforge.net >>> >>>>> https://lists.sourceforge.net/lists/listinfo/mixxx-devel >>> >>>>> >>> >>>> >>> >>>> ------------------------------------------------------------------------------ >>> >>>> Oracle to DB2 Conversion Guide: Learn learn about native support for >>> >>>> PL/SQL, >>> >>>> new data types, scalar functions, improved concurrency, built-in >>> >>>> packages, >>> >>>> OCI, SQL*Plus, data movement tools, best practices and more. >>> >>>> http://p.sf.net/sfu/oracle-sfdev2dev >>> >>>> _______________________________________________ >>> >>>> Mixxx-devel mailing list >>> >>>> Mixxx-devel@lists.sourceforge.net >>> >>>> https://lists.sourceforge.net/lists/listinfo/mixxx-devel >>> >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> Oracle to DB2 Conversion Guide: Learn learn about native support for >>> >>> PL/SQL, >>> >>> new data types, scalar functions, improved concurrency, built-in >>> >>> packages, >>> >>> OCI, SQL*Plus, data movement tools, best practices and more. >>> >>> http://p.sf.net/sfu/oracle-sfdev2dev >>> >>> _______________________________________________ >>> >>> Mixxx-devel mailing list >>> >>> Mixxx-devel@lists.sourceforge.net >>> >>> https://lists.sourceforge.net/lists/listinfo/mixxx-devel >>> >>> >>> > >>> > >>> > >>> > ------------------------------------------------------------------------------ >>> > Lotusphere 2011 >>> > Register now for Lotusphere 2011 and learn how >>> > to connect the dots, take your collaborative environment >>> > to the next level, and enter the era of Social Business. >>> > http://p.sf.net/sfu/lotusphere-d2d >>> > _______________________________________________ >>> > Mixxx-devel mailing list >>> > Mixxx-devel@lists.sourceforge.net >>> > https://lists.sourceforge.net/lists/listinfo/mixxx-devel >>> > >>> >>> >>> ------------------------------------------------------------------------------ >>> Lotusphere 2011 >>> Register now for Lotusphere 2011 and learn how >>> to connect the dots, take your collaborative environment >>> to the next level, and enter the era of Social Business. >>> http://p.sf.net/sfu/lotusphere-d2d >>> _______________________________________________ >>> Mixxx-devel mailing list >>> Mixxx-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/mixxx-devel >> >> > > ------------------------------------------------------------------------------ > Lotusphere 2011 > Register now for Lotusphere 2011 and learn how > to connect the dots, take your collaborative environment > to the next level, and enter the era of Social Business. > http://p.sf.net/sfu/lotusphere-d2d > _______________________________________________ > Mixxx-devel mailing list > Mixxx-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mixxx-devel > ------------------------------------------------------------------------------ Lotusphere 2011 Register now for Lotusphere 2011 and learn how to connect the dots, take your collaborative environment to the next level, and enter the era of Social Business. http://p.sf.net/sfu/lotusphere-d2d _______________________________________________ Mixxx-devel mailing list Mixxx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mixxx-devel