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 
31 namespace 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 {
48 public:
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 
100 private:
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.
AudioFormatReader * createReaderFor(InputStream *sourceStream, bool deleteStreamIfOpeningFails) override
Tries to create an object that can read from a stream containing audio data in this format.
static const char *const id3title
Metadata key for setting an ID3 title.
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.
Array< int > getPossibleSampleRates() override
Returns a set of sample rates that the format can read and write.
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.
bool isCompressed() override
Returns true if the format uses compressed data.
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 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.
Array< int > getPossibleBitDepths() override
Returns a set of bit depths that the format can read and write.
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.