÷òî èõ äëèíû áóäóò êðàòíû ðàçìåðó ñåêòîðà CD-Audio (ðàâíû 1/75 ñåêóíäàì èëè 588 ñýìïëàì). Ýòî îñóùåñòâëÿåòñÿ ïåðåíîñîì ÷àñòè ñåêòîðà â êîíöå êàæäîãî WAVE ôàéëà â íà÷àëî ñëåäóþùåãî. Ïîñëåäíèé ïîòîê áóäåò äîïîëíåí äî ãðàíèöû âûðàâíèâàíèÿ íóëÿìè.</P>
<P>Èñïîëüçîâàíèå ýòîé îïöèè íå ïðèâåäåò íè ê ÷åìó, åñëè ôàéëû óæå âûðîâíåíû (íàïðèìåð, åñëè ïðàâèëüíî ñêîïèðîâàíû ñ àóäèî-CD). <TT><B>flac</B></TT> ìîæåò âûðîâíÿòü òîëüêî íåñêîëüêî ôàéëîâ çà îäèí âûçîâ.</P>
-<P><B>ÂÍÈÌÀÍÈÅ</B>: Ïîðÿäîê ôàéëîâ èìååò çíà÷åíèå! Åñëè âû ñäåëàåòå ñëåäóþùèé âûçîâ '<TT>flac --sector-align *.wav</TT>', êîìàíäíûé ïðîöåññîð ìîæåò îáðàáîòàòü øàáëîí íå â òîì ïîðÿäêå, â êàêîì âû ðàññ÷èòûâàåòå. Ïîýòîìó ëó÷øå âñåãî âûçûâàòü ïðîãðàììó, ÿâíî óêàçàâ ñïèñîê ôàéëîâ, íàïðèìåð, '<TT>flac --sector-align 8.wav 9.wav 10.wav</TT>'.
+<P><B>ÂÍÈÌÀÍÈÅ</B>: Ïîðÿäîê ôàéëîâ èìååò çíà÷åíèå! Åñëè âû ñäåëàåòå ñëåäóþùèé âûçîâ '<TT>flac --sector-align *.wav</TT>', êîìàíäíûé ïðîöåññîð ìîæåò îáðàáîòàòü øàáëîí íå â òîì ïîðÿäêå, â êàêîì âû ðàññ÷èòûâàåòå. Ïîýòîìó ëó÷øå âñåãî âûçûâàòü ïðîãðàììó, ÿâíî óêàçàâ ñïèñîê ôàéëîâ, íàïðèìåð, '<TT>flac --sector-align 8.wav 9.wav 10.wav</TT>'.
</TD></TR>
<TR><TD><TT>-S {#|X|#x}</TT></TD>
<UL>
<LI><TT># </TT> : ñîçäàåòñÿ òî÷êà ïîèñêà äëÿ ñýìïëà ñ îïðåäåëåííûì íîìåðîì.</LI>
-
+
<LI><TT>X </TT> : ðåçåðâèðóåìûå òî÷êè (âñåãäà ïîìåùàþòñÿ â êîíöå <TT>SEEKTABLE</TT>).</LI>
-
+
<LI><TT>#x</TT> : # ðàâíîìåðíî ðàñïðåäåëåííûõ òî÷åê ïîèñêà, ïåðâàÿ ñîîòâåòñòâóåò 0 ñýìïëó.</LI>
</UL>
<OL>
<LI>Ïðîãðàììà ñîçäàåò ýêçåìïëÿð êîäåðà èëè äåêîäåðà ñ ïîìîùüþ ôóíêöèé <TT>*_new()</TT>.</LI>
-
+
<LI>Ïðîãðàììà óñòàíàâëèâàåò ïàðàìåòðû ýêçåìïëÿðà è ïðåäîñòàâëÿåò åìó îáðàòíûå âûçîâû äëÿ ÷òåíèÿ, çàïèñè, ñîîáùåíèÿ îá îøèáêàõ è ðàáîòû ñ ìåòàäàííûìè ñ ïîìîùüþ ôóíêöèé <TT>*_set_*()</TT>.</LI>
-
+
<LI>Ïðîãðàììà èíèöèàëèçèðóåò ýêçåìïëÿð, ïðîâåðÿåò ïàðàìåòðû è ãîòîâèòñÿ ê êîäèðîâàíèþ/äåêîäèðîâàíèþ, èñïîëüçóÿ ôóíêöèè <TT>*_init()</TT>.</LI>
-
+
<LI>Ïðîãðàììà âûçûâàåò ôóíêöèè <TT>*_process_*()</TT> äëÿ êîäèðîâàíèÿ èëè äåêîäèðîâàíèÿ äàííûõ, êîòîðûå â ñâîþ î÷åðåäü äåëàþò îáðàòíûå âûçîâû.</LI>
-
+
<LI>Ïðîãðàììà çàâåðøàåò ðàáîòó ýêçåìïëÿðà ôóíêöèåé <TT>*_finish()</TT>, êîòîðàÿ ñáðàñûâàåò áóôåðû ââîäà è âûâîäà.</LI>
-
+
<LI>Ýêçåìïëÿð ìîæåò áûòü èñïîëüçîâàí ñíîâà ëèáî óäàëåí ôóíêöèåé <TT>*_delete()</TT>.</LI>
</OL>
\r
<P><B>ÄÅÊÎÄÅÐ ÏÎÒÎÊÎÂ</B></P>
-
+
<P>Ñíà÷àëà îáñóäèì äåêîäåð ïîòîêîâ. Òèï åãî ýêçåìïëÿðà <TT>FLAC__StreamDecoder</TT>. Îáû÷íî â ïðîãðàììå ýêçåìïëÿð ñîçäàåòñÿ âûçîâîì <TT>FLAC__stream_decoder_new()</TT>, çàòåì âûçûâàåò ôóíêöèè <TT>FLAC__stream_decoder_set_*()</TT> äëÿ óñòàíîâêè îáðàòíûõ âûçîâîâ è ïîëüçîâàòåëüñêèõ äàííûõ è èíèöèàëèçèðóåòñÿ ôóíêöèåé <TT>FLAC__stream_decoder_init()</TT>. Íåîáõîäèìûå îáðàòíûå âûçîâû:</P>
<UL>
<LI><B><TT>FLAC__stream_decoder_process_whole_stream()</TT></B> - Äåêîäåð íà÷èíàåò ðàáîòó è ïðîäîëæàåò îáðàáàòûâàòü ïîòîê ïîêà ôóíêöèÿ îáðàòíîãî âûçîâà ÷òåíèÿ íå ïåðåäàñò êîä <TT>FLAC__STREAM_DECODER_READ_END_OF_STREAM</TT> èëè <TT>FLAC__STREAM_DECODER_READ_ABORT</TT>.</LI>
<LI><B><TT>FLAC__stream_decoder_process_metadata()</TT></B> - Äåêîäåð îáðàáàòûâàåò ïîòîê äî ïåðâîãî àóäèî ôðåéìà.</LI>
-
+
<LI><B><TT>FLAC__stream_decoder_process_one_frame()</TT></B> - Äåêîäåðîâàòü òîëüêî îäèí ôðåéì. Ïåðåä âûçîâîì ýòîé ôóíêöèè âñå ìåòàäàííûå äîëæíû áûòü îáðàáîòàíû.</LI>
<LI><B><TT>FLAC__stream_decoder_process_remaining_frames()</TT></B> - Äåêîäèðîâàòü âñå îñòàâøèåñÿ ôðåéìû. Ïåðåä âûçîâîì ýòîé ôóíêöèè âñå ìåòàäàííûå äîëæíû áûòü îáðàáîòàíû. Ïåðåä âûçîâîì ýòîé ôóíöèè òàêæå ìîæåò âûçûâàòüñÿ <TT>FLAC__stream_decoder_process_one_frame()</TT>.</LI>
<UL>
<LI>Çíà÷åíèå áèòîâ, îòâå÷àþùèõ çà ðàçìåð áëîêà, äîëæíî áûòü â ïðåäåëàõ 0001-0101 èëè 1000-1111. Ïîòîê äîëæåí ñîñòîÿòü èç áëîêîâ îäèíàêîâîãî ðàçìåðà (çà èñêëþ÷åíèåì ïîñëåäíåãî), à â áëîêå ìåòàäàííûõ <TT>STREAMINFO</TT> äîëæíû áûòü óêàçàíû ðàâíûå çíà÷åíèÿ äëÿ ìèíèìàëüíîãî è ìàêñèìàëüíîãî ðàçìåðà áëîêà.</LI>
-
+
<LI>Êîëè÷åñòâî áèò íà ñýìïë â çàãîëîâêå ôðåéìà äîëæíî îïèñûâàòüñÿ ñëåäóþùèì äèàïàçîíîì áèòîâ 001-110.</LI>
-
+
<LI>×àñòîòà äèñêðåòèçàöèè â çàãîëîâêå ôðåéìà äîëæíà îïèñûâàòüñÿ ñëåäóþùèì äèàïàçîíîì áèòîâ 0001-1011.</LI>
</UL>
</BLOCKQUOTE></P>
inline void set_reference(bool x) { is_reference_ = x; }
};
- inline bool Prototype::operator==(const Prototype &object) const
+ inline bool Prototype::operator==(const Prototype &object) const
{ return (bool)::FLAC__metadata_object_is_equal(object_, object.object_); }
- inline bool Prototype::operator==(const ::FLAC__StreamMetadata &object) const
+ inline bool Prototype::operator==(const ::FLAC__StreamMetadata &object) const
{ return (bool)::FLAC__metadata_object_is_equal(object_, &object); }
- inline bool Prototype::operator==(const ::FLAC__StreamMetadata *object) const
+ inline bool Prototype::operator==(const ::FLAC__StreamMetadata *object) const
{ return (bool)::FLAC__metadata_object_is_equal(object_, object); }
- inline bool Prototype::operator!=(const Prototype &object) const
+ inline bool Prototype::operator!=(const Prototype &object) const
{ return !operator==(object); }
- inline bool Prototype::operator!=(const ::FLAC__StreamMetadata &object) const
+ inline bool Prototype::operator!=(const ::FLAC__StreamMetadata &object) const
{ return !operator==(object); }
- inline bool Prototype::operator!=(const ::FLAC__StreamMetadata *object) const
+ inline bool Prototype::operator!=(const ::FLAC__StreamMetadata *object) const
{ return !operator==(object); }
inline bool Prototype::is_valid() const
* automatically turned off if there is no signature in the STREAMINFO
* block or when a seek is attempted.
*
- * Make sure to read the detailed descriptions of the
+ * Make sure to read the detailed descriptions of the
* \link flac_seekable_stream_decoder seekable stream decoder module \endlink
* and \link flac_stream_decoder stream decoder module \endlink
* since the file decoder inherits much of its behavior from them.
*/
typedef enum {
- FLAC__FILE_DECODER_OK = 0,
+ FLAC__FILE_DECODER_OK = 0,
/**< The decoder is in the normal OK state. */
FLAC__FILE_DECODER_END_OF_FILE,
/**< The decoder has reached the end of the file. */
- FLAC__FILE_DECODER_ERROR_OPENING_FILE,
+ FLAC__FILE_DECODER_ERROR_OPENING_FILE,
/**< An error occurred opening the input file. */
- FLAC__FILE_DECODER_MEMORY_ALLOCATION_ERROR,
+ FLAC__FILE_DECODER_MEMORY_ALLOCATION_ERROR,
/**< An error occurred allocating memory. */
FLAC__FILE_DECODER_SEEK_ERROR,
FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR,
/**< An error occurred in the underlying seekable stream decoder. */
- FLAC__FILE_DECODER_ALREADY_INITIALIZED,
+ FLAC__FILE_DECODER_ALREADY_INITIALIZED,
/**< FLAC__file_decoder_init() was called when the decoder was already
* initialized, usually because FLAC__file_decoder_finish() was not
- * called.
+ * called.
*/
- FLAC__FILE_DECODER_INVALID_CALLBACK,
+ FLAC__FILE_DECODER_INVALID_CALLBACK,
/**< FLAC__file_decoder_init() was called without all callbacks
* being set.
*/
- FLAC__FILE_DECODER_UNINITIALIZED
+ FLAC__FILE_DECODER_UNINITIALIZED
/**< The decoder is in the uninitialized state. */
} FLAC__FileDecoderState;
FLAC__FILE_ENCODER_FATAL_ERROR_WHILE_WRITING,
/**< A fatal error occurred while writing to the encoded file. */
- FLAC__FILE_ENCODER_ERROR_OPENING_FILE,
+ FLAC__FILE_ENCODER_ERROR_OPENING_FILE,
/**< An error occurred opening the output file for writing. */
FLAC__FILE_ENCODER_MEMORY_ALLOCATION_ERROR,
typedef enum {
FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE = 0
/**< Residual is coded by partitioning into contexts, each with it's own
- * Rice parameter. */
+ * Rice parameter. */
} FLAC__EntropyCodingMethodType;
/** Maps a FLAC__EntropyCodingMethodType to a C string.
*/
typedef enum {
- FLAC__SEEKABLE_STREAM_DECODER_OK = 0,
+ FLAC__SEEKABLE_STREAM_DECODER_OK = 0,
/**< The decoder is in the normal OK state. */
FLAC__SEEKABLE_STREAM_DECODER_SEEKING,
* callback returned an error.
*/
- FLAC__SEEKABLE_STREAM_DECODER_ALREADY_INITIALIZED,
+ FLAC__SEEKABLE_STREAM_DECODER_ALREADY_INITIALIZED,
/**< FLAC__seekable_stream_decoder_init() was called when the
* decoder was already initialized, usually because
* FLAC__seekable_stream_decoder_finish() was not called.
*/
- FLAC__SEEKABLE_STREAM_DECODER_INVALID_CALLBACK,
+ FLAC__SEEKABLE_STREAM_DECODER_INVALID_CALLBACK,
/**< FLAC__seekable_stream_decoder_init() was called without all
* callbacks being set.
*/
- FLAC__SEEKABLE_STREAM_DECODER_UNINITIALIZED
+ FLAC__SEEKABLE_STREAM_DECODER_UNINITIALIZED
/**< The decoder is in the uninitialized state. */
} FLAC__SeekableStreamDecoderState;
* FLAC__seekable_stream_encoder_finish() was not called.
*/
- FLAC__SEEKABLE_STREAM_ENCODER_INVALID_CALLBACK,
+ FLAC__SEEKABLE_STREAM_ENCODER_INVALID_CALLBACK,
/**< FLAC__seekable_stream_encoder_init() was called without all
* callbacks being set.
*/
- FLAC__SEEKABLE_STREAM_ENCODER_INVALID_SEEKTABLE,
+ FLAC__SEEKABLE_STREAM_ENCODER_INVALID_SEEKTABLE,
/**< An invalid seek table was passed is the metadata to
* FLAC__seekable_stream_encoder_set_metadata().
*/
* blocks to return. Remember that some metadata blocks can be big so
* filtering out the ones you don't use can reduce the memory requirements
* of the decoder. Also note the special forms
- * FLAC__stream_decoder_respond_application(id) and
+ * FLAC__stream_decoder_respond_application(id) and
* FLAC__stream_decoder_ignore_application(id) for filtering APPLICATION
* blocks based on the application ID.
*
* called with the decoded metadata block or audio frame, unless an error
* occurred. If the decoder loses sync it will call the error callback
* instead.
- *
+ *
* \param decoder An initialized decoder instance in the state
* \c FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC.
* \assert
* As each metadata block is decoded, the metadata callback will be called
* with the decoded metadata. If the decoder loses sync it will call the
* error callback.
- *
+ *
* \param decoder An initialized decoder instance in the state
* \c FLAC__STREAM_DECODER_SEARCH_FOR_METADATA.
* \assert
* As each metadata block and frame is decoded, the metadata or write
* callback will be called with the decoded metadata or frame. If the
* decoder loses sync it will call the error callback.
- *
+ *
* \param decoder An initialized decoder instance in the state
* \c FLAC__STREAM_DECODER_SEARCH_FOR_METADATA.
* \assert
/** Decode one metadata block or audio frame.
* This is inherited from FLAC__StreamDecoder; see FLAC__stream_decoder_process_single()
- *
+ *
* \param decoder An initialized decoder instance in the state
* \c OggFLAC__STREAM_DECODER_OK.
* \assert
/** Decode until the end of the metadata.
* This is inherited from FLAC__StreamDecoder; see FLAC__stream_decoder_process_until_end_of_metadata()
- *
+ *
* \param decoder An initialized decoder instance in the state
* \c OggFLAC__STREAM_DECODER_OK.
* \assert
/** Decode until the end of the stream.
* This is inherited from FLAC__StreamDecoder; see FLAC__stream_decoder_process_until_end_of_stream()
- *
+ *
* \param decoder An initialized decoder instance in the state
* \c OggFLAC__STREAM_DECODER_OK.
* \assert
seekable_stream_decoder.cc \
seekable_stream_encoder.cc \
stream_decoder.cc \
- stream_encoder.cc
+ stream_encoder.cc
return (bool)::FLAC__metadata_iterator_prev(iterator_);
}
- ::FLAC__MetadataType Iterator::get_block_type() const
+ ::FLAC__MetadataType Iterator::get_block_type() const
{
FLAC__ASSERT(is_valid());
return ::FLAC__metadata_iterator_get_block_type(iterator_);
CRC16_UPDATE_BLURB(bb, save_blurb, bb->read_crc16);
break;
}
- }
+ }
else {
msbs += FLAC__BITS_PER_BLURB - cbits;
cbits = 0;
CRC16_UPDATE_BLURB(bb, save_blurb, bb->read_crc16);
break;
}
- }
+ }
else {
msbs += FLAC__BITS_PER_BLURB - cbits;
cbits = 0;
sample_rate == 0 ||
sample_rate > FLAC__MAX_SAMPLE_RATE ||
(
- sample_rate >= (1u << 16) &&
+ sample_rate >= (1u << 16) &&
!(sample_rate % 1000 == 0 || sample_rate % 10 == 0)
)
) {
else {
int log2cmax;
- (void)frexp(cmax, &log2cmax);
+ (void)frexp(cmax, &log2cmax);
log2cmax--;
*shift = (int)precision - log2cmax - 1;
return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR;
n %= 1024;
-
+
if(fwrite(buffer, 1, n, file) != n)
return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR;
* Initializing the stream encoder writes all the metadata, so we
* save the stream offset now.
*/
- encoder->private_->stream_offset = encoder->private_->bytes_written;
+ encoder->private_->stream_offset = encoder->private_->bytes_written;
return encoder->protected_->state = FLAC__SEEKABLE_STREAM_ENCODER_OK;
}
if(0 != metadata && num_blocks > 0) {
unsigned i;
for(i = 0; i < num_blocks; i++) {
- if(0 != metadata[i] && metadata[i]->type == FLAC__METADATA_TYPE_SEEKTABLE) {
+ if(0 != metadata[i] && metadata[i]->type == FLAC__METADATA_TYPE_SEEKTABLE) {
encoder->private_->seek_table = &metadata[i]->data.seek_table;
break; /* take only the first one */
}
libOggFLAC___la_SOURCES = \
stream_decoder.cc \
- stream_encoder.cc
+ stream_encoder.cc
OggFLAC__stream_decoder_finish(decoder);
- FLAC__stream_decoder_delete(decoder->private_->FLAC_stream_decoder);
+ FLAC__stream_decoder_delete(decoder->private_->FLAC_stream_decoder);
free(decoder->private_);
free(decoder->protected_);
if(ogg_sync_init(&decoder->private_->ogg.sync_state) != 0)
return decoder->protected_->state = OggFLAC__STREAM_DECODER_OGG_ERROR;
- FLAC__stream_decoder_set_read_callback(decoder->private_->FLAC_stream_decoder, read_callback_);
- FLAC__stream_decoder_set_write_callback(decoder->private_->FLAC_stream_decoder, write_callback_);
- FLAC__stream_decoder_set_metadata_callback(decoder->private_->FLAC_stream_decoder, metadata_callback_);
- FLAC__stream_decoder_set_error_callback(decoder->private_->FLAC_stream_decoder, error_callback_);
- FLAC__stream_decoder_set_client_data(decoder->private_->FLAC_stream_decoder, decoder);
+ FLAC__stream_decoder_set_read_callback(decoder->private_->FLAC_stream_decoder, read_callback_);
+ FLAC__stream_decoder_set_write_callback(decoder->private_->FLAC_stream_decoder, write_callback_);
+ FLAC__stream_decoder_set_metadata_callback(decoder->private_->FLAC_stream_decoder, metadata_callback_);
+ FLAC__stream_decoder_set_error_callback(decoder->private_->FLAC_stream_decoder, error_callback_);
+ FLAC__stream_decoder_set_client_data(decoder->private_->FLAC_stream_decoder, decoder);
- if(FLAC__stream_decoder_init(decoder->private_->FLAC_stream_decoder) != FLAC__STREAM_DECODER_SEARCH_FOR_METADATA)
- return decoder->protected_->state = OggFLAC__STREAM_DECODER_FLAC_STREAM_DECODER_ERROR;
+ if(FLAC__stream_decoder_init(decoder->private_->FLAC_stream_decoder) != FLAC__STREAM_DECODER_SEARCH_FOR_METADATA)
+ return decoder->protected_->state = OggFLAC__STREAM_DECODER_FLAC_STREAM_DECODER_ERROR;
return decoder->protected_->state = OggFLAC__STREAM_DECODER_OK;
}
* We have to be careful not to read in more than the
* FLAC__StreamDecoder says it has room for. We know
* that the size of the decoded data must be no more
- * than the encoded data we will read.
+ * than the encoded data we will read.
*/
ogg_bytes_to_read = min(*bytes, OGG_BYTES_CHUNK);
oggbuf = ogg_sync_buffer(&decoder->private_->ogg.sync_state, ogg_bytes_to_read);
if(decoder->private_->read_callback(decoder, oggbuf, &ogg_bytes_to_read, decoder->private_->client_data) != FLAC__STREAM_DECODER_READ_STATUS_CONTINUE) {
decoder->protected_->state = OggFLAC__STREAM_DECODER_READ_ERROR;
return FLAC__STREAM_DECODER_READ_STATUS_ABORT;
- }
+ }
ogg_bytes_read = ogg_bytes_to_read;
if(ogg_sync_wrote(&decoder->private_->ogg.sync_state, ogg_bytes_read) < 0) {
FLAC__ASSERT(0 != encoder->private_->FLAC_stream_encoder);
(void)OggFLAC__stream_encoder_finish(encoder);
-
+
FLAC__stream_encoder_delete(encoder->private_->FLAC_stream_encoder);
free(encoder->private_);
*/
/* min/max_framesize and md5sum don't get written at first, so we have to leave them 0 */
- streaminfo_.is_last = false;
- streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
- streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
- streaminfo_.data.stream_info.min_blocksize = 576;
- streaminfo_.data.stream_info.max_blocksize = 576;
- streaminfo_.data.stream_info.min_framesize = 0;
- streaminfo_.data.stream_info.max_framesize = 0;
- streaminfo_.data.stream_info.sample_rate = 44100;
- streaminfo_.data.stream_info.channels = 1;
- streaminfo_.data.stream_info.bits_per_sample = 8;
- streaminfo_.data.stream_info.total_samples = 0;
+ streaminfo_.is_last = false;
+ streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
+ streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
+ streaminfo_.data.stream_info.min_blocksize = 576;
+ streaminfo_.data.stream_info.max_blocksize = 576;
+ streaminfo_.data.stream_info.min_framesize = 0;
+ streaminfo_.data.stream_info.max_framesize = 0;
+ streaminfo_.data.stream_info.sample_rate = 44100;
+ streaminfo_.data.stream_info.channels = 1;
+ streaminfo_.data.stream_info.bits_per_sample = 8;
+ streaminfo_.data.stream_info.total_samples = 0;
memset(streaminfo_.data.stream_info.md5sum, 0, 16);
- padding_.is_last = false;
- padding_.type = ::FLAC__METADATA_TYPE_PADDING;
- padding_.length = 1234;
+ padding_.is_last = false;
+ padding_.type = ::FLAC__METADATA_TYPE_PADDING;
+ padding_.length = 1234;
- seektable_.is_last = false;
- seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
+ seektable_.is_last = false;
+ seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
seektable_.data.seek_table.num_points = 2;
- seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
+ seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
seektable_.data.seek_table.points = (::FLAC__StreamMetadata_SeekPoint*)malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(::FLAC__StreamMetadata_SeekPoint));
seektable_.data.seek_table.points[0].sample_number = 0;
seektable_.data.seek_table.points[0].stream_offset = 0;
seektable_.data.seek_table.points[1].stream_offset = 1000;
seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
- application1_.is_last = false;
- application1_.type = ::FLAC__METADATA_TYPE_APPLICATION;
- application1_.length = 8;
+ application1_.is_last = false;
+ application1_.type = ::FLAC__METADATA_TYPE_APPLICATION;
+ application1_.length = 8;
memcpy(application1_.data.application.id, "\xfe\xdc\xba\x98", 4);
application1_.data.application.data = (FLAC__byte*)malloc_or_die_(4);
memcpy(application1_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
- application2_.is_last = false;
- application2_.type = ::FLAC__METADATA_TYPE_APPLICATION;
- application2_.length = 4;
+ application2_.is_last = false;
+ application2_.type = ::FLAC__METADATA_TYPE_APPLICATION;
+ application2_.length = 4;
memcpy(application2_.data.application.id, "\x76\x54\x32\x10", 4);
application2_.data.application.data = 0;
num_expected_ = 5;
if(!file_utils__generate_flacfile(flacfilename_, &flacfilesize_, 512 * 1024, &streaminfo_, expected_metadata_sequence_, num_expected_))
- return die_("creating the encoded file");
+ return die_("creating the encoded file");
return true;
}
if(feof(file_))
return ::FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
- else if(*bytes > 0) {
- unsigned bytes_read = ::fread(buffer, 1, *bytes, file_);
- if(bytes_read == 0) {
- if(feof(file_))
- return ::FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
- else
- return ::FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
- }
- else {
- *bytes = bytes_read;
- return ::FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
- }
- }
- else
- return ::FLAC__STREAM_DECODER_READ_STATUS_ABORT; /* abort to avoid a deadlock */
+ else if(*bytes > 0) {
+ unsigned bytes_read = ::fread(buffer, 1, *bytes, file_);
+ if(bytes_read == 0) {
+ if(feof(file_))
+ return ::FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
+ else
+ return ::FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ else {
+ *bytes = bytes_read;
+ return ::FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ }
+ else
+ return ::FLAC__STREAM_DECODER_READ_STATUS_ABORT; /* abort to avoid a deadlock */
}
::FLAC__StreamDecoderWriteStatus DecoderCommon::common_write_callback_(const ::FLAC__Frame *frame)
if(error_occurred_)
return ::FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
- if(
- (frame->header.number_type == ::FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER && frame->header.number.frame_number == 0) ||
- (frame->header.number_type == ::FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER && frame->header.number.sample_number == 0)
- ) {
- printf("content... ");
- fflush(stdout);
- }
+ if(
+ (frame->header.number_type == ::FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER && frame->header.number.frame_number == 0) ||
+ (frame->header.number_type == ::FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER && frame->header.number.sample_number == 0)
+ ) {
+ printf("content... ");
+ fflush(stdout);
+ }
return ::FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
}
*/
/* min/max_framesize and md5sum don't get written at first, so we have to leave them 0 */
- streaminfo_.is_last = false;
- streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
- streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
- streaminfo_.data.stream_info.min_blocksize = 576;
- streaminfo_.data.stream_info.max_blocksize = 576;
- streaminfo_.data.stream_info.min_framesize = 0;
- streaminfo_.data.stream_info.max_framesize = 0;
- streaminfo_.data.stream_info.sample_rate = 44100;
- streaminfo_.data.stream_info.channels = 1;
- streaminfo_.data.stream_info.bits_per_sample = 8;
- streaminfo_.data.stream_info.total_samples = 0;
+ streaminfo_.is_last = false;
+ streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
+ streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
+ streaminfo_.data.stream_info.min_blocksize = 576;
+ streaminfo_.data.stream_info.max_blocksize = 576;
+ streaminfo_.data.stream_info.min_framesize = 0;
+ streaminfo_.data.stream_info.max_framesize = 0;
+ streaminfo_.data.stream_info.sample_rate = 44100;
+ streaminfo_.data.stream_info.channels = 1;
+ streaminfo_.data.stream_info.bits_per_sample = 8;
+ streaminfo_.data.stream_info.total_samples = 0;
memset(streaminfo_.data.stream_info.md5sum, 0, 16);
- padding_.is_last = false;
- padding_.type = ::FLAC__METADATA_TYPE_PADDING;
- padding_.length = 1234;
+ padding_.is_last = false;
+ padding_.type = ::FLAC__METADATA_TYPE_PADDING;
+ padding_.length = 1234;
- seektable_.is_last = false;
- seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
+ seektable_.is_last = false;
+ seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
seektable_.data.seek_table.num_points = 2;
- seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
+ seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
seektable_.data.seek_table.points = (::FLAC__StreamMetadata_SeekPoint*)malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(::FLAC__StreamMetadata_SeekPoint));
seektable_.data.seek_table.points[0].sample_number = 0;
seektable_.data.seek_table.points[0].stream_offset = 0;
seektable_.data.seek_table.points[1].stream_offset = 1000;
seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
- application1_.is_last = false;
- application1_.type = ::FLAC__METADATA_TYPE_APPLICATION;
- application1_.length = 8;
+ application1_.is_last = false;
+ application1_.type = ::FLAC__METADATA_TYPE_APPLICATION;
+ application1_.length = 8;
memcpy(application1_.data.application.id, "\xfe\xdc\xba\x98", 4);
application1_.data.application.data = (FLAC__byte*)malloc_or_die_(4);
memcpy(application1_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
- application2_.is_last = false;
- application2_.type = ::FLAC__METADATA_TYPE_APPLICATION;
- application2_.length = 4;
+ application2_.is_last = false;
+ application2_.type = ::FLAC__METADATA_TYPE_APPLICATION;
+ application2_.length = 4;
memcpy(application2_.data.application.id, "\x76\x54\x32\x10", 4);
application2_.data.application.data = 0;
- vorbiscomment_.is_last = true;
- vorbiscomment_.type = ::FLAC__METADATA_TYPE_VORBIS_COMMENT;
- vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
+ vorbiscomment_.is_last = true;
+ vorbiscomment_.type = ::FLAC__METADATA_TYPE_VORBIS_COMMENT;
+ vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
vorbiscomment_.data.vorbis_comment.vendor_string.length = 8;
vorbiscomment_.data.vorbis_comment.vendor_string.entry = (FLAC__byte*)malloc_or_die_(8);
memcpy(vorbiscomment_.data.vorbis_comment.vendor_string.entry, "flac 1.x", 8);
return die_("priming our metadata");
if(!file_utils__generate_flacfile(flacfile_, 0, 512 * 1024, &streaminfo, metadata, 1))
- return die_("creating the encoded file");
+ return die_("creating the encoded file");
free(vorbiscomment.data.vorbis_comment.vendor_string.entry);
static bool change_stats_(const char *filename, bool read_only)
{
if(!file_utils__change_stats(filename, read_only))
- return die_("during file_utils__change_stats()");
+ return die_("during file_utils__change_stats()");
return true;
}
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
-
+
printf("SV[P]PP\tprev\n");
if(!iterator.prev())
return die_("iterator ended early\n");
static void init_metadata_blocks_()
{
- streaminfo_.is_last = false;
- streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
- streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
- streaminfo_.data.stream_info.min_blocksize = 576;
- streaminfo_.data.stream_info.max_blocksize = 576;
- streaminfo_.data.stream_info.min_framesize = 0;
- streaminfo_.data.stream_info.max_framesize = 0;
- streaminfo_.data.stream_info.sample_rate = 44100;
- streaminfo_.data.stream_info.channels = 1;
- streaminfo_.data.stream_info.bits_per_sample = 8;
- streaminfo_.data.stream_info.total_samples = 0;
+ streaminfo_.is_last = false;
+ streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
+ streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
+ streaminfo_.data.stream_info.min_blocksize = 576;
+ streaminfo_.data.stream_info.max_blocksize = 576;
+ streaminfo_.data.stream_info.min_framesize = 0;
+ streaminfo_.data.stream_info.max_framesize = 0;
+ streaminfo_.data.stream_info.sample_rate = 44100;
+ streaminfo_.data.stream_info.channels = 1;
+ streaminfo_.data.stream_info.bits_per_sample = 8;
+ streaminfo_.data.stream_info.total_samples = 0;
memset(streaminfo_.data.stream_info.md5sum, 0, 16);
- padding_.is_last = false;
- padding_.type = ::FLAC__METADATA_TYPE_PADDING;
- padding_.length = 1234;
+ padding_.is_last = false;
+ padding_.type = ::FLAC__METADATA_TYPE_PADDING;
+ padding_.length = 1234;
- seektable_.is_last = false;
- seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
+ seektable_.is_last = false;
+ seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
seektable_.data.seek_table.num_points = 2;
- seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
+ seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
seektable_.data.seek_table.points = (::FLAC__StreamMetadata_SeekPoint*)malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(::FLAC__StreamMetadata_SeekPoint));
seektable_.data.seek_table.points[0].sample_number = 0;
seektable_.data.seek_table.points[0].stream_offset = 0;
seektable_.data.seek_table.points[1].stream_offset = 1000;
seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
- application_.is_last = false;
- application_.type = ::FLAC__METADATA_TYPE_APPLICATION;
- application_.length = 8;
+ application_.is_last = false;
+ application_.type = ::FLAC__METADATA_TYPE_APPLICATION;
+ application_.length = 8;
memcpy(application_.data.application.id, "\xfe\xdc\xba\x98", 4);
application_.data.application.data = (FLAC__byte*)malloc_or_die_(4);
memcpy(application_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
- vorbiscomment_.is_last = true;
- vorbiscomment_.type = ::FLAC__METADATA_TYPE_VORBIS_COMMENT;
- vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
+ vorbiscomment_.is_last = true;
+ vorbiscomment_.type = ::FLAC__METADATA_TYPE_VORBIS_COMMENT;
+ vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
vorbiscomment_.data.vorbis_comment.vendor_string.length = 5;
vorbiscomment_.data.vorbis_comment.vendor_string.entry = (FLAC__byte*)malloc_or_die_(5);
memcpy(vorbiscomment_.data.vorbis_comment.vendor_string.entry, "name0", 8);
if(block.get_length() != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block.get_length());
return false;
- }
+ }
printf("OK\n");
printf("testing StreamInfo::StreamInfo(const StreamInfo &)... +\n");
if(block.get_length() != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block.get_length());
return false;
- }
+ }
printf("OK\n");
printf("testing Padding::Padding(const Padding &)... +\n");
if(block.get_length() != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block.get_length());
return false;
- }
+ }
printf("OK\n");
printf("testing Application::Application(const Application &)... +\n");
if(block.get_length() != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block.get_length());
return false;
- }
+ }
printf("OK\n");
printf("testing SeekTable::SeekTable(const SeekTable &)... +\n");
if(block.get_length() != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block.get_length());
return false;
- }
+ }
printf("OK\n");
printf("testing VorbisComment::VorbisComment(const VorbisComment &)... +\n");
*/
/* min/max_framesize and md5sum don't get written at first, so we have to leave them 0 */
- streaminfo_.is_last = false;
- streaminfo_.type = FLAC__METADATA_TYPE_STREAMINFO;
- streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
- streaminfo_.data.stream_info.min_blocksize = 576;
- streaminfo_.data.stream_info.max_blocksize = 576;
- streaminfo_.data.stream_info.min_framesize = 0;
- streaminfo_.data.stream_info.max_framesize = 0;
- streaminfo_.data.stream_info.sample_rate = 44100;
- streaminfo_.data.stream_info.channels = 1;
- streaminfo_.data.stream_info.bits_per_sample = 8;
- streaminfo_.data.stream_info.total_samples = 0;
+ streaminfo_.is_last = false;
+ streaminfo_.type = FLAC__METADATA_TYPE_STREAMINFO;
+ streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
+ streaminfo_.data.stream_info.min_blocksize = 576;
+ streaminfo_.data.stream_info.max_blocksize = 576;
+ streaminfo_.data.stream_info.min_framesize = 0;
+ streaminfo_.data.stream_info.max_framesize = 0;
+ streaminfo_.data.stream_info.sample_rate = 44100;
+ streaminfo_.data.stream_info.channels = 1;
+ streaminfo_.data.stream_info.bits_per_sample = 8;
+ streaminfo_.data.stream_info.total_samples = 0;
memset(streaminfo_.data.stream_info.md5sum, 0, 16);
- padding_.is_last = false;
- padding_.type = FLAC__METADATA_TYPE_PADDING;
- padding_.length = 1234;
+ padding_.is_last = false;
+ padding_.type = FLAC__METADATA_TYPE_PADDING;
+ padding_.length = 1234;
- seektable_.is_last = false;
- seektable_.type = FLAC__METADATA_TYPE_SEEKTABLE;
+ seektable_.is_last = false;
+ seektable_.type = FLAC__METADATA_TYPE_SEEKTABLE;
seektable_.data.seek_table.num_points = 2;
- seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
+ seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
seektable_.data.seek_table.points = malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(FLAC__StreamMetadata_SeekPoint));
seektable_.data.seek_table.points[0].sample_number = 0;
seektable_.data.seek_table.points[0].stream_offset = 0;
seektable_.data.seek_table.points[1].stream_offset = 1000;
seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
- application1_.is_last = false;
- application1_.type = FLAC__METADATA_TYPE_APPLICATION;
- application1_.length = 8;
+ application1_.is_last = false;
+ application1_.type = FLAC__METADATA_TYPE_APPLICATION;
+ application1_.length = 8;
memcpy(application1_.data.application.id, "\xfe\xdc\xba\x98", 4);
application1_.data.application.data = malloc_or_die_(4);
memcpy(application1_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
- application2_.is_last = false;
- application2_.type = FLAC__METADATA_TYPE_APPLICATION;
- application2_.length = 4;
+ application2_.is_last = false;
+ application2_.type = FLAC__METADATA_TYPE_APPLICATION;
+ application2_.length = 4;
memcpy(application2_.data.application.id, "\x76\x54\x32\x10", 4);
application2_.data.application.data = 0;
num_expected_ = 5;
if(!file_utils__generate_flacfile(flacfilename_, &flacfilesize_, 512 * 1024, &streaminfo_, expected_metadata_sequence_, num_expected_))
- return die_("creating the encoded file");
+ return die_("creating the encoded file");
return true;
}
if(feof(dcd->file))
return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
- else if(*bytes > 0) {
- unsigned bytes_read = fread(buffer, 1, *bytes, dcd->file);
- if(bytes_read == 0) {
- if(feof(dcd->file))
- return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
- else
- return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
- }
- else {
- *bytes = bytes_read;
- return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
- }
- }
- else
- return FLAC__STREAM_DECODER_READ_STATUS_ABORT; /* abort to avoid a deadlock */
+ else if(*bytes > 0) {
+ unsigned bytes_read = fread(buffer, 1, *bytes, dcd->file);
+ if(bytes_read == 0) {
+ if(feof(dcd->file))
+ return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
+ else
+ return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ else {
+ *bytes = bytes_read;
+ return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ }
+ else
+ return FLAC__STREAM_DECODER_READ_STATUS_ABORT; /* abort to avoid a deadlock */
}
static FLAC__StreamDecoderWriteStatus stream_decoder_write_callback_(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
if(dcd->error_occurred)
return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
- if(
- (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER && frame->header.number.frame_number == 0) ||
- (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER && frame->header.number.sample_number == 0)
- ) {
- printf("content... ");
- fflush(stdout);
- }
+ if(
+ (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER && frame->header.number.frame_number == 0) ||
+ (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER && frame->header.number.sample_number == 0)
+ ) {
+ printf("content... ");
+ fflush(stdout);
+ }
return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
}
*/
/* min/max_framesize and md5sum don't get written at first, so we have to leave them 0 */
- streaminfo_.is_last = false;
- streaminfo_.type = FLAC__METADATA_TYPE_STREAMINFO;
- streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
- streaminfo_.data.stream_info.min_blocksize = 576;
- streaminfo_.data.stream_info.max_blocksize = 576;
- streaminfo_.data.stream_info.min_framesize = 0;
- streaminfo_.data.stream_info.max_framesize = 0;
- streaminfo_.data.stream_info.sample_rate = 44100;
- streaminfo_.data.stream_info.channels = 1;
- streaminfo_.data.stream_info.bits_per_sample = 8;
- streaminfo_.data.stream_info.total_samples = 0;
+ streaminfo_.is_last = false;
+ streaminfo_.type = FLAC__METADATA_TYPE_STREAMINFO;
+ streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
+ streaminfo_.data.stream_info.min_blocksize = 576;
+ streaminfo_.data.stream_info.max_blocksize = 576;
+ streaminfo_.data.stream_info.min_framesize = 0;
+ streaminfo_.data.stream_info.max_framesize = 0;
+ streaminfo_.data.stream_info.sample_rate = 44100;
+ streaminfo_.data.stream_info.channels = 1;
+ streaminfo_.data.stream_info.bits_per_sample = 8;
+ streaminfo_.data.stream_info.total_samples = 0;
memset(streaminfo_.data.stream_info.md5sum, 0, 16);
- padding_.is_last = false;
- padding_.type = FLAC__METADATA_TYPE_PADDING;
- padding_.length = 1234;
+ padding_.is_last = false;
+ padding_.type = FLAC__METADATA_TYPE_PADDING;
+ padding_.length = 1234;
- seektable_.is_last = false;
- seektable_.type = FLAC__METADATA_TYPE_SEEKTABLE;
+ seektable_.is_last = false;
+ seektable_.type = FLAC__METADATA_TYPE_SEEKTABLE;
seektable_.data.seek_table.num_points = 2;
- seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
+ seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
seektable_.data.seek_table.points = malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(FLAC__StreamMetadata_SeekPoint));
seektable_.data.seek_table.points[0].sample_number = 0;
seektable_.data.seek_table.points[0].stream_offset = 0;
seektable_.data.seek_table.points[1].stream_offset = 1000;
seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
- application1_.is_last = false;
- application1_.type = FLAC__METADATA_TYPE_APPLICATION;
- application1_.length = 8;
+ application1_.is_last = false;
+ application1_.type = FLAC__METADATA_TYPE_APPLICATION;
+ application1_.length = 8;
memcpy(application1_.data.application.id, "\xfe\xdc\xba\x98", 4);
application1_.data.application.data = malloc_or_die_(4);
memcpy(application1_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
- application2_.is_last = false;
- application2_.type = FLAC__METADATA_TYPE_APPLICATION;
- application2_.length = 4;
+ application2_.is_last = false;
+ application2_.type = FLAC__METADATA_TYPE_APPLICATION;
+ application2_.length = 4;
memcpy(application2_.data.application.id, "\x76\x54\x32\x10", 4);
application2_.data.application.data = 0;
- vorbiscomment_.is_last = true;
- vorbiscomment_.type = FLAC__METADATA_TYPE_VORBIS_COMMENT;
- vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
+ vorbiscomment_.is_last = true;
+ vorbiscomment_.type = FLAC__METADATA_TYPE_VORBIS_COMMENT;
+ vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
vorbiscomment_.data.vorbis_comment.vendor_string.length = 8;
vorbiscomment_.data.vorbis_comment.vendor_string.entry = malloc_or_die_(8);
memcpy(vorbiscomment_.data.vorbis_comment.vendor_string.entry, "flac 1.x", 8);
return die_("priming our metadata");
if(!file_utils__generate_flacfile(flacfile_, 0, 512 * 1024, &streaminfo, metadata, 1))
- return die_("creating the encoded file");
+ return die_("creating the encoded file");
free(vorbiscomment.data.vorbis_comment.vendor_string.entry);
static FLAC__bool change_stats_(const char *filename, FLAC__bool read_only)
{
if(!file_utils__change_stats(filename, read_only))
- return die_("during file_utils__change_stats()");
+ return die_("during file_utils__change_stats()");
return true;
}
if(!test_file_(flacfile_, decoder_metadata_callback_compare_))
return false;
-
+
printf("SV[P]PP\tprev\n");
if(!FLAC__metadata_simple_iterator_prev(iterator))
return die_("iterator ended early\n");
if(block->length != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block->length);
return false;
- }
+ }
if(block->data.seek_table.num_points != num_points) {
printf("FAILED, expected %u point, got %u\n", num_points, block->data.seek_table.num_points);
return false;
{
entry->length = strlen(field);
entry->entry = (FLAC__byte*)malloc(entry->length);
- FLAC__ASSERT(0 != entry->entry);
+ FLAC__ASSERT(0 != entry->entry);
memcpy(entry->entry, field, entry->length);
}
static void entry_clone_(FLAC__StreamMetadata_VorbisComment_Entry *entry)
{
FLAC__byte *x = (FLAC__byte*)malloc(entry->length);
- FLAC__ASSERT(0 != x);
+ FLAC__ASSERT(0 != x);
memcpy(x, entry->entry, entry->length);
entry->entry = x;
}
if(block->length != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block->length);
return false;
- }
+ }
printf("OK\n");
printf("testing FLAC__metadata_object_clone()... ");
if(block->length != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block->length);
return false;
- }
+ }
printf("OK\n");
printf("testing FLAC__metadata_object_clone()... ");
if(block->length != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block->length);
return false;
- }
+ }
printf("OK\n");
printf("testing FLAC__metadata_object_clone()... ");
if(!check_seektable_(block, seekpoints, seekpoint_array))
return false;
- {
+ {
FLAC__uint64 nums[2] = { 3, 7 };
seekpoint_array[seekpoints++].sample_number = nums[0];
seekpoint_array[seekpoints++].sample_number = nums[1];
if(block->length != expected_length) {
printf("FAILED, bad length, expected %u, got %u\n", expected_length, block->length);
return false;
- }
+ }
printf("OK\n");
printf("testing FLAC__metadata_object_clone()... ");
if(blockcopy->min_blocksize != block->min_blocksize) {
printf("FAILED, min_blocksize mismatch, expected %u, got %u\n", block->min_blocksize, blockcopy->min_blocksize);
return false;
- }
+ }
if(blockcopy->max_blocksize != block->max_blocksize) {
printf("FAILED, max_blocksize mismatch, expected %u, got %u\n", block->max_blocksize, blockcopy->max_blocksize);
return false;
- }
+ }
if(blockcopy->min_framesize != block->min_framesize) {
printf("FAILED, min_framesize mismatch, expected %u, got %u\n", block->min_framesize, blockcopy->min_framesize);
return false;
- }
+ }
if(blockcopy->max_framesize != block->max_framesize) {
printf("FAILED, max_framesize mismatch, expected %u, got %u\n", block->max_framesize, blockcopy->max_framesize);
return false;
- }
+ }
if(blockcopy->sample_rate != block->sample_rate) {
printf("FAILED, sample_rate mismatch, expected %u, got %u\n", block->sample_rate, blockcopy->sample_rate);
return false;
- }
+ }
if(blockcopy->channels != block->channels) {
printf("FAILED, channels mismatch, expected %u, got %u\n", block->channels, blockcopy->channels);
return false;
- }
+ }
if(blockcopy->bits_per_sample != block->bits_per_sample) {
printf("FAILED, bits_per_sample mismatch, expected %u, got %u\n", block->bits_per_sample, blockcopy->bits_per_sample);
return false;
- }
+ }
if(blockcopy->total_samples != block->total_samples) {
printf("FAILED, total_samples mismatch, expected %llu, got %llu\n", block->total_samples, blockcopy->total_samples);
return false;
- }
+ }
if(0 != memcmp(blockcopy->md5sum, block->md5sum, sizeof(block->md5sum))) {
printf("FAILED, md5sum mismatch, expected %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X, got %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\n",
(unsigned)block->md5sum[0],
(unsigned)blockcopy->md5sum[15]
);
return false;
- }
+ }
return true;
}
(unsigned)blockcopy->id[3]
);
return false;
- }
+ }
if(0 == block->data || 0 == blockcopy->data) {
if(block->data != blockcopy->data) {
printf("FAILED, data mismatch (%s's data pointer is null)\n", 0==block->data?"original":"copy");
if(blockcopy->num_points != block->num_points) {
printf("FAILED, num_points mismatch, expected %u, got %u\n", block->num_points, blockcopy->num_points);
return false;
- }
+ }
for(i = 0; i < block->num_points; i++) {
if(blockcopy->points[i].sample_number != block->points[i].sample_number) {
printf("FAILED, points[%u].sample_number mismatch, expected %llu, got %llu\n", i, block->points[i].sample_number, blockcopy->points[i].sample_number);
if(blockcopy->vendor_string.length != block->vendor_string.length) {
printf("FAILED, vendor_string.length mismatch, expected %u, got %u\n", block->vendor_string.length, blockcopy->vendor_string.length);
return false;
- }
+ }
if(0 == block->vendor_string.entry || 0 == blockcopy->vendor_string.entry) {
if(block->vendor_string.entry != blockcopy->vendor_string.entry) {
printf("FAILED, vendor_string.entry mismatch\n");
else if(0 != memcmp(blockcopy->vendor_string.entry, block->vendor_string.entry, block->vendor_string.length)) {
printf("FAILED, vendor_string.entry mismatch\n");
return false;
- }
+ }
if(blockcopy->num_comments != block->num_comments) {
printf("FAILED, num_comments mismatch, expected %u, got %u\n", block->num_comments, blockcopy->num_comments);
return false;
- }
+ }
for(i = 0; i < block->num_comments; i++) {
if(blockcopy->comments[i].length != block->comments[i].length) {
printf("FAILED, comments[%u].length mismatch, expected %u, got %u\n", i, block->comments[i].length, blockcopy->comments[i].length);
if(blockcopy->type != block->type) {
printf("FAILED, type mismatch, expected %s, got %s\n", FLAC__MetadataTypeString[block->type], FLAC__MetadataTypeString[blockcopy->type]);
return false;
- }
+ }
if(blockcopy->is_last != block->is_last) {
printf("FAILED, is_last mismatch, expected %u, got %u\n", (unsigned)block->is_last, (unsigned)blockcopy->is_last);
return false;
- }
+ }
if(blockcopy->length != block->length) {
printf("FAILED, length mismatch, expected %u, got %u\n", block->length, blockcopy->length);
return false;
- }
+ }
switch(block->type) {
case FLAC__METADATA_TYPE_STREAMINFO:
return compare_block_data_streaminfo_(&block->data.stream_info, &blockcopy->data.stream_info);
*/
/* min/max_framesize and md5sum don't get written at first, so we have to leave them 0 */
- streaminfo_.is_last = false;
- streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
- streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
- streaminfo_.data.stream_info.min_blocksize = 576;
- streaminfo_.data.stream_info.max_blocksize = 576;
- streaminfo_.data.stream_info.min_framesize = 0;
- streaminfo_.data.stream_info.max_framesize = 0;
- streaminfo_.data.stream_info.sample_rate = 44100;
- streaminfo_.data.stream_info.channels = 1;
- streaminfo_.data.stream_info.bits_per_sample = 8;
- streaminfo_.data.stream_info.total_samples = 0;
+ streaminfo_.is_last = false;
+ streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
+ streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
+ streaminfo_.data.stream_info.min_blocksize = 576;
+ streaminfo_.data.stream_info.max_blocksize = 576;
+ streaminfo_.data.stream_info.min_framesize = 0;
+ streaminfo_.data.stream_info.max_framesize = 0;
+ streaminfo_.data.stream_info.sample_rate = 44100;
+ streaminfo_.data.stream_info.channels = 1;
+ streaminfo_.data.stream_info.bits_per_sample = 8;
+ streaminfo_.data.stream_info.total_samples = 0;
memset(streaminfo_.data.stream_info.md5sum, 0, 16);
- padding_.is_last = false;
- padding_.type = ::FLAC__METADATA_TYPE_PADDING;
- padding_.length = 1234;
+ padding_.is_last = false;
+ padding_.type = ::FLAC__METADATA_TYPE_PADDING;
+ padding_.length = 1234;
- seektable_.is_last = false;
- seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
+ seektable_.is_last = false;
+ seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
seektable_.data.seek_table.num_points = 2;
- seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
+ seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
seektable_.data.seek_table.points = (::FLAC__StreamMetadata_SeekPoint*)malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(::FLAC__StreamMetadata_SeekPoint));
seektable_.data.seek_table.points[0].sample_number = 0;
seektable_.data.seek_table.points[0].stream_offset = 0;
seektable_.data.seek_table.points[1].stream_offset = 1000;
seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
- application1_.is_last = false;
- application1_.type = ::FLAC__METADATA_TYPE_APPLICATION;
- application1_.length = 8;
+ application1_.is_last = false;
+ application1_.type = ::FLAC__METADATA_TYPE_APPLICATION;
+ application1_.length = 8;
memcpy(application1_.data.application.id, "\xfe\xdc\xba\x98", 4);
application1_.data.application.data = (FLAC__byte*)malloc_or_die_(4);
memcpy(application1_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
- application2_.is_last = false;
- application2_.type = ::FLAC__METADATA_TYPE_APPLICATION;
- application2_.length = 4;
+ application2_.is_last = false;
+ application2_.type = ::FLAC__METADATA_TYPE_APPLICATION;
+ application2_.length = 4;
memcpy(application2_.data.application.id, "\x76\x54\x32\x10", 4);
application2_.data.application.data = 0;
num_expected_ = 5;
if(!file_utils__generate_oggflacfile(oggflacfilename_, &oggflacfilesize_, 512 * 1024, &streaminfo_, expected_metadata_sequence_, num_expected_))
- return die_("creating the encoded file");
+ return die_("creating the encoded file");
return true;
}
if(feof(file_))
return ::FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
- else if(*bytes > 0) {
- unsigned bytes_read = ::fread(buffer, 1, *bytes, file_);
- if(bytes_read == 0) {
- if(feof(file_))
- return ::FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
- else
- return ::FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
- }
- else {
- *bytes = bytes_read;
- return ::FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
- }
- }
- else
- return ::FLAC__STREAM_DECODER_READ_STATUS_ABORT; /* abort to avoid a deadlock */
+ else if(*bytes > 0) {
+ unsigned bytes_read = ::fread(buffer, 1, *bytes, file_);
+ if(bytes_read == 0) {
+ if(feof(file_))
+ return ::FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
+ else
+ return ::FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ else {
+ *bytes = bytes_read;
+ return ::FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ }
+ else
+ return ::FLAC__STREAM_DECODER_READ_STATUS_ABORT; /* abort to avoid a deadlock */
}
::FLAC__StreamDecoderWriteStatus DecoderCommon::common_write_callback_(const ::FLAC__Frame *frame)
if(error_occurred_)
return ::FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
- if(
- (frame->header.number_type == ::FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER && frame->header.number.frame_number == 0) ||
- (frame->header.number_type == ::FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER && frame->header.number.sample_number == 0)
- ) {
- printf("content... ");
- fflush(stdout);
- }
+ if(
+ (frame->header.number_type == ::FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER && frame->header.number.frame_number == 0) ||
+ (frame->header.number_type == ::FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER && frame->header.number.sample_number == 0)
+ ) {
+ printf("content... ");
+ fflush(stdout);
+ }
return ::FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
}
*/
/* min/max_framesize and md5sum don't get written at first, so we have to leave them 0 */
- streaminfo_.is_last = false;
- streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
- streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
- streaminfo_.data.stream_info.min_blocksize = 576;
- streaminfo_.data.stream_info.max_blocksize = 576;
- streaminfo_.data.stream_info.min_framesize = 0;
- streaminfo_.data.stream_info.max_framesize = 0;
- streaminfo_.data.stream_info.sample_rate = 44100;
- streaminfo_.data.stream_info.channels = 1;
- streaminfo_.data.stream_info.bits_per_sample = 8;
- streaminfo_.data.stream_info.total_samples = 0;
+ streaminfo_.is_last = false;
+ streaminfo_.type = ::FLAC__METADATA_TYPE_STREAMINFO;
+ streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
+ streaminfo_.data.stream_info.min_blocksize = 576;
+ streaminfo_.data.stream_info.max_blocksize = 576;
+ streaminfo_.data.stream_info.min_framesize = 0;
+ streaminfo_.data.stream_info.max_framesize = 0;
+ streaminfo_.data.stream_info.sample_rate = 44100;
+ streaminfo_.data.stream_info.channels = 1;
+ streaminfo_.data.stream_info.bits_per_sample = 8;
+ streaminfo_.data.stream_info.total_samples = 0;
memset(streaminfo_.data.stream_info.md5sum, 0, 16);
- padding_.is_last = false;
- padding_.type = ::FLAC__METADATA_TYPE_PADDING;
- padding_.length = 1234;
+ padding_.is_last = false;
+ padding_.type = ::FLAC__METADATA_TYPE_PADDING;
+ padding_.length = 1234;
- seektable_.is_last = false;
- seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
+ seektable_.is_last = false;
+ seektable_.type = ::FLAC__METADATA_TYPE_SEEKTABLE;
seektable_.data.seek_table.num_points = 2;
- seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
+ seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
seektable_.data.seek_table.points = (::FLAC__StreamMetadata_SeekPoint*)malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(::FLAC__StreamMetadata_SeekPoint));
seektable_.data.seek_table.points[0].sample_number = 0;
seektable_.data.seek_table.points[0].stream_offset = 0;
seektable_.data.seek_table.points[1].stream_offset = 1000;
seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
- application1_.is_last = false;
- application1_.type = ::FLAC__METADATA_TYPE_APPLICATION;
- application1_.length = 8;
+ application1_.is_last = false;
+ application1_.type = ::FLAC__METADATA_TYPE_APPLICATION;
+ application1_.length = 8;
memcpy(application1_.data.application.id, "\xfe\xdc\xba\x98", 4);
application1_.data.application.data = (FLAC__byte*)malloc_or_die_(4);
memcpy(application1_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
- application2_.is_last = false;
- application2_.type = ::FLAC__METADATA_TYPE_APPLICATION;
- application2_.length = 4;
+ application2_.is_last = false;
+ application2_.type = ::FLAC__METADATA_TYPE_APPLICATION;
+ application2_.length = 4;
memcpy(application2_.data.application.id, "\x76\x54\x32\x10", 4);
application2_.data.application.data = 0;
- vorbiscomment_.is_last = true;
- vorbiscomment_.type = ::FLAC__METADATA_TYPE_VORBIS_COMMENT;
- vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
+ vorbiscomment_.is_last = true;
+ vorbiscomment_.type = ::FLAC__METADATA_TYPE_VORBIS_COMMENT;
+ vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
vorbiscomment_.data.vorbis_comment.vendor_string.length = 8;
vorbiscomment_.data.vorbis_comment.vendor_string.entry = (FLAC__byte*)malloc_or_die_(8);
memcpy(vorbiscomment_.data.vorbis_comment.vendor_string.entry, "flac 1.x", 8);
*/
/* min/max_framesize and md5sum don't get written at first, so we have to leave them 0 */
- streaminfo_.is_last = false;
- streaminfo_.type = FLAC__METADATA_TYPE_STREAMINFO;
- streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
- streaminfo_.data.stream_info.min_blocksize = 576;
- streaminfo_.data.stream_info.max_blocksize = 576;
- streaminfo_.data.stream_info.min_framesize = 0;
- streaminfo_.data.stream_info.max_framesize = 0;
- streaminfo_.data.stream_info.sample_rate = 44100;
- streaminfo_.data.stream_info.channels = 1;
- streaminfo_.data.stream_info.bits_per_sample = 8;
- streaminfo_.data.stream_info.total_samples = 0;
+ streaminfo_.is_last = false;
+ streaminfo_.type = FLAC__METADATA_TYPE_STREAMINFO;
+ streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
+ streaminfo_.data.stream_info.min_blocksize = 576;
+ streaminfo_.data.stream_info.max_blocksize = 576;
+ streaminfo_.data.stream_info.min_framesize = 0;
+ streaminfo_.data.stream_info.max_framesize = 0;
+ streaminfo_.data.stream_info.sample_rate = 44100;
+ streaminfo_.data.stream_info.channels = 1;
+ streaminfo_.data.stream_info.bits_per_sample = 8;
+ streaminfo_.data.stream_info.total_samples = 0;
memset(streaminfo_.data.stream_info.md5sum, 0, 16);
- padding_.is_last = false;
- padding_.type = FLAC__METADATA_TYPE_PADDING;
- padding_.length = 1234;
+ padding_.is_last = false;
+ padding_.type = FLAC__METADATA_TYPE_PADDING;
+ padding_.length = 1234;
- seektable_.is_last = false;
- seektable_.type = FLAC__METADATA_TYPE_SEEKTABLE;
+ seektable_.is_last = false;
+ seektable_.type = FLAC__METADATA_TYPE_SEEKTABLE;
seektable_.data.seek_table.num_points = 2;
- seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
+ seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
seektable_.data.seek_table.points = malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(FLAC__StreamMetadata_SeekPoint));
seektable_.data.seek_table.points[0].sample_number = 0;
seektable_.data.seek_table.points[0].stream_offset = 0;
seektable_.data.seek_table.points[1].stream_offset = 1000;
seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
- application1_.is_last = false;
- application1_.type = FLAC__METADATA_TYPE_APPLICATION;
- application1_.length = 8;
+ application1_.is_last = false;
+ application1_.type = FLAC__METADATA_TYPE_APPLICATION;
+ application1_.length = 8;
memcpy(application1_.data.application.id, "\xfe\xdc\xba\x98", 4);
application1_.data.application.data = malloc_or_die_(4);
memcpy(application1_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
- application2_.is_last = false;
- application2_.type = FLAC__METADATA_TYPE_APPLICATION;
- application2_.length = 4;
+ application2_.is_last = false;
+ application2_.type = FLAC__METADATA_TYPE_APPLICATION;
+ application2_.length = 4;
memcpy(application2_.data.application.id, "\x76\x54\x32\x10", 4);
application2_.data.application.data = 0;
vorbiscomment_.data.vorbis_comment.vendor_string.length = vendor_string_length;
vorbiscomment_.data.vorbis_comment.vendor_string.entry = malloc_or_die_(vendor_string_length);
memcpy(vorbiscomment_.data.vorbis_comment.vendor_string.entry, FLAC__VENDOR_STRING, vendor_string_length);
- vorbiscomment_.data.vorbis_comment.num_comments = 2;
+ vorbiscomment_.data.vorbis_comment.num_comments = 2;
vorbiscomment_.data.vorbis_comment.comments = malloc_or_die_(vorbiscomment_.data.vorbis_comment.num_comments * sizeof(FLAC__StreamMetadata_VorbisComment_Entry));
vorbiscomment_.data.vorbis_comment.comments[0].length = 5;
vorbiscomment_.data.vorbis_comment.comments[0].entry = malloc_or_die_(5);
num_expected_ = 5;
if(!file_utils__generate_oggflacfile(oggflacfilename_, &oggflacfilesize_, 512 * 1024, &streaminfo_, expected_metadata_sequence_, num_expected_))
- return die_("creating the encoded file");
+ return die_("creating the encoded file");
return true;
}
if(feof(dcd->file))
return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
- else if(*bytes > 0) {
- unsigned bytes_read = fread(buffer, 1, *bytes, dcd->file);
- if(bytes_read == 0) {
- if(feof(dcd->file))
- return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
- else
- return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
- }
- else {
- *bytes = bytes_read;
- return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
- }
- }
- else
- return FLAC__STREAM_DECODER_READ_STATUS_ABORT; /* abort to avoid a deadlock */
+ else if(*bytes > 0) {
+ unsigned bytes_read = fread(buffer, 1, *bytes, dcd->file);
+ if(bytes_read == 0) {
+ if(feof(dcd->file))
+ return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
+ else
+ return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ else {
+ *bytes = bytes_read;
+ return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ }
+ else
+ return FLAC__STREAM_DECODER_READ_STATUS_ABORT; /* abort to avoid a deadlock */
}
static FLAC__StreamDecoderWriteStatus stream_decoder_write_callback_(const OggFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
if(dcd->error_occurred)
return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
- if(
- (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER && frame->header.number.frame_number == 0) ||
- (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER && frame->header.number.sample_number == 0)
- ) {
- printf("content... ");
- fflush(stdout);
- }
+ if(
+ (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER && frame->header.number.frame_number == 0) ||
+ (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER && frame->header.number.sample_number == 0)
+ ) {
+ printf("content... ");
+ fflush(stdout);
+ }
return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
}
*/
/* min/max_framesize and md5sum don't get written at first, so we have to leave them 0 */
- streaminfo_.is_last = false;
- streaminfo_.type = FLAC__METADATA_TYPE_STREAMINFO;
- streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
- streaminfo_.data.stream_info.min_blocksize = 576;
- streaminfo_.data.stream_info.max_blocksize = 576;
- streaminfo_.data.stream_info.min_framesize = 0;
- streaminfo_.data.stream_info.max_framesize = 0;
- streaminfo_.data.stream_info.sample_rate = 44100;
- streaminfo_.data.stream_info.channels = 1;
- streaminfo_.data.stream_info.bits_per_sample = 8;
- streaminfo_.data.stream_info.total_samples = 0;
+ streaminfo_.is_last = false;
+ streaminfo_.type = FLAC__METADATA_TYPE_STREAMINFO;
+ streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
+ streaminfo_.data.stream_info.min_blocksize = 576;
+ streaminfo_.data.stream_info.max_blocksize = 576;
+ streaminfo_.data.stream_info.min_framesize = 0;
+ streaminfo_.data.stream_info.max_framesize = 0;
+ streaminfo_.data.stream_info.sample_rate = 44100;
+ streaminfo_.data.stream_info.channels = 1;
+ streaminfo_.data.stream_info.bits_per_sample = 8;
+ streaminfo_.data.stream_info.total_samples = 0;
memset(streaminfo_.data.stream_info.md5sum, 0, 16);
- padding_.is_last = false;
- padding_.type = FLAC__METADATA_TYPE_PADDING;
- padding_.length = 1234;
+ padding_.is_last = false;
+ padding_.type = FLAC__METADATA_TYPE_PADDING;
+ padding_.length = 1234;
- seektable_.is_last = false;
- seektable_.type = FLAC__METADATA_TYPE_SEEKTABLE;
+ seektable_.is_last = false;
+ seektable_.type = FLAC__METADATA_TYPE_SEEKTABLE;
seektable_.data.seek_table.num_points = 2;
- seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
+ seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
seektable_.data.seek_table.points = malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(FLAC__StreamMetadata_SeekPoint));
seektable_.data.seek_table.points[0].sample_number = 0;
seektable_.data.seek_table.points[0].stream_offset = 0;
seektable_.data.seek_table.points[1].stream_offset = 1000;
seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
- application1_.is_last = false;
- application1_.type = FLAC__METADATA_TYPE_APPLICATION;
- application1_.length = 8;
+ application1_.is_last = false;
+ application1_.type = FLAC__METADATA_TYPE_APPLICATION;
+ application1_.length = 8;
memcpy(application1_.data.application.id, "\xfe\xdc\xba\x98", 4);
application1_.data.application.data = malloc_or_die_(4);
memcpy(application1_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
- application2_.is_last = false;
- application2_.type = FLAC__METADATA_TYPE_APPLICATION;
- application2_.length = 4;
+ application2_.is_last = false;
+ application2_.type = FLAC__METADATA_TYPE_APPLICATION;
+ application2_.length = 4;
memcpy(application2_.data.application.id, "\x76\x54\x32\x10", 4);
application2_.data.application.data = 0;
- vorbiscomment_.is_last = true;
- vorbiscomment_.type = FLAC__METADATA_TYPE_VORBIS_COMMENT;
- vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
+ vorbiscomment_.is_last = true;
+ vorbiscomment_.type = FLAC__METADATA_TYPE_VORBIS_COMMENT;
+ vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
vorbiscomment_.data.vorbis_comment.vendor_string.length = 8;
vorbiscomment_.data.vorbis_comment.vendor_string.entry = malloc_or_die_(8);
memcpy(vorbiscomment_.data.vorbis_comment.vendor_string.entry, "flac 1.x", 8);
if(blockcopy->min_blocksize != block->min_blocksize) {
printf("FAILED, min_blocksize mismatch, expected %u, got %u\n", block->min_blocksize, blockcopy->min_blocksize);
return false;
- }
+ }
if(blockcopy->max_blocksize != block->max_blocksize) {
printf("FAILED, max_blocksize mismatch, expected %u, got %u\n", block->max_blocksize, blockcopy->max_blocksize);
return false;
- }
+ }
if(blockcopy->min_framesize != block->min_framesize) {
printf("FAILED, min_framesize mismatch, expected %u, got %u\n", block->min_framesize, blockcopy->min_framesize);
return false;
- }
+ }
if(blockcopy->max_framesize != block->max_framesize) {
printf("FAILED, max_framesize mismatch, expected %u, got %u\n", block->max_framesize, blockcopy->max_framesize);
return false;
- }
+ }
if(blockcopy->sample_rate != block->sample_rate) {
printf("FAILED, sample_rate mismatch, expected %u, got %u\n", block->sample_rate, blockcopy->sample_rate);
return false;
- }
+ }
if(blockcopy->channels != block->channels) {
printf("FAILED, channels mismatch, expected %u, got %u\n", block->channels, blockcopy->channels);
return false;
- }
+ }
if(blockcopy->bits_per_sample != block->bits_per_sample) {
printf("FAILED, bits_per_sample mismatch, expected %u, got %u\n", block->bits_per_sample, blockcopy->bits_per_sample);
return false;
- }
+ }
if(blockcopy->total_samples != block->total_samples) {
printf("FAILED, total_samples mismatch, expected %llu, got %llu\n", block->total_samples, blockcopy->total_samples);
return false;
- }
+ }
if(0 != memcmp(blockcopy->md5sum, block->md5sum, sizeof(block->md5sum))) {
printf("FAILED, md5sum mismatch, expected %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X, got %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\n",
(unsigned)block->md5sum[0],
(unsigned)blockcopy->md5sum[15]
);
return false;
- }
+ }
return true;
}
(unsigned)blockcopy->id[3]
);
return false;
- }
+ }
if(0 == block->data || 0 == blockcopy->data) {
if(block->data != blockcopy->data) {
printf("FAILED, data mismatch (%s's data pointer is null)\n", 0==block->data?"original":"copy");
if(blockcopy->num_points != block->num_points) {
printf("FAILED, num_points mismatch, expected %u, got %u\n", block->num_points, blockcopy->num_points);
return false;
- }
+ }
for(i = 0; i < block->num_points; i++) {
if(blockcopy->points[i].sample_number != block->points[i].sample_number) {
printf("FAILED, points[%u].sample_number mismatch, expected %llu, got %llu\n", i, block->points[i].sample_number, blockcopy->points[i].sample_number);
if(blockcopy->vendor_string.length != block->vendor_string.length) {
printf("FAILED, vendor_string.length mismatch, expected %u, got %u\n", block->vendor_string.length, blockcopy->vendor_string.length);
return false;
- }
+ }
if(0 == block->vendor_string.entry || 0 == blockcopy->vendor_string.entry) {
if(block->vendor_string.entry != blockcopy->vendor_string.entry) {
printf("FAILED, vendor_string.entry mismatch\n");
else if(0 != memcmp(blockcopy->vendor_string.entry, block->vendor_string.entry, block->vendor_string.length)) {
printf("FAILED, vendor_string.entry mismatch\n");
return false;
- }
+ }
if(blockcopy->num_comments != block->num_comments) {
printf("FAILED, num_comments mismatch, expected %u, got %u\n", block->num_comments, blockcopy->num_comments);
return false;
- }
+ }
for(i = 0; i < block->num_comments; i++) {
if(blockcopy->comments[i].length != block->comments[i].length) {
printf("FAILED, comments[%u].length mismatch, expected %u, got %u\n", i, block->comments[i].length, blockcopy->comments[i].length);
if(blockcopy->type != block->type) {
printf("FAILED, type mismatch, expected %s, got %s\n", FLAC__MetadataTypeString[block->type], FLAC__MetadataTypeString[blockcopy->type]);
return false;
- }
+ }
if(blockcopy->is_last != block->is_last) {
printf("FAILED, is_last mismatch, expected %u, got %u\n", (unsigned)block->is_last, (unsigned)blockcopy->is_last);
return false;
- }
+ }
if(blockcopy->length != block->length) {
printf("FAILED, length mismatch, expected %u, got %u\n", block->length, blockcopy->length);
return false;
- }
+ }
switch(block->type) {
case FLAC__METADATA_TYPE_STREAMINFO:
return compare_block_data_streaminfo_(&block->data.stream_info, &blockcopy->data.stream_info);
# This isn't always true (for example, nasm can't handle it)
command=""
while [ $1 ]; do
- if [ "$1" != "-fPIC" ]; then
- if [ "$1" != "-DPIC" ]; then
- command="$command $1"
- fi
- fi
- shift
+ if [ "$1" != "-fPIC" ]; then
+ if [ "$1" != "-DPIC" ]; then
+ command="$command $1"
+ fi
+ fi
+ shift
done
echo $command
exec $command