From b05c8413cfd03bd7bbeb0509eff6ae226427a1ec Mon Sep 17 00:00:00 2001 From: jules Date: Fri, 27 Sep 2013 10:29:42 +0100 Subject: [PATCH] Tidied up some docs and added an AudioFormat constructor. --- .../codecs/juce_AiffAudioFormat.cpp | 13 +++---- .../codecs/juce_CoreAudioFormat.cpp | 4 +-- .../codecs/juce_FlacAudioFormat.cpp | 8 ++--- .../codecs/juce_LAMEEncoderAudioFormat.cpp | 7 ++-- .../codecs/juce_MP3AudioFormat.cpp | 9 ++--- .../codecs/juce_OggVorbisAudioFormat.cpp | 34 +++++++++---------- .../codecs/juce_QuickTimeAudioFormat.cpp | 8 ++--- .../codecs/juce_WavAudioFormat.cpp | 21 ++++-------- .../format/juce_AudioFormat.cpp | 11 +++--- .../format/juce_AudioFormat.h | 15 +++++--- .../juce_core/threads/juce_ThreadLocalValue.h | 3 +- 11 files changed, 58 insertions(+), 75 deletions(-) diff --git a/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp index de78f1d881..86f99760e7 100644 --- a/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp @@ -22,9 +22,7 @@ ============================================================================== */ -//============================================================================== static const char* const aiffFormatName = "AIFF file"; -static const char* const aiffExtensions[] = { ".aiff", ".aif", 0 }; //============================================================================== const char* const AiffAudioFormat::appleOneShot = "apple one shot"; @@ -101,7 +99,7 @@ namespace AiffFileHelpers if (values.getAllKeys().contains ("MidiUnityNote", true)) { block.setSize ((sizeof (InstChunk) + 3) & ~(size_t) 3, true); - InstChunk& inst = *static_cast (block.getData()); + InstChunk& inst = *static_cast (block.getData()); inst.baseNote = getValue8 (values, "MidiUnityNote", "60"); inst.detune = getValue8 (values, "Detune", "0"); @@ -220,7 +218,7 @@ namespace AiffFileHelpers StringArray tagsArray; int bytesLeft = (int) mb.getSize(); - const char* data = static_cast (mb.getData()); + const char* data = static_cast (mb.getData()); while (bytesLeft > 0) { @@ -365,7 +363,7 @@ class AiffAudioFormatReader : public AudioFormatReader { public: AiffAudioFormatReader (InputStream* in) - : AudioFormatReader (in, TRANS (aiffFormatName)) + : AudioFormatReader (in, aiffFormatName) { using namespace AiffFileHelpers; @@ -611,7 +609,7 @@ public: AiffAudioFormatWriter (OutputStream* out, double rate, unsigned int numChans, unsigned int bits, const StringPairArray& metadataValues) - : AudioFormatWriter (out, TRANS (aiffFormatName), rate, numChans, bits), + : AudioFormatWriter (out, aiffFormatName, rate, numChans, bits), lengthInSamples (0), bytesWritten (0), writeFailed (false) @@ -879,8 +877,7 @@ private: }; //============================================================================== -AiffAudioFormat::AiffAudioFormat() - : AudioFormat (TRANS (aiffFormatName), StringArray (aiffExtensions)) +AiffAudioFormat::AiffAudioFormat() : AudioFormat (aiffFormatName, ".aiff .aif") { } diff --git a/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp index 8195242c54..6d3aafa1c8 100644 --- a/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp @@ -327,7 +327,7 @@ class CoreAudioReader : public AudioFormatReader { public: CoreAudioReader (InputStream* const inp) - : AudioFormatReader (inp, TRANS (coreAudioFormatName)), + : AudioFormatReader (inp, coreAudioFormatName), ok (false), lastReadPosition (0) { usesFloatingPointData = true; @@ -487,7 +487,7 @@ private: //============================================================================== CoreAudioFormat::CoreAudioFormat() - : AudioFormat (TRANS (coreAudioFormatName), findFileExtensionsForCoreAudioCodecs()) + : AudioFormat (coreAudioFormatName, findFileExtensionsForCoreAudioCodecs()) { } diff --git a/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp index f01454c76a..2ba64b1dc5 100644 --- a/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp @@ -83,16 +83,14 @@ namespace FlacNamespace //============================================================================== static const char* const flacFormatName = "FLAC file"; -static const char* const flacExtensions[] = { ".flac", 0 }; //============================================================================== class FlacReader : public AudioFormatReader { public: - //============================================================================== FlacReader (InputStream* const in) - : AudioFormatReader (in, TRANS (flacFormatName)), + : AudioFormatReader (in, flacFormatName), reservoir (2, 0), reservoirStart (0), samplesInReservoir (0), @@ -313,7 +311,7 @@ class FlacWriter : public AudioFormatWriter { public: FlacWriter (OutputStream* const out, double rate, uint32 numChans, uint32 bits, int qualityOptionIndex) - : AudioFormatWriter (out, TRANS (flacFormatName), rate, numChans, bits) + : AudioFormatWriter (out, flacFormatName, rate, numChans, bits) { using namespace FlacNamespace; encoder = FLAC__stream_encoder_new(); @@ -478,7 +476,7 @@ private: //============================================================================== FlacAudioFormat::FlacAudioFormat() - : AudioFormat (TRANS (flacFormatName), StringArray (flacExtensions)) + : AudioFormat (flacFormatName, ".flac") { } diff --git a/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp index ec6a18686d..0fd7780ee5 100644 --- a/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp @@ -147,12 +147,9 @@ private: }; //============================================================================== -static const char* const lameFormatName = "MP3 file"; -static const char* const lameExtensions[] = { ".mp3", nullptr }; - LAMEEncoderAudioFormat::LAMEEncoderAudioFormat (const File& lameApplication) - : AudioFormat (TRANS (lameFormatName), StringArray (lameExtensions)), - lameApp (lameApplication) + : AudioFormat ("MP3 file", ".mp3"), + lameApp (lameApplication) { } diff --git a/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp index b2589cd471..226b374a2c 100644 --- a/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp @@ -2929,14 +2929,13 @@ private: //============================================================================== static const char* const mp3FormatName = "MP3 file"; -static const char* const mp3Extensions[] = { ".mp3", nullptr }; //============================================================================== class MP3Reader : public AudioFormatReader { public: MP3Reader (InputStream* const in) - : AudioFormatReader (in, TRANS (mp3FormatName)), + : AudioFormatReader (in, mp3FormatName), stream (*in), currentPosition (0), decodedStart (0), decodedEnd (0) { @@ -2953,7 +2952,6 @@ public: } } - //============================================================================== bool readSamples (int** destSamples, int numDestChannels, int startOffsetInDestBuffer, int64 startSampleInFile, int numSamples) override { @@ -3109,10 +3107,7 @@ private: } //============================================================================== -MP3AudioFormat::MP3AudioFormat() - : AudioFormat (MP3Decoder::mp3FormatName, StringArray (MP3Decoder::mp3Extensions)) -{} - +MP3AudioFormat::MP3AudioFormat() : AudioFormat (MP3Decoder::mp3FormatName, ".mp3") {} MP3AudioFormat::~MP3AudioFormat() {} Array MP3AudioFormat::getPossibleSampleRates() { return Array(); } diff --git a/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp index 9209db7007..50c78125aa 100644 --- a/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp @@ -89,7 +89,6 @@ namespace OggVorbisNamespace //============================================================================== static const char* const oggFormatName = "Ogg-Vorbis file"; -static const char* const oggExtensions[] = { ".ogg", 0 }; const char* const OggVorbisAudioFormat::encoderName = "encoder"; const char* const OggVorbisAudioFormat::id3title = "id3title"; @@ -106,7 +105,7 @@ class OggReader : public AudioFormatReader { public: OggReader (InputStream* const inp) - : AudioFormatReader (inp, TRANS (oggFormatName)), + : AudioFormatReader (inp, oggFormatName), reservoir (2, 4096), reservoirStart (0), samplesInReservoir (0) @@ -115,10 +114,10 @@ public: sampleRate = 0; usesFloatingPointData = true; - callbacks.read_func = &oggReadCallback; - callbacks.seek_func = &oggSeekCallback; + callbacks.read_func = &oggReadCallback; + callbacks.seek_func = &oggSeekCallback; callbacks.close_func = &oggCloseCallback; - callbacks.tell_func = &oggTellCallback; + callbacks.tell_func = &oggTellCallback; const int err = ov_open_callbacks (input, &ovFile, 0, 0, callbacks); @@ -222,12 +221,12 @@ public: //============================================================================== static size_t oggReadCallback (void* ptr, size_t size, size_t nmemb, void* datasource) { - return (size_t) (static_cast (datasource)->read (ptr, (int) (size * nmemb))) / size; + return (size_t) (static_cast (datasource)->read (ptr, (int) (size * nmemb))) / size; } static int oggSeekCallback (void* datasource, OggVorbisNamespace::ogg_int64_t offset, int whence) { - InputStream* const in = static_cast (datasource); + InputStream* const in = static_cast (datasource); if (whence == SEEK_CUR) offset += in->getPosition(); @@ -245,7 +244,7 @@ public: static long oggTellCallback (void* datasource) { - return (long) static_cast (datasource)->getPosition(); + return (long) static_cast (datasource)->getPosition(); } private: @@ -267,7 +266,7 @@ public: const unsigned int bitsPerSample_, const int qualityIndex, const StringPairArray& metadata) - : AudioFormatWriter (out, TRANS (oggFormatName), sampleRate_, numChannels_, bitsPerSample_), + : AudioFormatWriter (out, oggFormatName, sampleRate_, numChannels_, bitsPerSample_), ok (false) { using namespace OggVorbisNamespace; @@ -279,13 +278,13 @@ public: { vorbis_comment_init (&vc); - addMetadata (metadata, OggVorbisAudioFormat::encoderName, "ENCODER"); - addMetadata (metadata, OggVorbisAudioFormat::id3title, "TITLE"); - addMetadata (metadata, OggVorbisAudioFormat::id3artist, "ARTIST"); - addMetadata (metadata, OggVorbisAudioFormat::id3album, "ALBUM"); - addMetadata (metadata, OggVorbisAudioFormat::id3comment, "COMMENT"); - addMetadata (metadata, OggVorbisAudioFormat::id3date, "DATE"); - addMetadata (metadata, OggVorbisAudioFormat::id3genre, "GENRE"); + addMetadata (metadata, OggVorbisAudioFormat::encoderName, "ENCODER"); + addMetadata (metadata, OggVorbisAudioFormat::id3title, "TITLE"); + addMetadata (metadata, OggVorbisAudioFormat::id3artist, "ARTIST"); + addMetadata (metadata, OggVorbisAudioFormat::id3album, "ALBUM"); + addMetadata (metadata, OggVorbisAudioFormat::id3comment, "COMMENT"); + addMetadata (metadata, OggVorbisAudioFormat::id3date, "DATE"); + addMetadata (metadata, OggVorbisAudioFormat::id3genre, "GENRE"); addMetadata (metadata, OggVorbisAudioFormat::id3trackNumber, "TRACKNUMBER"); vorbis_analysis_init (&vd, &vi); @@ -425,8 +424,7 @@ private: //============================================================================== -OggVorbisAudioFormat::OggVorbisAudioFormat() - : AudioFormat (TRANS (oggFormatName), StringArray (oggExtensions)) +OggVorbisAudioFormat::OggVorbisAudioFormat() : AudioFormat (oggFormatName, ".ogg") { } diff --git a/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp index e73b4ed7ed..17a06da616 100644 --- a/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp @@ -66,14 +66,13 @@ namespace juce bool juce_OpenQuickTimeMovieFromStream (InputStream* input, Movie& movie, Handle& dataHandle); static const char* const quickTimeFormatName = "QuickTime file"; -static const char* const quickTimeExtensions[] = { ".mov", ".mp3", ".mp4", ".m4a", 0 }; //============================================================================== class QTAudioReader : public AudioFormatReader { public: QTAudioReader (InputStream* const input_, const int trackNum_) - : AudioFormatReader (input_, TRANS (quickTimeFormatName)), + : AudioFormatReader (input_, quickTimeFormatName), ok (false), movie (0), trackNum (trackNum_), @@ -349,8 +348,7 @@ private: //============================================================================== -QuickTimeAudioFormat::QuickTimeAudioFormat() - : AudioFormat (TRANS (quickTimeFormatName), StringArray (quickTimeExtensions)) +QuickTimeAudioFormat::QuickTimeAudioFormat() : AudioFormat (quickTimeFormatName, ".mov .mp3 .mp4 .m4a") { } @@ -368,7 +366,7 @@ bool QuickTimeAudioFormat::canDoMono() { return true; } AudioFormatReader* QuickTimeAudioFormat::createReaderFor (InputStream* sourceStream, const bool deleteStreamIfOpeningFails) { - ScopedPointer r (new QTAudioReader (sourceStream, 0)); + ScopedPointer r (new QTAudioReader (sourceStream, 0)); if (r->ok) return r.release(); diff --git a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp index f40e84aa06..859049ea34 100644 --- a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp @@ -23,7 +23,6 @@ */ static const char* const wavFormatName = "WAV file"; -static const char* const wavExtensions[] = { ".wav", ".bwf", 0 }; //============================================================================== const char* const WavAudioFormat::bwavDescription = "bwav description"; @@ -225,7 +224,7 @@ namespace WavFileHelpers { data.setSize (roundUpSize (sizeof (SMPLChunk) + (size_t) (numLoops - 1) * sizeof (SampleLoop)), true); - SMPLChunk* const s = static_cast (data.getData()); + SMPLChunk* const s = static_cast (data.getData()); s->manufacturer = getValue (values, "Manufacturer", "0"); s->product = getValue (values, "Product", "0"); @@ -293,7 +292,7 @@ namespace WavFileHelpers if (keys.contains ("LowNote", true) && keys.contains ("HighNote", true)) { data.setSize (8, true); - InstChunk* const inst = static_cast (data.getData()); + InstChunk* const inst = static_cast (data.getData()); inst->baseNote = getValue (values, "MidiUnityNote", "60"); inst->detune = getValue (values, "Detune", "0"); @@ -356,7 +355,7 @@ namespace WavFileHelpers { data.setSize (roundUpSize (sizeof (CueChunk) + (size_t) (numCues - 1) * sizeof (Cue)), true); - CueChunk* const c = static_cast (data.getData()); + CueChunk* const c = static_cast (data.getData()); c->numCues = ByteOrder::swapIfBigEndian ((uint32) numCues); @@ -605,7 +604,7 @@ class WavAudioFormatReader : public AudioFormatReader { public: WavAudioFormatReader (InputStream* const in) - : AudioFormatReader (in, TRANS (wavFormatName)), + : AudioFormatReader (in, wavFormatName), bwavChunkStart (0), bwavSize (0), dataLength (0), @@ -900,7 +899,7 @@ public: WavAudioFormatWriter (OutputStream* const out, const double rate, const unsigned int numChans, const unsigned int bits, const StringPairArray& metadataValues) - : AudioFormatWriter (out, TRANS (wavFormatName), rate, numChans, bits), + : AudioFormatWriter (out, wavFormatName, rate, numChans, bits), lengthInSamples (0), bytesWritten (0), writeFailed (false) @@ -1197,14 +1196,8 @@ private: }; //============================================================================== -WavAudioFormat::WavAudioFormat() - : AudioFormat (TRANS (wavFormatName), StringArray (wavExtensions)) -{ -} - -WavAudioFormat::~WavAudioFormat() -{ -} +WavAudioFormat::WavAudioFormat() : AudioFormat (wavFormatName, ".wav .bwf") {} +WavAudioFormat::~WavAudioFormat() {} Array WavAudioFormat::getPossibleSampleRates() { diff --git a/modules/juce_audio_formats/format/juce_AudioFormat.cpp b/modules/juce_audio_formats/format/juce_AudioFormat.cpp index ff04da441a..ad871765ad 100644 --- a/modules/juce_audio_formats/format/juce_AudioFormat.cpp +++ b/modules/juce_audio_formats/format/juce_AudioFormat.cpp @@ -22,9 +22,13 @@ ============================================================================== */ -AudioFormat::AudioFormat (const String& name, const StringArray& extensions) - : formatName (name), - fileExtensions (extensions) +AudioFormat::AudioFormat (String name, StringArray extensions) + : formatName (name), fileExtensions (extensions) +{ +} + +AudioFormat::AudioFormat (StringRef name, StringRef extensions) + : formatName (name.text), fileExtensions (StringArray::fromTokens (extensions, false)) { } @@ -32,7 +36,6 @@ AudioFormat::~AudioFormat() { } -//============================================================================== bool AudioFormat::canHandleFile (const File& f) { for (int i = 0; i < fileExtensions.size(); ++i) diff --git a/modules/juce_audio_formats/format/juce_AudioFormat.h b/modules/juce_audio_formats/format/juce_AudioFormat.h index 8be7567400..196d4366c2 100644 --- a/modules/juce_audio_formats/format/juce_AudioFormat.h +++ b/modules/juce_audio_formats/format/juce_AudioFormat.h @@ -42,7 +42,6 @@ public: //============================================================================== /** Returns the name of this format. - e.g. "WAV file" or "AIFF file" */ const String& getFormatName() const; @@ -157,11 +156,17 @@ protected: /** Creates an AudioFormat object. @param formatName this sets the value that will be returned by getFormatName() - @param fileExtensions a zero-terminated list of file extensions - this is what will - be returned by getFileExtension() + @param fileExtensions an array of file extensions - these will be returned by getFileExtensions() */ - AudioFormat (const String& formatName, - const StringArray& fileExtensions); + AudioFormat (String formatName, StringArray fileExtensions); + + /** Creates an AudioFormat object. + + @param formatName this sets the value that will be returned by getFormatName() + @param fileExtensions a whitespace-separated list of file extensions - these will + be returned by getFileExtensions() + */ + AudioFormat (StringRef formatName, StringRef fileExtensions); private: //============================================================================== diff --git a/modules/juce_core/threads/juce_ThreadLocalValue.h b/modules/juce_core/threads/juce_ThreadLocalValue.h index 5cb13672ed..bd5c808f82 100644 --- a/modules/juce_core/threads/juce_ThreadLocalValue.h +++ b/modules/juce_core/threads/juce_ThreadLocalValue.h @@ -47,8 +47,7 @@ Typically, you'll probably want to create a static instance of a ThreadLocalValue object, or hold one within a singleton. - The templated class for your value could be a primitive type, or any class that - has a default constructor and copy operator. + The templated class for your value must be a primitive type, or a simple POD struct. When a thread no longer needs to use its value, it can call releaseCurrentThreadStorage() to allow the storage to be re-used by another thread. If a thread exits without calling