OpenShot Library | OpenShotAudio 0.2.2
juce_OggVorbisAudioFormat.h
1
2/** @weakgroup juce_audio_formats-codecs
3 * @{
4 */
5/*
6 ==============================================================================
7
8 This file is part of the JUCE library.
9 Copyright (c) 2017 - ROLI Ltd.
10
11 JUCE is an open source library subject to commercial or open-source
12 licensing.
13
14 By using JUCE, you agree to the terms of both the JUCE 5 End-User License
15 Agreement and JUCE 5 Privacy Policy (both updated and effective as of the
16 27th April 2017).
17
18 End User License Agreement: www.juce.com/juce-5-licence
19 Privacy Policy: www.juce.com/juce-5-privacy-policy
20
21 Or: You may also use this code under the terms of the GPL v3 (see
22 www.gnu.org/licenses).
23
24 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
25 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
26 DISCLAIMED.
27
28 ==============================================================================
29*/
30
31namespace juce
32{
33
34#if JUCE_USE_OGGVORBIS || defined (DOXYGEN)
35
36//==============================================================================
37/**
38 Reads and writes the Ogg-Vorbis audio format.
39
40 To compile this, you'll need to set the JUCE_USE_OGGVORBIS flag.
41
42 @see AudioFormat,
43
44 @tags{Audio}
45*/
47{
48public:
49 //==============================================================================
51 ~OggVorbisAudioFormat() override;
52
53 //==============================================================================
56 bool canDoStereo() override;
57 bool canDoMono() override;
58 bool isCompressed() override;
60
61 //==============================================================================
62 /** Tries to estimate the quality level of an ogg file based on its size.
63
64 If it can't read the file for some reason, this will just return 1 (medium quality),
65 otherwise it will return the approximate quality setting that would have been used
66 to create the file.
67
68 @see getQualityOptions
69 */
70 int estimateOggFileQuality (const File& source);
71
72 //==============================================================================
73 /** Metadata property name used by the Ogg writer - if you set a string for this
74 value, it will be written into the ogg file as the name of the encoder app.
75
76 @see createWriterFor
77 */
78 static const char* const encoderName;
79
80 static const char* const id3title; /**< Metadata key for setting an ID3 title. */
81 static const char* const id3artist; /**< Metadata key for setting an ID3 artist name. */
82 static const char* const id3album; /**< Metadata key for setting an ID3 album. */
83 static const char* const id3comment; /**< Metadata key for setting an ID3 comment. */
84 static const char* const id3date; /**< Metadata key for setting an ID3 date. */
85 static const char* const id3genre; /**< Metadata key for setting an ID3 genre. */
86 static const char* const id3trackNumber; /**< Metadata key for setting an ID3 track number. */
87
88 //==============================================================================
90 bool deleteStreamIfOpeningFails) override;
91
93 double sampleRateToUse,
94 unsigned int numberOfChannels,
95 int bitsPerSample,
96 const StringPairArray& metadataValues,
97 int qualityOptionIndex) override;
99
100private:
101 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OggVorbisAudioFormat)
102};
103
104
105#endif
106
107} // namespace juce
108
109/** @}*/
Reads samples from an audio file stream.
Writes samples to an audio file stream.
Subclasses of AudioFormat are used to read and write different audio file formats.
virtual AudioFormatWriter * createWriterFor(OutputStream *streamToWriteTo, double sampleRateToUse, unsigned int numberOfChannels, int bitsPerSample, const StringPairArray &metadataValues, int qualityOptionIndex)=0
Tries to create an object that can write to a stream with this audio format.
Represents a local file or directory.
Definition: juce_File.h:45
The base class for streams that read data.
Reads and writes the Ogg-Vorbis audio format.
static const char *const id3title
Metadata key for setting an ID3 title.
Array< int > getPossibleSampleRates() override
Returns a set of sample rates that the format can read and write.
static const char *const encoderName
Metadata property name used by the Ogg writer - if you set a string for this value,...
int estimateOggFileQuality(const File &source)
Tries to estimate the quality level of an ogg file based on its size.
static const char *const id3comment
Metadata key for setting an ID3 comment.
AudioFormatReader * createReaderFor(InputStream *sourceStream, bool deleteStreamIfOpeningFails) override
Tries to create an object that can read from a stream containing audio data in this format.
AudioFormatWriter * createWriterFor(OutputStream *streamToWriteTo, double sampleRateToUse, unsigned int numberOfChannels, int bitsPerSample, const StringPairArray &metadataValues, int qualityOptionIndex) override
Tries to create an object that can write to a stream with this audio format.
static const char *const id3album
Metadata key for setting an ID3 album.
static const char *const id3date
Metadata key for setting an ID3 date.
bool canDoMono() override
Returns true if the format can do 1-channel audio.
Array< int > getPossibleBitDepths() override
Returns a set of bit depths that the format can read and write.
bool isCompressed() override
Returns true if the format uses compressed data.
static const char *const id3trackNumber
Metadata key for setting an ID3 track number.
static const char *const id3genre
Metadata key for setting an ID3 genre.
bool canDoStereo() override
Returns true if the format can do 2-channel audio.
StringArray getQualityOptions() override
Returns a list of different qualities that can be used when writing.
static const char *const id3artist
Metadata key for setting an ID3 artist name.
The base class for streams that write data to some kind of destination.
A special array for holding a list of strings.
A container for holding a set of strings which are keyed by another string.
#define JUCE_API
This macro is added to all JUCE public class declarations.