annotate src/flac-1.2.1/doc/html/api/decoder_8h-source.html @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 05aa0afa9217
children
rev   line source
Chris@1 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Chris@1 2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
Chris@1 3 <title>FLAC: include/FLAC++/decoder.h Source File</title>
Chris@1 4 <link href="doxygen.css" rel="stylesheet" type="text/css">
Chris@1 5 </head><body>
Chris@1 6 <!-- Generated by Doxygen 1.4.2 -->
Chris@1 7 <div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
Chris@1 8 <div class="nav">
Chris@1 9 <a class="el" href="dir_000000.html">include</a>&nbsp;/&nbsp;<a class="el" href="dir_000001.html">FLAC++</a></div>
Chris@1 10 <h1>decoder.h</h1><a href="decoder_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/* libFLAC++ - Free Lossless Audio Codec library</span>
Chris@1 11 00002 <span class="comment"> * Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson</span>
Chris@1 12 00003 <span class="comment"> *</span>
Chris@1 13 00004 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
Chris@1 14 00005 <span class="comment"> * modification, are permitted provided that the following conditions</span>
Chris@1 15 00006 <span class="comment"> * are met:</span>
Chris@1 16 00007 <span class="comment"> *</span>
Chris@1 17 00008 <span class="comment"> * - Redistributions of source code must retain the above copyright</span>
Chris@1 18 00009 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
Chris@1 19 00010 <span class="comment"> *</span>
Chris@1 20 00011 <span class="comment"> * - Redistributions in binary form must reproduce the above copyright</span>
Chris@1 21 00012 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
Chris@1 22 00013 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
Chris@1 23 00014 <span class="comment"> *</span>
Chris@1 24 00015 <span class="comment"> * - Neither the name of the Xiph.org Foundation nor the names of its</span>
Chris@1 25 00016 <span class="comment"> * contributors may be used to endorse or promote products derived from</span>
Chris@1 26 00017 <span class="comment"> * this software without specific prior written permission.</span>
Chris@1 27 00018 <span class="comment"> *</span>
Chris@1 28 00019 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span>
Chris@1 29 00020 <span class="comment"> * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span>
Chris@1 30 00021 <span class="comment"> * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</span>
Chris@1 31 00022 <span class="comment"> * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR</span>
Chris@1 32 00023 <span class="comment"> * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,</span>
Chris@1 33 00024 <span class="comment"> * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,</span>
Chris@1 34 00025 <span class="comment"> * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR</span>
Chris@1 35 00026 <span class="comment"> * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF</span>
Chris@1 36 00027 <span class="comment"> * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING</span>
Chris@1 37 00028 <span class="comment"> * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span>
Chris@1 38 00029 <span class="comment"> * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
Chris@1 39 00030 <span class="comment"> */</span>
Chris@1 40 00031
Chris@1 41 00032 <span class="preprocessor">#ifndef FLACPP__DECODER_H</span>
Chris@1 42 00033 <span class="preprocessor"></span><span class="preprocessor">#define FLACPP__DECODER_H</span>
Chris@1 43 00034 <span class="preprocessor"></span>
Chris@1 44 00035 <span class="preprocessor">#include "<a class="code" href="+_2export_8h.html">export.h</a>"</span>
Chris@1 45 00036
Chris@1 46 00037 <span class="preprocessor">#include &lt;string&gt;</span>
Chris@1 47 00038 <span class="preprocessor">#include "<a class="code" href="stream__decoder_8h.html">FLAC/stream_decoder.h</a>"</span>
Chris@1 48 00039
Chris@1 49 00040
Chris@1 50 00077 <span class="keyword">namespace </span>FLAC {
Chris@1 51 00078 <span class="keyword">namespace </span>Decoder {
Chris@1 52 00079
Chris@1 53 <a name="l00099"></a><a class="code" href="classFLAC_1_1Decoder_1_1Stream.html">00099</a> <span class="keyword">class </span>FLACPP_API Stream {
Chris@1 54 00100 <span class="keyword">public</span>:
Chris@1 55 <a name="l00103"></a><a class="code" href="classFLAC_1_1Decoder_1_1Stream_1_1State.html">00103</a> <span class="keyword">class </span>FLACPP_API State {
Chris@1 56 00104 <span class="keyword">public</span>:
Chris@1 57 00105 <span class="keyword">inline</span> State(::<a class="code" href="group__flac__stream__decoder.html#ga50">FLAC__StreamDecoderState</a> state): state_(state) { }
Chris@1 58 00106 <span class="keyword">inline</span> <a class="code" href="group__flac__stream__decoder.html#ga50">operator ::FLAC__StreamDecoderState</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> state_; }
Chris@1 59 00107 <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *as_cstring()<span class="keyword"> const </span>{ <a class="code" href="group__flac__stream__decoder.html#ga0">return ::FLAC__StreamDecoderStateString</a>[state_]; }
Chris@1 60 00108 <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *resolved_as_cstring(<span class="keyword">const</span> Stream &amp;decoder)<span class="keyword"> const </span>{ <a class="code" href="group__flac__stream__decoder.html#ga27">return ::FLAC__stream_decoder_get_resolved_state_string</a>(decoder.<a class="code" href="classFLAC_1_1Decoder_1_1Stream.html#FLAC_1_1Decoder_1_1Streamp0">decoder_</a>); }
Chris@1 61 00109 <span class="keyword">protected</span>:<a class="code" href="group__flac__stream__decoder.html#ga50"></a>
Chris@1 62 00110 <a class="code" href="group__flac__stream__decoder.html#ga50"> ::FLAC__StreamDecoderState</a> state_;
Chris@1 63 00111 };
Chris@1 64 00112
Chris@1 65 00113 Stream();
Chris@1 66 00114 <span class="keyword">virtual</span> ~Stream();
Chris@1 67 00115
Chris@1 68 00117
Chris@1 69 00120 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_valid() <span class="keyword">const</span>;
Chris@1 70 <a name="l00121"></a><a class="code" href="classFLAC_1_1Decoder_1_1Stream.html#FLAC_1_1Decoder_1_1Streama3">00121</a> <span class="keyword">inline</span> operator bool()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_valid(); }
Chris@1 71 00122
Chris@1 72 00123
Chris@1 73 00124 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> set_ogg_serial_number(<span class="keywordtype">long</span> value);
Chris@1 74 00125 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> set_md5_checking(<span class="keywordtype">bool</span> value);
Chris@1 75 00126 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> set_metadata_respond(::<a class="code" href="group__flac__format.html#ga113">FLAC__MetadataType</a> type);
Chris@1 76 00127 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> set_metadata_respond_application(<span class="keyword">const</span> FLAC__byte <span class="keywordtype">id</span>[4]);
Chris@1 77 00128 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> set_metadata_respond_all();
Chris@1 78 00129 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> set_metadata_ignore(::<a class="code" href="group__flac__format.html#ga113">FLAC__MetadataType</a> type);
Chris@1 79 00130 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> set_metadata_ignore_application(<span class="keyword">const</span> FLAC__byte <span class="keywordtype">id</span>[4]);
Chris@1 80 00131 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> set_metadata_ignore_all();
Chris@1 81 00132
Chris@1 82 00133 <span class="comment">/* get_state() is not virtual since we want subclasses to be able to return their own state */</span>
Chris@1 83 00134 State get_state() <span class="keyword">const</span>;
Chris@1 84 00135 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> get_md5_checking() <span class="keyword">const</span>;
Chris@1 85 00136 <span class="keyword">virtual</span> FLAC__uint64 get_total_samples() <span class="keyword">const</span>;
Chris@1 86 00137 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> get_channels() <span class="keyword">const</span>;
Chris@1 87 00138 <a class="code" href="group__flac__format.html#ga111">virtual ::FLAC__ChannelAssignment</a> get_channel_assignment() <span class="keyword">const</span>;
Chris@1 88 00139 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> get_bits_per_sample() <span class="keyword">const</span>;
Chris@1 89 00140 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> get_sample_rate() <span class="keyword">const</span>;
Chris@1 90 00141 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> get_blocksize() <span class="keyword">const</span>;
Chris@1 91 00142 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> get_decode_position(FLAC__uint64 *position) <span class="keyword">const</span>;
Chris@1 92 00143
Chris@1 93 00144 <a class="code" href="group__flac__stream__decoder.html#ga51">virtual ::FLAC__StreamDecoderInitStatus</a> init();
Chris@1 94 00145 <a class="code" href="group__flac__stream__decoder.html#ga51">virtual ::FLAC__StreamDecoderInitStatus</a> init_ogg();
Chris@1 95 00146
Chris@1 96 00147 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> finish();
Chris@1 97 00148
Chris@1 98 00149 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> flush();
Chris@1 99 00150 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> reset();
Chris@1 100 00151
Chris@1 101 00152 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> process_single();
Chris@1 102 00153 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> process_until_end_of_metadata();
Chris@1 103 00154 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> process_until_end_of_stream();
Chris@1 104 00155 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> skip_single_frame();
Chris@1 105 00156
Chris@1 106 00157 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> seek_absolute(FLAC__uint64 sample);
Chris@1 107 00158 <span class="keyword">protected</span>:
Chris@1 108 00160 <a class="code" href="group__flac__stream__decoder.html#ga52">virtual ::FLAC__StreamDecoderReadStatus</a> read_callback(FLAC__byte buffer[], size_t *bytes) = 0;
Chris@1 109 00161
Chris@1 110 00163 <a class="code" href="group__flac__stream__decoder.html#ga53">virtual ::FLAC__StreamDecoderSeekStatus</a> seek_callback(FLAC__uint64 absolute_byte_offset);
Chris@1 111 00164
Chris@1 112 00166 <a class="code" href="group__flac__stream__decoder.html#ga54">virtual ::FLAC__StreamDecoderTellStatus</a> tell_callback(FLAC__uint64 *absolute_byte_offset);
Chris@1 113 00167
Chris@1 114 00169 <a class="code" href="group__flac__stream__decoder.html#ga55">virtual ::FLAC__StreamDecoderLengthStatus</a> length_callback(FLAC__uint64 *stream_length);
Chris@1 115 00170
Chris@1 116 00172 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> eof_callback();
Chris@1 117 00173
Chris@1 118 00175 <a class="code" href="group__flac__stream__decoder.html#ga56">virtual ::FLAC__StreamDecoderWriteStatus</a> write_callback(<span class="keyword">const</span> ::<a class="code" href="structFLAC____Frame.html">FLAC__Frame</a> *frame, <span class="keyword">const</span> FLAC__int32 * <span class="keyword">const</span> buffer[]) = 0;
Chris@1 119 00176
Chris@1 120 00178 <span class="keyword">virtual</span> <span class="keywordtype">void</span> metadata_callback(<span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *metadata);
Chris@1 121 00179
Chris@1 122 00181 <span class="keyword">virtual</span> <span class="keywordtype">void</span> error_callback(::<a class="code" href="group__flac__stream__decoder.html#ga57">FLAC__StreamDecoderErrorStatus</a> status) = 0;
Chris@1 123 00182
Chris@1 124 00183 <span class="preprocessor">#if (defined _MSC_VER) || (defined __BORLANDC__) || (defined __GNUG__ &amp;&amp; (__GNUG__ &lt; 2 || (__GNUG__ == 2 &amp;&amp; __GNUC_MINOR__ &lt; 96))) || (defined __SUNPRO_CC)</span>
Chris@1 125 00184 <span class="preprocessor"></span> <span class="comment">// lame hack: some MSVC/GCC versions can't see a protected decoder_ from nested State::resolved_as_cstring()</span>
Chris@1 126 00185 <span class="keyword">friend</span> State;
Chris@1 127 00186 <span class="preprocessor">#endif</span>
Chris@1 128 00187 <span class="preprocessor"></span> ::FLAC__StreamDecoder *decoder_;
Chris@1 129 00188
Chris@1 130 00189 <a class="code" href="group__flac__stream__decoder.html#ga52">static ::FLAC__StreamDecoderReadStatus</a> read_callback_(<span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, FLAC__byte buffer[], size_t *bytes, <span class="keywordtype">void</span> *client_data);
Chris@1 131 00190 <a class="code" href="group__flac__stream__decoder.html#ga53">static ::FLAC__StreamDecoderSeekStatus</a> seek_callback_(<span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, FLAC__uint64 absolute_byte_offset, <span class="keywordtype">void</span> *client_data);
Chris@1 132 00191 <a class="code" href="group__flac__stream__decoder.html#ga54">static ::FLAC__StreamDecoderTellStatus</a> tell_callback_(<span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, FLAC__uint64 *absolute_byte_offset, <span class="keywordtype">void</span> *client_data);
Chris@1 133 00192 <a class="code" href="group__flac__stream__decoder.html#ga55">static ::FLAC__StreamDecoderLengthStatus</a> length_callback_(<span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, FLAC__uint64 *stream_length, <span class="keywordtype">void</span> *client_data);
Chris@1 134 00193 <span class="keyword">static</span> FLAC__bool eof_callback_(<span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, <span class="keywordtype">void</span> *client_data);
Chris@1 135 00194 <a class="code" href="group__flac__stream__decoder.html#ga56">static ::FLAC__StreamDecoderWriteStatus</a> write_callback_(<span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, <span class="keyword">const</span> ::<a class="code" href="structFLAC____Frame.html">FLAC__Frame</a> *frame, <span class="keyword">const</span> FLAC__int32 * <span class="keyword">const</span> buffer[], <span class="keywordtype">void</span> *client_data);
Chris@1 136 00195 <span class="keyword">static</span> <span class="keywordtype">void</span> metadata_callback_(<span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, <span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *metadata, <span class="keywordtype">void</span> *client_data);
Chris@1 137 00196 <span class="keyword">static</span> <span class="keywordtype">void</span> error_callback_(<span class="keyword">const</span> ::<a class="code" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, ::<a class="code" href="group__flac__stream__decoder.html#ga57">FLAC__StreamDecoderErrorStatus</a> status, <span class="keywordtype">void</span> *client_data);
Chris@1 138 00197 <span class="keyword">private</span>:
Chris@1 139 00198 <span class="comment">// Private and undefined so you can't use them:</span>
Chris@1 140 00199 Stream(<span class="keyword">const</span> Stream &amp;);
Chris@1 141 00200 <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> Stream &amp;);
Chris@1 142 00201 };
Chris@1 143 00202
Chris@1 144 <a name="l00222"></a><a class="code" href="classFLAC_1_1Decoder_1_1File.html">00222</a> <span class="keyword">class </span>FLACPP_API File: <span class="keyword">public</span> Stream {
Chris@1 145 00223 <span class="keyword">public</span>:
Chris@1 146 00224 File();
Chris@1 147 00225 <span class="keyword">virtual</span> ~File();
Chris@1 148 00226
Chris@1 149 00227 <a class="code" href="group__flac__stream__decoder.html#ga51">virtual ::FLAC__StreamDecoderInitStatus</a> init(FILE *file);
Chris@1 150 00228 <a class="code" href="group__flac__stream__decoder.html#ga51">virtual ::FLAC__StreamDecoderInitStatus</a> init(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);
Chris@1 151 00229 <a class="code" href="group__flac__stream__decoder.html#ga51">virtual ::FLAC__StreamDecoderInitStatus</a> init(<span class="keyword">const</span> std::string &amp;filename);
Chris@1 152 00230 <a class="code" href="group__flac__stream__decoder.html#ga51">virtual ::FLAC__StreamDecoderInitStatus</a> init_ogg(FILE *file);
Chris@1 153 00231 <a class="code" href="group__flac__stream__decoder.html#ga51">virtual ::FLAC__StreamDecoderInitStatus</a> init_ogg(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);
Chris@1 154 00232 <a class="code" href="group__flac__stream__decoder.html#ga51">virtual ::FLAC__StreamDecoderInitStatus</a> init_ogg(<span class="keyword">const</span> std::string &amp;filename);
Chris@1 155 00233 <span class="keyword">protected</span>:
Chris@1 156 00234 <span class="comment">// this is a dummy implementation to satisfy the pure virtual in Stream that is actually supplied internally by the C layer</span>
Chris@1 157 00235 <a class="code" href="group__flac__stream__decoder.html#ga52">virtual ::FLAC__StreamDecoderReadStatus</a> read_callback(FLAC__byte buffer[], size_t *bytes);
Chris@1 158 00236 <span class="keyword">private</span>:
Chris@1 159 00237 <span class="comment">// Private and undefined so you can't use them:</span>
Chris@1 160 00238 File(<span class="keyword">const</span> File &amp;);
Chris@1 161 00239 <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> File &amp;);
Chris@1 162 00240 };
Chris@1 163 00241
Chris@1 164 00242 }
Chris@1 165 00243 }
Chris@1 166 00244
Chris@1 167 00245 <span class="preprocessor">#endif</span>
Chris@1 168 </pre></div>
Chris@1 169 <hr size="1">
Chris@1 170 <div class="copyright">
Chris@1 171 <!-- @@@ oh so hacky -->
Chris@1 172 <table>
Chris@1 173 <tr>
Chris@1 174 <td align="left">
Chris@1 175 Copyright (c) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson
Chris@1 176 </td>
Chris@1 177 <td width="1%" align="right">
Chris@1 178 <a href="http://sourceforge.net"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=13478&amp;type=1" width="88" height="31" border="0" alt="SourceForge.net Logo" /></a>
Chris@1 179 </td>
Chris@1 180 </tr>
Chris@1 181 </table>
Chris@1 182 </div>
Chris@1 183 <!-- Copyright (c) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson -->
Chris@1 184 <!-- Permission is granted to copy, distribute and/or modify this document -->
Chris@1 185 <!-- under the terms of the GNU Free Documentation License, Version 1.1 -->
Chris@1 186 <!-- or any later version published by the Free Software Foundation; -->
Chris@1 187 <!-- with no invariant sections. -->
Chris@1 188 <!-- A copy of the license can be found at http://www.gnu.org/copyleft/fdl.html -->
Chris@1 189 </body>
Chris@1 190 </html>