It works as expected just by adding m4a to the list of file extension
supported by SoundSourceSndFile! Unfortunately libsndfile from Fedora 22
fails to open the ALAC file (see logs below). SoundSourceFFmpeg opens and
plays the file, although it does not properly detect the end of the file.
I've used an example file from Linn Records for testing purposes:
http://www.linnrecords.com/linn-downloads-testfiles.aspx
In the following log messages you can see how the SoundSources that have
been registered for the file extension m4a are engaged according to their
priority: SoundSourceM4A SoundSourceSndFile SoundSourceFFmpeg
Debug [AnalyserQueue 1]: Obtained SoundSource for /home/uk/Music/Corrupt
Tracks/Linn/tone16bit.m4a from provider Nero FAAD2
Warning [AnalyserQueue 1]: No AAC track found:
file:///home/uk/Music/Corrupt Tracks/Linn/tone16bit.m4a
Warning [AnalyserQueue 1]: Failed to open AudioSource for file
/home/uk/Music/Corrupt Tracks/Linn/tone16bit.m4a with provider Nero FAAD2
Debug [AnalyserQueue 1]: Obtained SoundSource for /home/uk/Music/Corrupt
Tracks/Linn/tone16bit.m4a from provider libsndfile
Warning [AnalyserQueue 1]: Error opening libsndfile file:
file:///home/uk/Music/Corrupt Tracks/Linn/tone16bit.m4a File contains data
in an unknown format.
Warning [AnalyserQueue 1]: Failed to open AudioSource for file
/home/uk/Music/Corrupt Tracks/Linn/tone16bit.m4a with provider libsndfile
Debug [AnalyserQueue 1]: Obtained SoundSource for /home/uk/Music/Corrupt
Tracks/Linn/tone16bit.m4a from provider FFmpeg
Debug [AnalyserQueue 1]: New SoundSourceFFmpeg : /home/uk/Music/Corrupt
Tracks/Linn/tone16bit.m4a
Debug [Main]: WSpinny::slotCoverFound WSpinny(0x556bb50, name =
SpinnySingleton1) CoverInfo(NONE,GUESSED,,0,/home/uk/Music/Corrupt
Tracks/Linn/tone16bit.m4a) QSize(0, 0)
Debug [AnalyserQueue 1]: ffmpeg: NEW FFMPEG API using libavresample
Debug [AnalyserQueue 1]: Created sample rate converter for conversion of
44100 Hz format: s16p with: 2 (layout: 3 ) channels (BPS 2 )
Debug [AnalyserQueue 1]: To 44100 HZ format: flt with 2 (layout: 3 )
channels (BPS 4 )
Debug [AnalyserQueue 1]: ffmpeg: Samplerate: 44100 , Channels: 2
Debug [AnalyserQueue 1]: Opened AudioSource for file /home/uk/Music/Corrupt
Tracks/Linn/tone16bit.m4a with provider FFmpeg
Debug [AnalyserQueue 1]: AnalysisDAO fetched 0 analyses, 0 bytes for track
47 in 0 ms
Debug [AnalyserQueue 1]: Vampanalyser BlockSize: 1024
Debug [AnalyserQueue 1]: Vampanalyser StepSize: 512
Debug [AnalyserQueue 1]: Beat calculation started with plugin
qm-tempotracker:0
Debug [AnalyserQueue 1]: Vampanalyser BlockSize: 32768
Debug [AnalyserQueue 1]: Vampanalyser StepSize: 32768
Debug [AnalyserQueue 1]: Key calculation started with plugin qm-keydetector:2
Warning [Engine]: VisualPlayPosition: Audio API provides invalid time
stamps, waveform syncing disabled. DacTime: 1883.51 EntrytoDac: 23514
Debug [AnalyserQueue 1]: SoundSourceFFmpeg::readFramesToCache: Packet too
big or File end
Debug [CachingReaderWorker 1]: SoundSourceFFmpeg::readFramesToCache: Packet
too big or File end
Debug [AnalyserQueue 1]: SoundSourceFFmpeg::readFramesToCache: Packet too
big or File end
Debug [AnalyserQueue 1]: SoundSourceFFmpeg::readFramesToCache: Packet too
big or File end
Debug [AnalyserQueue 1]: SoundSourceFFmpeg::readFramesToCache: Packet too
big or File end
Debug [AnalyserQueue 1]: SoundSourceFFmpeg::readFramesToCache: Packet too
big or File end
Warning [AnalyserQueue 1]: DEBUG ASSERT: framesRead = framesToRead in
file src/analyserqueue.cpp, line 185
Warning [AnalyserQueue 1]: DEBUG ASSERT:
pAudioSource-isValidFrameIndex(frameIndex) in file src/analyserqueue.cpp,
line 187
Warning [AnalyserQueue 1]: DEBUG ASSERT:
pAudioSource-isValidFrameIndex(frameIndex) in file src/analyserqueue.cpp,
line 222
On 06/16/2015 11:46 PM, Uwe Klotz wrote:
Main blocker: Mixxx currently uses only the file extension for the
determining the file type. The file extension .m4a is already used for
AAC files even if both AAC and ALAC files are stored in an MP4 container
with the same file extension.
It might be possible with my extension of the SoundSource plugin framework:
https://github.com/mixxxdj/mixxx/pull/605
Drawback: ALAC files will first be opened by SoundSourceM4A first. This
will fail and then SoundSourceSndFile takes over.
Uwe
P.S.: I have converted all my ALAC files to FLAC (including all metadata
and cover art) when I stopped using iTunes for managing my music
collection. It's a simple shell script that uses ffmpeg and metaflac.
On 06/16/2015 09:24 PM, Sean M. Pappalardo - D.J. Pegasus wrote:
Hi everyone.
Apparently ALAC support has been added to libsndfile (since 2012.) We
need to adjust Mixxx to allow loading of these file types so we can
ensure they work. Does anyone have any ALAC files they can test with?
(This is of interest because some digital DJ music pools supply music in
ALAC format.)
Sincerely,
Sean M. Pappalardo
D.J. Pegasus