1 /* test_libFLAC - Unit tester for libFLAC
2 * Copyright (C) 2002 Josh Coalson
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 #include "file_utils.h"
21 #include "FLAC/assert.h"
22 #include "FLAC/file_encoder.h"
23 #include "FLAC/seekable_stream_encoder.h"
24 #include "FLAC/stream_encoder.h"
25 #include "share/grabbag.h"
30 static FLAC__StreamMetadata streaminfo_, padding_, seektable_, application1_, application2_, vorbiscomment_, cuesheet_;
31 static FLAC__StreamMetadata *metadata_sequence_[] = { &padding_, &seektable_, &application1_, &application2_, &vorbiscomment_, &cuesheet_ };
32 static const unsigned num_metadata_ = 6;
33 static const char *flacfilename_ = "metadata.flac";
35 static FLAC__bool die_s_(const char *msg, const FLAC__StreamEncoder *encoder)
37 FLAC__StreamEncoderState state = FLAC__stream_encoder_get_state(encoder);
40 printf("FAILED, %s", msg);
44 printf(", state = %u (%s)\n", (unsigned)state, FLAC__StreamEncoderStateString[state]);
45 if(state == FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR) {
46 FLAC__StreamDecoderState dstate = FLAC__stream_encoder_get_verify_decoder_state(encoder);
47 printf(" verify decoder state = %u (%s)\n", (unsigned)dstate, FLAC__StreamDecoderStateString[dstate]);
53 static FLAC__bool die_ss_(const char *msg, const FLAC__SeekableStreamEncoder *encoder)
55 FLAC__SeekableStreamEncoderState state = FLAC__seekable_stream_encoder_get_state(encoder);
58 printf("FAILED, %s", msg);
62 printf(", state = %u (%s)\n", (unsigned)state, FLAC__SeekableStreamEncoderStateString[state]);
63 if(state == FLAC__SEEKABLE_STREAM_ENCODER_STREAM_ENCODER_ERROR) {
64 FLAC__StreamEncoderState state_ = FLAC__seekable_stream_encoder_get_stream_encoder_state(encoder);
65 printf(" stream encoder state = %u (%s)\n", (unsigned)state_, FLAC__StreamEncoderStateString[state_]);
66 if(state_ == FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR) {
67 FLAC__StreamDecoderState dstate = FLAC__seekable_stream_encoder_get_verify_decoder_state(encoder);
68 printf(" verify decoder state = %u (%s)\n", (unsigned)dstate, FLAC__StreamDecoderStateString[dstate]);
75 static FLAC__bool die_f_(const char *msg, const FLAC__FileEncoder *encoder)
77 FLAC__FileEncoderState state = FLAC__file_encoder_get_state(encoder);
80 printf("FAILED, %s", msg);
84 printf(", state = %u (%s)\n", (unsigned)state, FLAC__FileEncoderStateString[state]);
85 if(state == FLAC__FILE_ENCODER_SEEKABLE_STREAM_ENCODER_ERROR) {
86 FLAC__SeekableStreamEncoderState state_ = FLAC__file_encoder_get_seekable_stream_encoder_state(encoder);
87 printf(" seekable stream encoder state = %u (%s)\n", (unsigned)state_, FLAC__SeekableStreamEncoderStateString[state_]);
88 if(state_ == FLAC__SEEKABLE_STREAM_ENCODER_STREAM_ENCODER_ERROR) {
89 FLAC__StreamEncoderState state__ = FLAC__file_encoder_get_stream_encoder_state(encoder);
90 printf(" stream encoder state = %u (%s)\n", (unsigned)state__, FLAC__StreamEncoderStateString[state__]);
91 if(state__ == FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR) {
92 FLAC__StreamDecoderState dstate = FLAC__file_encoder_get_verify_decoder_state(encoder);
93 printf(" verify decoder state = %u (%s)\n", (unsigned)dstate, FLAC__StreamDecoderStateString[dstate]);
101 static void *malloc_or_die_(size_t size)
103 void *x = malloc(size);
105 fprintf(stderr, "ERROR: out of memory allocating %u bytes\n", (unsigned)size);
111 static void init_metadata_blocks_()
114 most of the actual numbers and data in the blocks don't matter,
115 we just want to make sure the encoder encodes them correctly
117 remember, the metadata interface gets tested after the encoders,
118 so we do all the metadata manipulation here without it.
121 /* min/max_framesize and md5sum don't get written at first, so we have to leave them 0 */
122 streaminfo_.is_last = false;
123 streaminfo_.type = FLAC__METADATA_TYPE_STREAMINFO;
124 streaminfo_.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
125 streaminfo_.data.stream_info.min_blocksize = 576;
126 streaminfo_.data.stream_info.max_blocksize = 576;
127 streaminfo_.data.stream_info.min_framesize = 0;
128 streaminfo_.data.stream_info.max_framesize = 0;
129 streaminfo_.data.stream_info.sample_rate = 44100;
130 streaminfo_.data.stream_info.channels = 1;
131 streaminfo_.data.stream_info.bits_per_sample = 8;
132 streaminfo_.data.stream_info.total_samples = 0;
133 memset(streaminfo_.data.stream_info.md5sum, 0, 16);
135 padding_.is_last = false;
136 padding_.type = FLAC__METADATA_TYPE_PADDING;
137 padding_.length = 1234;
139 seektable_.is_last = false;
140 seektable_.type = FLAC__METADATA_TYPE_SEEKTABLE;
141 seektable_.data.seek_table.num_points = 2;
142 seektable_.length = seektable_.data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
143 seektable_.data.seek_table.points = malloc_or_die_(seektable_.data.seek_table.num_points * sizeof(FLAC__StreamMetadata_SeekPoint));
144 seektable_.data.seek_table.points[0].sample_number = 0;
145 seektable_.data.seek_table.points[0].stream_offset = 0;
146 seektable_.data.seek_table.points[0].frame_samples = streaminfo_.data.stream_info.min_blocksize;
147 seektable_.data.seek_table.points[1].sample_number = FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER;
148 seektable_.data.seek_table.points[1].stream_offset = 1000;
149 seektable_.data.seek_table.points[1].frame_samples = streaminfo_.data.stream_info.min_blocksize;
151 application1_.is_last = false;
152 application1_.type = FLAC__METADATA_TYPE_APPLICATION;
153 application1_.length = 8;
154 memcpy(application1_.data.application.id, "\xfe\xdc\xba\x98", 4);
155 application1_.data.application.data = malloc_or_die_(4);
156 memcpy(application1_.data.application.data, "\xf0\xe1\xd2\xc3", 4);
158 application2_.is_last = false;
159 application2_.type = FLAC__METADATA_TYPE_APPLICATION;
160 application2_.length = 4;
161 memcpy(application2_.data.application.id, "\x76\x54\x32\x10", 4);
162 application2_.data.application.data = 0;
164 vorbiscomment_.is_last = false;
165 vorbiscomment_.type = FLAC__METADATA_TYPE_VORBIS_COMMENT;
166 vorbiscomment_.length = (4 + 8) + 4 + (4 + 5) + (4 + 0);
167 vorbiscomment_.data.vorbis_comment.vendor_string.length = 8;
168 vorbiscomment_.data.vorbis_comment.vendor_string.entry = malloc_or_die_(8);
169 memcpy(vorbiscomment_.data.vorbis_comment.vendor_string.entry, "flac 1.x", 8);
170 vorbiscomment_.data.vorbis_comment.num_comments = 2;
171 vorbiscomment_.data.vorbis_comment.comments = malloc_or_die_(vorbiscomment_.data.vorbis_comment.num_comments * sizeof(FLAC__StreamMetadata_VorbisComment_Entry));
172 vorbiscomment_.data.vorbis_comment.comments[0].length = 5;
173 vorbiscomment_.data.vorbis_comment.comments[0].entry = malloc_or_die_(5);
174 memcpy(vorbiscomment_.data.vorbis_comment.comments[0].entry, "ab=cd", 5);
175 vorbiscomment_.data.vorbis_comment.comments[1].length = 0;
176 vorbiscomment_.data.vorbis_comment.comments[1].entry = 0;
178 cuesheet_.is_last = true;
179 cuesheet_.type = FLAC__METADATA_TYPE_CUESHEET;
183 FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN +
184 FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN +
185 FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN +
186 FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN
190 FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN +
191 FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN +
192 FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN +
193 FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN +
194 FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN +
195 FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN +
196 FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN
200 FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN +
201 FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN +
202 FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN
205 memset(cuesheet_.data.cue_sheet.media_catalog_number, 0, sizeof(cuesheet_.data.cue_sheet.media_catalog_number));
206 cuesheet_.data.cue_sheet.media_catalog_number[0] = 'j';
207 cuesheet_.data.cue_sheet.media_catalog_number[1] = 'C';
208 cuesheet_.data.cue_sheet.lead_in = 159;
209 cuesheet_.data.cue_sheet.num_tracks = 2;
210 cuesheet_.data.cue_sheet.tracks = malloc_or_die_(cuesheet_.data.cue_sheet.num_tracks * sizeof(FLAC__StreamMetadata_CueSheet_Track));
211 cuesheet_.data.cue_sheet.tracks[0].offset = 1;
212 cuesheet_.data.cue_sheet.tracks[0].number = 1;
213 memcpy(cuesheet_.data.cue_sheet.tracks[0].isrc, "ACBDE1234567", sizeof(cuesheet_.data.cue_sheet.tracks[0].isrc));
214 cuesheet_.data.cue_sheet.tracks[0].type = 0;
215 cuesheet_.data.cue_sheet.tracks[0].pre_emphasis = 1;
216 cuesheet_.data.cue_sheet.tracks[0].num_indices = 2;
217 cuesheet_.data.cue_sheet.tracks[0].indices = malloc_or_die_(cuesheet_.data.cue_sheet.tracks[0].num_indices * sizeof(FLAC__StreamMetadata_CueSheet_Index));
218 cuesheet_.data.cue_sheet.tracks[0].indices[0].offset = 0;
219 cuesheet_.data.cue_sheet.tracks[0].indices[0].number = 0;
220 cuesheet_.data.cue_sheet.tracks[0].indices[1].offset = 1234567890;
221 cuesheet_.data.cue_sheet.tracks[0].indices[1].number = 1;
222 cuesheet_.data.cue_sheet.tracks[1].offset = 12345678901;
223 cuesheet_.data.cue_sheet.tracks[1].number = 2;
224 memcpy(cuesheet_.data.cue_sheet.tracks[1].isrc, "ACBDE7654321", sizeof(cuesheet_.data.cue_sheet.tracks[1].isrc));
225 cuesheet_.data.cue_sheet.tracks[1].type = 1;
226 cuesheet_.data.cue_sheet.tracks[1].pre_emphasis = 0;
227 cuesheet_.data.cue_sheet.tracks[1].num_indices = 1;
228 cuesheet_.data.cue_sheet.tracks[1].indices = malloc_or_die_(cuesheet_.data.cue_sheet.tracks[1].num_indices * sizeof(FLAC__StreamMetadata_CueSheet_Index));
229 cuesheet_.data.cue_sheet.tracks[1].indices[0].offset = 0;
230 cuesheet_.data.cue_sheet.tracks[1].indices[0].number = 1;
233 static void free_metadata_blocks_()
235 free(seektable_.data.seek_table.points);
236 free(application1_.data.application.data);
237 free(vorbiscomment_.data.vorbis_comment.vendor_string.entry);
238 free(vorbiscomment_.data.vorbis_comment.comments[0].entry);
239 free(vorbiscomment_.data.vorbis_comment.comments);
240 free(cuesheet_.data.cue_sheet.tracks[0].indices);
241 free(cuesheet_.data.cue_sheet.tracks[1].indices);
242 free(cuesheet_.data.cue_sheet.tracks);
245 static FLAC__StreamEncoderWriteStatus stream_encoder_write_callback_(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], unsigned bytes, unsigned samples, unsigned current_frame, void *client_data)
247 (void)encoder, (void)buffer, (void)bytes, (void)samples, (void)current_frame, (void)client_data;
248 return FLAC__STREAM_ENCODER_WRITE_STATUS_OK;
251 static void stream_encoder_metadata_callback_(const FLAC__StreamEncoder *encoder, const FLAC__StreamMetadata *metadata, void *client_data)
253 (void)encoder, (void)metadata, (void)client_data;
256 static FLAC__bool test_stream_encoder()
258 FLAC__StreamEncoder *encoder;
259 FLAC__StreamEncoderState state;
260 FLAC__StreamDecoderState dstate;
261 FLAC__int32 samples[1024];
262 FLAC__int32 *samples_array[1] = { samples };
265 printf("\n+++ libFLAC unit test: FLAC__StreamEncoder\n\n");
267 printf("testing FLAC__stream_encoder_new()... ");
268 encoder = FLAC__stream_encoder_new();
270 printf("FAILED, returned NULL\n");
275 printf("testing FLAC__stream_encoder_set_verify()... ");
276 if(!FLAC__stream_encoder_set_verify(encoder, true))
277 return die_s_("returned false", encoder);
280 printf("testing FLAC__stream_encoder_set_streamable_subset()... ");
281 if(!FLAC__stream_encoder_set_streamable_subset(encoder, true))
282 return die_s_("returned false", encoder);
285 printf("testing FLAC__stream_encoder_set_do_mid_side_stereo()... ");
286 if(!FLAC__stream_encoder_set_do_mid_side_stereo(encoder, false))
287 return die_s_("returned false", encoder);
290 printf("testing FLAC__stream_encoder_set_loose_mid_side_stereo()... ");
291 if(!FLAC__stream_encoder_set_loose_mid_side_stereo(encoder, false))
292 return die_s_("returned false", encoder);
295 printf("testing FLAC__stream_encoder_set_channels()... ");
296 if(!FLAC__stream_encoder_set_channels(encoder, streaminfo_.data.stream_info.channels))
297 return die_s_("returned false", encoder);
300 printf("testing FLAC__stream_encoder_set_bits_per_sample()... ");
301 if(!FLAC__stream_encoder_set_bits_per_sample(encoder, streaminfo_.data.stream_info.bits_per_sample))
302 return die_s_("returned false", encoder);
305 printf("testing FLAC__stream_encoder_set_sample_rate()... ");
306 if(!FLAC__stream_encoder_set_sample_rate(encoder, streaminfo_.data.stream_info.sample_rate))
307 return die_s_("returned false", encoder);
310 printf("testing FLAC__stream_encoder_set_blocksize()... ");
311 if(!FLAC__stream_encoder_set_blocksize(encoder, streaminfo_.data.stream_info.min_blocksize))
312 return die_s_("returned false", encoder);
315 printf("testing FLAC__stream_encoder_set_max_lpc_order()... ");
316 if(!FLAC__stream_encoder_set_max_lpc_order(encoder, 0))
317 return die_s_("returned false", encoder);
320 printf("testing FLAC__stream_encoder_set_qlp_coeff_precision()... ");
321 if(!FLAC__stream_encoder_set_qlp_coeff_precision(encoder, 0))
322 return die_s_("returned false", encoder);
325 printf("testing FLAC__stream_encoder_set_do_qlp_coeff_prec_search()... ");
326 if(!FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder, false))
327 return die_s_("returned false", encoder);
330 printf("testing FLAC__stream_encoder_set_do_escape_coding()... ");
331 if(!FLAC__stream_encoder_set_do_escape_coding(encoder, false))
332 return die_s_("returned false", encoder);
335 printf("testing FLAC__stream_encoder_set_do_exhaustive_model_search()... ");
336 if(!FLAC__stream_encoder_set_do_exhaustive_model_search(encoder, false))
337 return die_s_("returned false", encoder);
340 printf("testing FLAC__stream_encoder_set_min_residual_partition_order()... ");
341 if(!FLAC__stream_encoder_set_min_residual_partition_order(encoder, 0))
342 return die_s_("returned false", encoder);
345 printf("testing FLAC__stream_encoder_set_max_residual_partition_order()... ");
346 if(!FLAC__stream_encoder_set_max_residual_partition_order(encoder, 0))
347 return die_s_("returned false", encoder);
350 printf("testing FLAC__stream_encoder_set_rice_parameter_search_dist()... ");
351 if(!FLAC__stream_encoder_set_rice_parameter_search_dist(encoder, 0))
352 return die_s_("returned false", encoder);
355 printf("testing FLAC__stream_encoder_set_total_samples_estimate()... ");
356 if(!FLAC__stream_encoder_set_total_samples_estimate(encoder, streaminfo_.data.stream_info.total_samples))
357 return die_s_("returned false", encoder);
360 printf("testing FLAC__stream_encoder_set_metadata()... ");
361 if(!FLAC__stream_encoder_set_metadata(encoder, metadata_sequence_, num_metadata_))
362 return die_s_("returned false", encoder);
365 printf("testing FLAC__stream_encoder_set_write_callback()... ");
366 if(!FLAC__stream_encoder_set_write_callback(encoder, stream_encoder_write_callback_))
367 return die_s_("returned false", encoder);
370 printf("testing FLAC__stream_encoder_set_metadata_callback()... ");
371 if(!FLAC__stream_encoder_set_metadata_callback(encoder, stream_encoder_metadata_callback_))
372 return die_s_("returned false", encoder);
375 printf("testing FLAC__stream_encoder_set_client_data()... ");
376 if(!FLAC__stream_encoder_set_client_data(encoder, 0))
377 return die_s_("returned false", encoder);
380 printf("testing FLAC__stream_encoder_init()... ");
381 if(FLAC__stream_encoder_init(encoder) != FLAC__STREAM_ENCODER_OK)
382 return die_s_(0, encoder);
385 printf("testing FLAC__stream_encoder_get_state()... ");
386 state = FLAC__stream_encoder_get_state(encoder);
387 printf("returned state = %u (%s)... OK\n", (unsigned)state, FLAC__StreamEncoderStateString[state]);
389 printf("testing FLAC__stream_encoder_get_verify_decoder_state()... ");
390 dstate = FLAC__stream_encoder_get_verify_decoder_state(encoder);
391 printf("returned state = %u (%s)... OK\n", (unsigned)dstate, FLAC__StreamDecoderStateString[dstate]);
394 FLAC__uint64 absolute_sample;
395 unsigned frame_number;
398 FLAC__int32 expected;
401 printf("testing FLAC__stream_encoder_get_verify_decoder_error_stats()... ");
402 FLAC__stream_encoder_get_verify_decoder_error_stats(encoder, &absolute_sample, &frame_number, &channel, &sample, &expected, &got);
406 printf("testing FLAC__stream_encoder_get_verify()... ");
407 if(FLAC__stream_encoder_get_verify(encoder) != true) {
408 printf("FAILED, expected true, got false\n");
413 printf("testing FLAC__stream_encoder_get_streamable_subset()... ");
414 if(FLAC__stream_encoder_get_streamable_subset(encoder) != true) {
415 printf("FAILED, expected true, got false\n");
420 printf("testing FLAC__stream_encoder_get_do_mid_side_stereo()... ");
421 if(FLAC__stream_encoder_get_do_mid_side_stereo(encoder) != false) {
422 printf("FAILED, expected false, got true\n");
427 printf("testing FLAC__stream_encoder_get_loose_mid_side_stereo()... ");
428 if(FLAC__stream_encoder_get_loose_mid_side_stereo(encoder) != false) {
429 printf("FAILED, expected false, got true\n");
434 printf("testing FLAC__stream_encoder_get_channels()... ");
435 if(FLAC__stream_encoder_get_channels(encoder) != streaminfo_.data.stream_info.channels) {
436 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.channels, FLAC__stream_encoder_get_channels(encoder));
441 printf("testing FLAC__stream_encoder_get_bits_per_sample()... ");
442 if(FLAC__stream_encoder_get_bits_per_sample(encoder) != streaminfo_.data.stream_info.bits_per_sample) {
443 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.bits_per_sample, FLAC__stream_encoder_get_bits_per_sample(encoder));
448 printf("testing FLAC__stream_encoder_get_sample_rate()... ");
449 if(FLAC__stream_encoder_get_sample_rate(encoder) != streaminfo_.data.stream_info.sample_rate) {
450 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.sample_rate, FLAC__stream_encoder_get_sample_rate(encoder));
455 printf("testing FLAC__stream_encoder_get_blocksize()... ");
456 if(FLAC__stream_encoder_get_blocksize(encoder) != streaminfo_.data.stream_info.min_blocksize) {
457 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.min_blocksize, FLAC__stream_encoder_get_blocksize(encoder));
462 printf("testing FLAC__stream_encoder_get_max_lpc_order()... ");
463 if(FLAC__stream_encoder_get_max_lpc_order(encoder) != 0) {
464 printf("FAILED, expected %u, got %u\n", 0, FLAC__stream_encoder_get_max_lpc_order(encoder));
469 printf("testing FLAC__stream_encoder_get_qlp_coeff_precision()... ");
470 (void)FLAC__stream_encoder_get_qlp_coeff_precision(encoder);
471 /* we asked the encoder to auto select this so we accept anything */
474 printf("testing FLAC__stream_encoder_get_do_qlp_coeff_prec_search()... ");
475 if(FLAC__stream_encoder_get_do_qlp_coeff_prec_search(encoder) != false) {
476 printf("FAILED, expected false, got true\n");
481 printf("testing FLAC__stream_encoder_get_do_escape_coding()... ");
482 if(FLAC__stream_encoder_get_do_escape_coding(encoder) != false) {
483 printf("FAILED, expected false, got true\n");
488 printf("testing FLAC__stream_encoder_get_do_exhaustive_model_search()... ");
489 if(FLAC__stream_encoder_get_do_exhaustive_model_search(encoder) != false) {
490 printf("FAILED, expected false, got true\n");
495 printf("testing FLAC__stream_encoder_get_min_residual_partition_order()... ");
496 if(FLAC__stream_encoder_get_min_residual_partition_order(encoder) != 0) {
497 printf("FAILED, expected %u, got %u\n", 0, FLAC__stream_encoder_get_min_residual_partition_order(encoder));
502 printf("testing FLAC__stream_encoder_get_max_residual_partition_order()... ");
503 if(FLAC__stream_encoder_get_max_residual_partition_order(encoder) != 0) {
504 printf("FAILED, expected %u, got %u\n", 0, FLAC__stream_encoder_get_max_residual_partition_order(encoder));
509 printf("testing FLAC__stream_encoder_get_rice_parameter_search_dist()... ");
510 if(FLAC__stream_encoder_get_rice_parameter_search_dist(encoder) != 0) {
511 printf("FAILED, expected %u, got %u\n", 0, FLAC__stream_encoder_get_rice_parameter_search_dist(encoder));
516 printf("testing FLAC__stream_encoder_get_total_samples_estimate()... ");
517 if(FLAC__stream_encoder_get_total_samples_estimate(encoder) != streaminfo_.data.stream_info.total_samples) {
518 printf("FAILED, expected %llu, got %llu\n", streaminfo_.data.stream_info.total_samples, FLAC__stream_encoder_get_total_samples_estimate(encoder));
523 /* init the dummy sample buffer */
524 for(i = 0; i < sizeof(samples) / sizeof(FLAC__int32); i++)
527 printf("testing FLAC__stream_encoder_process()... ");
528 if(!FLAC__stream_encoder_process(encoder, (const FLAC__int32 * const *)samples_array, sizeof(samples) / sizeof(FLAC__int32)))
529 return die_s_("returned false", encoder);
532 printf("testing FLAC__stream_encoder_process_interleaved()... ");
533 if(!FLAC__stream_encoder_process_interleaved(encoder, samples, sizeof(samples) / sizeof(FLAC__int32)))
534 return die_s_("returned false", encoder);
537 printf("testing FLAC__stream_encoder_finish()... ");
538 FLAC__stream_encoder_finish(encoder);
541 printf("testing FLAC__stream_encoder_delete()... ");
542 FLAC__stream_encoder_delete(encoder);
545 printf("\nPASSED!\n");
550 FLAC__SeekableStreamEncoderSeekStatus seekable_stream_encoder_seek_callback_(const FLAC__SeekableStreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data)
552 (void)encoder, (void)absolute_byte_offset, (void)client_data;
553 return FLAC__SEEKABLE_STREAM_ENCODER_SEEK_STATUS_OK;
556 FLAC__StreamEncoderWriteStatus seekable_stream_encoder_write_callback_(const FLAC__SeekableStreamEncoder *encoder, const FLAC__byte buffer[], unsigned bytes, unsigned samples, unsigned current_frame, void *client_data)
558 (void)encoder, (void)buffer, (void)bytes, (void)samples, (void)current_frame, (void)client_data;
559 return FLAC__STREAM_ENCODER_WRITE_STATUS_OK;
562 static FLAC__bool test_seekable_stream_encoder()
564 FLAC__SeekableStreamEncoder *encoder;
565 FLAC__SeekableStreamEncoderState state;
566 FLAC__StreamEncoderState state_;
567 FLAC__StreamDecoderState dstate;
568 FLAC__int32 samples[1024];
569 FLAC__int32 *samples_array[1] = { samples };
572 printf("\n+++ libFLAC unit test: FLAC__SeekableStreamEncoder\n\n");
574 printf("testing FLAC__seekable_stream_encoder_new()... ");
575 encoder = FLAC__seekable_stream_encoder_new();
577 printf("FAILED, returned NULL\n");
582 printf("testing FLAC__seekable_stream_encoder_set_verify()... ");
583 if(!FLAC__seekable_stream_encoder_set_verify(encoder, true))
584 return die_ss_("returned false", encoder);
587 printf("testing FLAC__seekable_stream_encoder_set_streamable_subset()... ");
588 if(!FLAC__seekable_stream_encoder_set_streamable_subset(encoder, true))
589 return die_ss_("returned false", encoder);
592 printf("testing FLAC__seekable_stream_encoder_set_do_mid_side_stereo()... ");
593 if(!FLAC__seekable_stream_encoder_set_do_mid_side_stereo(encoder, false))
594 return die_ss_("returned false", encoder);
597 printf("testing FLAC__seekable_stream_encoder_set_loose_mid_side_stereo()... ");
598 if(!FLAC__seekable_stream_encoder_set_loose_mid_side_stereo(encoder, false))
599 return die_ss_("returned false", encoder);
602 printf("testing FLAC__seekable_stream_encoder_set_channels()... ");
603 if(!FLAC__seekable_stream_encoder_set_channels(encoder, streaminfo_.data.stream_info.channels))
604 return die_ss_("returned false", encoder);
607 printf("testing FLAC__seekable_stream_encoder_set_bits_per_sample()... ");
608 if(!FLAC__seekable_stream_encoder_set_bits_per_sample(encoder, streaminfo_.data.stream_info.bits_per_sample))
609 return die_ss_("returned false", encoder);
612 printf("testing FLAC__seekable_stream_encoder_set_sample_rate()... ");
613 if(!FLAC__seekable_stream_encoder_set_sample_rate(encoder, streaminfo_.data.stream_info.sample_rate))
614 return die_ss_("returned false", encoder);
617 printf("testing FLAC__seekable_stream_encoder_set_blocksize()... ");
618 if(!FLAC__seekable_stream_encoder_set_blocksize(encoder, streaminfo_.data.stream_info.min_blocksize))
619 return die_ss_("returned false", encoder);
622 printf("testing FLAC__seekable_stream_encoder_set_max_lpc_order()... ");
623 if(!FLAC__seekable_stream_encoder_set_max_lpc_order(encoder, 0))
624 return die_ss_("returned false", encoder);
627 printf("testing FLAC__seekable_stream_encoder_set_qlp_coeff_precision()... ");
628 if(!FLAC__seekable_stream_encoder_set_qlp_coeff_precision(encoder, 0))
629 return die_ss_("returned false", encoder);
632 printf("testing FLAC__seekable_stream_encoder_set_do_qlp_coeff_prec_search()... ");
633 if(!FLAC__seekable_stream_encoder_set_do_qlp_coeff_prec_search(encoder, false))
634 return die_ss_("returned false", encoder);
637 printf("testing FLAC__seekable_stream_encoder_set_do_escape_coding()... ");
638 if(!FLAC__seekable_stream_encoder_set_do_escape_coding(encoder, false))
639 return die_ss_("returned false", encoder);
642 printf("testing FLAC__seekable_stream_encoder_set_do_exhaustive_model_search()... ");
643 if(!FLAC__seekable_stream_encoder_set_do_exhaustive_model_search(encoder, false))
644 return die_ss_("returned false", encoder);
647 printf("testing FLAC__seekable_stream_encoder_set_min_residual_partition_order()... ");
648 if(!FLAC__seekable_stream_encoder_set_min_residual_partition_order(encoder, 0))
649 return die_ss_("returned false", encoder);
652 printf("testing FLAC__seekable_stream_encoder_set_max_residual_partition_order()... ");
653 if(!FLAC__seekable_stream_encoder_set_max_residual_partition_order(encoder, 0))
654 return die_ss_("returned false", encoder);
657 printf("testing FLAC__seekable_stream_encoder_set_rice_parameter_search_dist()... ");
658 if(!FLAC__seekable_stream_encoder_set_rice_parameter_search_dist(encoder, 0))
659 return die_ss_("returned false", encoder);
662 printf("testing FLAC__seekable_stream_encoder_set_total_samples_estimate()... ");
663 if(!FLAC__seekable_stream_encoder_set_total_samples_estimate(encoder, streaminfo_.data.stream_info.total_samples))
664 return die_ss_("returned false", encoder);
667 printf("testing FLAC__seekable_stream_encoder_set_metadata()... ");
668 if(!FLAC__seekable_stream_encoder_set_metadata(encoder, metadata_sequence_, num_metadata_))
669 return die_ss_("returned false", encoder);
672 printf("testing FLAC__seekable_stream_encoder_set_seek_callback()... ");
673 if(!FLAC__seekable_stream_encoder_set_seek_callback(encoder, seekable_stream_encoder_seek_callback_))
674 return die_ss_("returned false", encoder);
677 printf("testing FLAC__seekable_stream_encoder_set_write_callback()... ");
678 if(!FLAC__seekable_stream_encoder_set_write_callback(encoder, seekable_stream_encoder_write_callback_))
679 return die_ss_("returned false", encoder);
682 printf("testing FLAC__seekable_stream_encoder_set_client_data()... ");
683 if(!FLAC__seekable_stream_encoder_set_client_data(encoder, 0))
684 return die_ss_("returned false", encoder);
687 printf("testing FLAC__seekable_stream_encoder_init()... ");
688 if(FLAC__seekable_stream_encoder_init(encoder) != FLAC__SEEKABLE_STREAM_ENCODER_OK)
689 return die_ss_(0, encoder);
692 printf("testing FLAC__seekable_stream_encoder_get_state()... ");
693 state = FLAC__seekable_stream_encoder_get_state(encoder);
694 printf("returned state = %u (%s)... OK\n", (unsigned)state, FLAC__SeekableStreamEncoderStateString[state]);
696 printf("testing FLAC__seekable_stream_encoder_get_stream_encoder_state()... ");
697 state_ = FLAC__seekable_stream_encoder_get_stream_encoder_state(encoder);
698 printf("returned state = %u (%s)... OK\n", (unsigned)state_, FLAC__StreamEncoderStateString[state_]);
700 printf("testing FLAC__seekable_stream_encoder_get_verify_decoder_state()... ");
701 dstate = FLAC__seekable_stream_encoder_get_verify_decoder_state(encoder);
702 printf("returned state = %u (%s)... OK\n", (unsigned)dstate, FLAC__StreamDecoderStateString[dstate]);
705 FLAC__uint64 absolute_sample;
706 unsigned frame_number;
709 FLAC__int32 expected;
712 printf("testing FLAC__seekable_stream_encoder_get_verify_decoder_error_stats()... ");
713 FLAC__seekable_stream_encoder_get_verify_decoder_error_stats(encoder, &absolute_sample, &frame_number, &channel, &sample, &expected, &got);
717 printf("testing FLAC__seekable_stream_encoder_get_verify()... ");
718 if(FLAC__seekable_stream_encoder_get_verify(encoder) != true) {
719 printf("FAILED, expected true, got false\n");
724 printf("testing FLAC__seekable_stream_encoder_get_streamable_subset()... ");
725 if(FLAC__seekable_stream_encoder_get_streamable_subset(encoder) != true) {
726 printf("FAILED, expected true, got false\n");
731 printf("testing FLAC__seekable_stream_encoder_get_do_mid_side_stereo()... ");
732 if(FLAC__seekable_stream_encoder_get_do_mid_side_stereo(encoder) != false) {
733 printf("FAILED, expected false, got true\n");
738 printf("testing FLAC__seekable_stream_encoder_get_loose_mid_side_stereo()... ");
739 if(FLAC__seekable_stream_encoder_get_loose_mid_side_stereo(encoder) != false) {
740 printf("FAILED, expected false, got true\n");
745 printf("testing FLAC__seekable_stream_encoder_get_channels()... ");
746 if(FLAC__seekable_stream_encoder_get_channels(encoder) != streaminfo_.data.stream_info.channels) {
747 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.channels, FLAC__seekable_stream_encoder_get_channels(encoder));
752 printf("testing FLAC__seekable_stream_encoder_get_bits_per_sample()... ");
753 if(FLAC__seekable_stream_encoder_get_bits_per_sample(encoder) != streaminfo_.data.stream_info.bits_per_sample) {
754 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.bits_per_sample, FLAC__seekable_stream_encoder_get_bits_per_sample(encoder));
759 printf("testing FLAC__seekable_stream_encoder_get_sample_rate()... ");
760 if(FLAC__seekable_stream_encoder_get_sample_rate(encoder) != streaminfo_.data.stream_info.sample_rate) {
761 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.sample_rate, FLAC__seekable_stream_encoder_get_sample_rate(encoder));
766 printf("testing FLAC__seekable_stream_encoder_get_blocksize()... ");
767 if(FLAC__seekable_stream_encoder_get_blocksize(encoder) != streaminfo_.data.stream_info.min_blocksize) {
768 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.min_blocksize, FLAC__seekable_stream_encoder_get_blocksize(encoder));
773 printf("testing FLAC__seekable_stream_encoder_get_max_lpc_order()... ");
774 if(FLAC__seekable_stream_encoder_get_max_lpc_order(encoder) != 0) {
775 printf("FAILED, expected %u, got %u\n", 0, FLAC__seekable_stream_encoder_get_max_lpc_order(encoder));
780 printf("testing FLAC__seekable_stream_encoder_get_qlp_coeff_precision()... ");
781 (void)FLAC__seekable_stream_encoder_get_qlp_coeff_precision(encoder);
782 /* we asked the encoder to auto select this so we accept anything */
785 printf("testing FLAC__seekable_stream_encoder_get_do_qlp_coeff_prec_search()... ");
786 if(FLAC__seekable_stream_encoder_get_do_qlp_coeff_prec_search(encoder) != false) {
787 printf("FAILED, expected false, got true\n");
792 printf("testing FLAC__seekable_stream_encoder_get_do_escape_coding()... ");
793 if(FLAC__seekable_stream_encoder_get_do_escape_coding(encoder) != false) {
794 printf("FAILED, expected false, got true\n");
799 printf("testing FLAC__seekable_stream_encoder_get_do_exhaustive_model_search()... ");
800 if(FLAC__seekable_stream_encoder_get_do_exhaustive_model_search(encoder) != false) {
801 printf("FAILED, expected false, got true\n");
806 printf("testing FLAC__seekable_stream_encoder_get_min_residual_partition_order()... ");
807 if(FLAC__seekable_stream_encoder_get_min_residual_partition_order(encoder) != 0) {
808 printf("FAILED, expected %u, got %u\n", 0, FLAC__seekable_stream_encoder_get_min_residual_partition_order(encoder));
813 printf("testing FLAC__seekable_stream_encoder_get_max_residual_partition_order()... ");
814 if(FLAC__seekable_stream_encoder_get_max_residual_partition_order(encoder) != 0) {
815 printf("FAILED, expected %u, got %u\n", 0, FLAC__seekable_stream_encoder_get_max_residual_partition_order(encoder));
820 printf("testing FLAC__seekable_stream_encoder_get_rice_parameter_search_dist()... ");
821 if(FLAC__seekable_stream_encoder_get_rice_parameter_search_dist(encoder) != 0) {
822 printf("FAILED, expected %u, got %u\n", 0, FLAC__seekable_stream_encoder_get_rice_parameter_search_dist(encoder));
827 printf("testing FLAC__seekable_stream_encoder_get_total_samples_estimate()... ");
828 if(FLAC__seekable_stream_encoder_get_total_samples_estimate(encoder) != streaminfo_.data.stream_info.total_samples) {
829 printf("FAILED, expected %llu, got %llu\n", streaminfo_.data.stream_info.total_samples, FLAC__seekable_stream_encoder_get_total_samples_estimate(encoder));
834 /* init the dummy sample buffer */
835 for(i = 0; i < sizeof(samples) / sizeof(FLAC__int32); i++)
838 printf("testing FLAC__seekable_stream_encoder_process()... ");
839 if(!FLAC__seekable_stream_encoder_process(encoder, (const FLAC__int32 * const *)samples_array, sizeof(samples) / sizeof(FLAC__int32)))
840 return die_ss_("returned false", encoder);
843 printf("testing FLAC__seekable_stream_encoder_process_interleaved()... ");
844 if(!FLAC__seekable_stream_encoder_process_interleaved(encoder, samples, sizeof(samples) / sizeof(FLAC__int32)))
845 return die_ss_("returned false", encoder);
848 printf("testing FLAC__seekable_stream_encoder_finish()... ");
849 FLAC__seekable_stream_encoder_finish(encoder);
852 printf("testing FLAC__seekable_stream_encoder_delete()... ");
853 FLAC__seekable_stream_encoder_delete(encoder);
856 printf("\nPASSED!\n");
861 static void file_encoder_progress_callback_(const FLAC__FileEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data)
863 (void)encoder, (void)bytes_written, (void)samples_written, (void)frames_written, (void)total_frames_estimate, (void)client_data;
866 static FLAC__bool test_file_encoder()
868 FLAC__FileEncoder *encoder;
869 FLAC__FileEncoderState state;
870 FLAC__SeekableStreamEncoderState state_;
871 FLAC__StreamEncoderState state__;
872 FLAC__StreamDecoderState dstate;
873 FLAC__int32 samples[1024];
874 FLAC__int32 *samples_array[1] = { samples };
877 printf("\n+++ libFLAC unit test: FLAC__FileEncoder\n\n");
879 printf("testing FLAC__file_encoder_new()... ");
880 encoder = FLAC__file_encoder_new();
882 printf("FAILED, returned NULL\n");
887 printf("testing FLAC__file_encoder_set_verify()... ");
888 if(!FLAC__file_encoder_set_verify(encoder, true))
889 return die_f_("returned false", encoder);
892 printf("testing FLAC__file_encoder_set_streamable_subset()... ");
893 if(!FLAC__file_encoder_set_streamable_subset(encoder, true))
894 return die_f_("returned false", encoder);
897 printf("testing FLAC__file_encoder_set_do_mid_side_stereo()... ");
898 if(!FLAC__file_encoder_set_do_mid_side_stereo(encoder, false))
899 return die_f_("returned false", encoder);
902 printf("testing FLAC__file_encoder_set_loose_mid_side_stereo()... ");
903 if(!FLAC__file_encoder_set_loose_mid_side_stereo(encoder, false))
904 return die_f_("returned false", encoder);
907 printf("testing FLAC__file_encoder_set_channels()... ");
908 if(!FLAC__file_encoder_set_channels(encoder, streaminfo_.data.stream_info.channels))
909 return die_f_("returned false", encoder);
912 printf("testing FLAC__file_encoder_set_bits_per_sample()... ");
913 if(!FLAC__file_encoder_set_bits_per_sample(encoder, streaminfo_.data.stream_info.bits_per_sample))
914 return die_f_("returned false", encoder);
917 printf("testing FLAC__file_encoder_set_sample_rate()... ");
918 if(!FLAC__file_encoder_set_sample_rate(encoder, streaminfo_.data.stream_info.sample_rate))
919 return die_f_("returned false", encoder);
922 printf("testing FLAC__file_encoder_set_blocksize()... ");
923 if(!FLAC__file_encoder_set_blocksize(encoder, streaminfo_.data.stream_info.min_blocksize))
924 return die_f_("returned false", encoder);
927 printf("testing FLAC__file_encoder_set_max_lpc_order()... ");
928 if(!FLAC__file_encoder_set_max_lpc_order(encoder, 0))
929 return die_f_("returned false", encoder);
932 printf("testing FLAC__file_encoder_set_qlp_coeff_precision()... ");
933 if(!FLAC__file_encoder_set_qlp_coeff_precision(encoder, 0))
934 return die_f_("returned false", encoder);
937 printf("testing FLAC__file_encoder_set_do_qlp_coeff_prec_search()... ");
938 if(!FLAC__file_encoder_set_do_qlp_coeff_prec_search(encoder, false))
939 return die_f_("returned false", encoder);
942 printf("testing FLAC__file_encoder_set_do_escape_coding()... ");
943 if(!FLAC__file_encoder_set_do_escape_coding(encoder, false))
944 return die_f_("returned false", encoder);
947 printf("testing FLAC__file_encoder_set_do_exhaustive_model_search()... ");
948 if(!FLAC__file_encoder_set_do_exhaustive_model_search(encoder, false))
949 return die_f_("returned false", encoder);
952 printf("testing FLAC__file_encoder_set_min_residual_partition_order()... ");
953 if(!FLAC__file_encoder_set_min_residual_partition_order(encoder, 0))
954 return die_f_("returned false", encoder);
957 printf("testing FLAC__file_encoder_set_max_residual_partition_order()... ");
958 if(!FLAC__file_encoder_set_max_residual_partition_order(encoder, 0))
959 return die_f_("returned false", encoder);
962 printf("testing FLAC__file_encoder_set_rice_parameter_search_dist()... ");
963 if(!FLAC__file_encoder_set_rice_parameter_search_dist(encoder, 0))
964 return die_f_("returned false", encoder);
967 printf("testing FLAC__file_encoder_set_total_samples_estimate()... ");
968 if(!FLAC__file_encoder_set_total_samples_estimate(encoder, streaminfo_.data.stream_info.total_samples))
969 return die_f_("returned false", encoder);
972 printf("testing FLAC__file_encoder_set_metadata()... ");
973 if(!FLAC__file_encoder_set_metadata(encoder, metadata_sequence_, num_metadata_))
974 return die_f_("returned false", encoder);
977 printf("testing FLAC__file_encoder_set_filename()... ");
978 if(!FLAC__file_encoder_set_filename(encoder, flacfilename_))
979 return die_f_("returned false", encoder);
982 printf("testing FLAC__file_encoder_set_progress_callback()... ");
983 if(!FLAC__file_encoder_set_progress_callback(encoder, file_encoder_progress_callback_))
984 return die_f_("returned false", encoder);
987 printf("testing FLAC__file_encoder_set_client_data()... ");
988 if(!FLAC__file_encoder_set_client_data(encoder, 0))
989 return die_f_("returned false", encoder);
992 printf("testing FLAC__file_encoder_init()... ");
993 if(FLAC__file_encoder_init(encoder) != FLAC__FILE_ENCODER_OK)
994 return die_f_(0, encoder);
997 printf("testing FLAC__file_encoder_get_state()... ");
998 state = FLAC__file_encoder_get_state(encoder);
999 printf("returned state = %u (%s)... OK\n", (unsigned)state, FLAC__FileEncoderStateString[state]);
1001 printf("testing FLAC__file_encoder_get_seekable_stream_encoder_state()... ");
1002 state_ = FLAC__file_encoder_get_seekable_stream_encoder_state(encoder);
1003 printf("returned state = %u (%s)... OK\n", (unsigned)state_, FLAC__SeekableStreamEncoderStateString[state_]);
1005 printf("testing FLAC__file_encoder_get_stream_encoder_state()... ");
1006 state__ = FLAC__file_encoder_get_stream_encoder_state(encoder);
1007 printf("returned state = %u (%s)... OK\n", (unsigned)state__, FLAC__StreamEncoderStateString[state__]);
1009 printf("testing FLAC__file_encoder_get_verify_decoder_state()... ");
1010 dstate = FLAC__file_encoder_get_verify_decoder_state(encoder);
1011 printf("returned state = %u (%s)... OK\n", (unsigned)dstate, FLAC__StreamDecoderStateString[dstate]);
1014 FLAC__uint64 absolute_sample;
1015 unsigned frame_number;
1018 FLAC__int32 expected;
1021 printf("testing FLAC__file_encoder_get_verify_decoder_error_stats()... ");
1022 FLAC__file_encoder_get_verify_decoder_error_stats(encoder, &absolute_sample, &frame_number, &channel, &sample, &expected, &got);
1026 printf("testing FLAC__file_encoder_get_verify()... ");
1027 if(FLAC__file_encoder_get_verify(encoder) != true) {
1028 printf("FAILED, expected true, got false\n");
1033 printf("testing FLAC__file_encoder_get_streamable_subset()... ");
1034 if(FLAC__file_encoder_get_streamable_subset(encoder) != true) {
1035 printf("FAILED, expected true, got false\n");
1040 printf("testing FLAC__file_encoder_get_do_mid_side_stereo()... ");
1041 if(FLAC__file_encoder_get_do_mid_side_stereo(encoder) != false) {
1042 printf("FAILED, expected false, got true\n");
1047 printf("testing FLAC__file_encoder_get_loose_mid_side_stereo()... ");
1048 if(FLAC__file_encoder_get_loose_mid_side_stereo(encoder) != false) {
1049 printf("FAILED, expected false, got true\n");
1054 printf("testing FLAC__file_encoder_get_channels()... ");
1055 if(FLAC__file_encoder_get_channels(encoder) != streaminfo_.data.stream_info.channels) {
1056 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.channels, FLAC__file_encoder_get_channels(encoder));
1061 printf("testing FLAC__file_encoder_get_bits_per_sample()... ");
1062 if(FLAC__file_encoder_get_bits_per_sample(encoder) != streaminfo_.data.stream_info.bits_per_sample) {
1063 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.bits_per_sample, FLAC__file_encoder_get_bits_per_sample(encoder));
1068 printf("testing FLAC__file_encoder_get_sample_rate()... ");
1069 if(FLAC__file_encoder_get_sample_rate(encoder) != streaminfo_.data.stream_info.sample_rate) {
1070 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.sample_rate, FLAC__file_encoder_get_sample_rate(encoder));
1075 printf("testing FLAC__file_encoder_get_blocksize()... ");
1076 if(FLAC__file_encoder_get_blocksize(encoder) != streaminfo_.data.stream_info.min_blocksize) {
1077 printf("FAILED, expected %u, got %u\n", streaminfo_.data.stream_info.min_blocksize, FLAC__file_encoder_get_blocksize(encoder));
1082 printf("testing FLAC__file_encoder_get_max_lpc_order()... ");
1083 if(FLAC__file_encoder_get_max_lpc_order(encoder) != 0) {
1084 printf("FAILED, expected %u, got %u\n", 0, FLAC__file_encoder_get_max_lpc_order(encoder));
1089 printf("testing FLAC__file_encoder_get_qlp_coeff_precision()... ");
1090 (void)FLAC__file_encoder_get_qlp_coeff_precision(encoder);
1091 /* we asked the encoder to auto select this so we accept anything */
1094 printf("testing FLAC__file_encoder_get_do_qlp_coeff_prec_search()... ");
1095 if(FLAC__file_encoder_get_do_qlp_coeff_prec_search(encoder) != false) {
1096 printf("FAILED, expected false, got true\n");
1101 printf("testing FLAC__file_encoder_get_do_escape_coding()... ");
1102 if(FLAC__file_encoder_get_do_escape_coding(encoder) != false) {
1103 printf("FAILED, expected false, got true\n");
1108 printf("testing FLAC__file_encoder_get_do_exhaustive_model_search()... ");
1109 if(FLAC__file_encoder_get_do_exhaustive_model_search(encoder) != false) {
1110 printf("FAILED, expected false, got true\n");
1115 printf("testing FLAC__file_encoder_get_min_residual_partition_order()... ");
1116 if(FLAC__file_encoder_get_min_residual_partition_order(encoder) != 0) {
1117 printf("FAILED, expected %u, got %u\n", 0, FLAC__file_encoder_get_min_residual_partition_order(encoder));
1122 printf("testing FLAC__file_encoder_get_max_residual_partition_order()... ");
1123 if(FLAC__file_encoder_get_max_residual_partition_order(encoder) != 0) {
1124 printf("FAILED, expected %u, got %u\n", 0, FLAC__file_encoder_get_max_residual_partition_order(encoder));
1129 printf("testing FLAC__file_encoder_get_rice_parameter_search_dist()... ");
1130 if(FLAC__file_encoder_get_rice_parameter_search_dist(encoder) != 0) {
1131 printf("FAILED, expected %u, got %u\n", 0, FLAC__file_encoder_get_rice_parameter_search_dist(encoder));
1136 printf("testing FLAC__file_encoder_get_total_samples_estimate()... ");
1137 if(FLAC__file_encoder_get_total_samples_estimate(encoder) != streaminfo_.data.stream_info.total_samples) {
1138 printf("FAILED, expected %llu, got %llu\n", streaminfo_.data.stream_info.total_samples, FLAC__file_encoder_get_total_samples_estimate(encoder));
1143 /* init the dummy sample buffer */
1144 for(i = 0; i < sizeof(samples) / sizeof(FLAC__int32); i++)
1147 printf("testing FLAC__file_encoder_process()... ");
1148 if(!FLAC__file_encoder_process(encoder, (const FLAC__int32 * const *)samples_array, sizeof(samples) / sizeof(FLAC__int32)))
1149 return die_f_("returned false", encoder);
1152 printf("testing FLAC__file_encoder_process_interleaved()... ");
1153 if(!FLAC__file_encoder_process_interleaved(encoder, samples, sizeof(samples) / sizeof(FLAC__int32)))
1154 return die_f_("returned false", encoder);
1157 printf("testing FLAC__file_encoder_finish()... ");
1158 FLAC__file_encoder_finish(encoder);
1161 printf("testing FLAC__file_encoder_delete()... ");
1162 FLAC__file_encoder_delete(encoder);
1165 printf("\nPASSED!\n");
1170 FLAC__bool test_encoders()
1172 init_metadata_blocks_();
1174 if(!test_stream_encoder())
1177 if(!test_seekable_stream_encoder())
1180 if(!test_file_encoder())
1183 (void) grabbag__file_remove_file(flacfilename_);
1184 free_metadata_blocks_();