FLAC_API void FLAC__file_encoder_finish(FLAC__FileEncoder *encoder) { FLAC__ASSERT(0 != encoder); if(encoder->protected_->state == FLAC__FILE_ENCODER_UNINITIALIZED) return; FLAC__ASSERT(0 != encoder->private_->seekable_stream_encoder); /* FLAC__seekable_stream_encoder_finish() might write data so we must close the file after it. */ FLAC__seekable_stream_encoder_finish(encoder->private_->seekable_stream_encoder); if(0 != encoder->private_->file) { fclose(encoder->private_->file); encoder->private_->file = 0; } if(0 != encoder->private_->filename) { free(encoder->private_->filename); encoder->private_->filename = 0; } set_defaults_(encoder); encoder->protected_->state = FLAC__FILE_ENCODER_UNINITIALIZED; }
static void flac_session_close() { FLAC_ctx *ctx = flac_ctx; if (dpm.fd > 0) { close(dpm.fd); } dpm.fd = -1; if (ctx != NULL) { #ifdef LEGACY_FLAC #ifdef AU_OGGFLAC if (flac_options.isogg) { if (ctx->encoder.ogg.stream) { OggFLAC__stream_encoder_finish(ctx->encoder.ogg.stream); OggFLAC__stream_encoder_delete(ctx->encoder.ogg.stream); } } else #endif /* AU_OGGFLAC */ if (flac_options.seekable) { if (ctx->encoder.flac.s_stream) { FLAC__seekable_stream_encoder_finish(ctx->encoder.flac.s_stream); FLAC__seekable_stream_encoder_delete(ctx->encoder.flac.s_stream); } } else { if (ctx->encoder.flac.stream) { FLAC__stream_encoder_finish(ctx->encoder.flac.stream); FLAC__stream_encoder_delete(ctx->encoder.flac.stream); } } #else if (ctx->encoder.flac.stream) { FLAC__stream_encoder_finish(ctx->encoder.flac.stream); FLAC__stream_encoder_delete(ctx->encoder.flac.stream); } #endif free(ctx); flac_ctx = NULL; } }