static int open_output(void) { int include_enc, exclude_enc; #ifdef AU_FLAC_DLL if (g_load_libFLAC_dll("libFLAC.dll")) { return -1; } #endif #ifdef AU_OGGFLAC_DLL if (g_load_libOggFLAC_dll("libOggFLAC.dll")) { #ifdef AU_FLAC_DLL g_free_libFLAC_dll (); #endif return -1; } #endif include_enc = exclude_enc = 0; /* only 16 bit is supported */ include_enc |= PE_16BIT | PE_SIGNED; exclude_enc |= PE_BYTESWAP | PE_24BIT; dpm.encoding = validate_encoding(dpm.encoding, include_enc, exclude_enc); #ifdef AU_OGGFLAC if (flac_options.isogg) { ctl->cmsg(CMSG_WARNING, VERB_NORMAL, "*** cannot write back seekpoints when encoding to Ogg yet ***"); ctl->cmsg(CMSG_WARNING, VERB_NORMAL, "*** and stream end will not be written. ***"); } #endif #ifndef __W32G__ if(dpm.name == NULL) { dpm.flag |= PF_AUTO_SPLIT_FILE; } else { dpm.flag &= ~PF_AUTO_SPLIT_FILE; if(flac_output_open(dpm.name, NULL) == -1) return -1; } #else if(w32g_auto_output_mode > 0) { dpm.flag |= PF_AUTO_SPLIT_FILE; dpm.name = NULL; } else { dpm.flag &= ~PF_AUTO_SPLIT_FILE; if (flac_output_open(dpm.name, NULL) == -1) return -1; } #endif return 0; }
static int auto_flac_output_open(const char *input_filename, const char *title) { char *output_filename; if (flac_options.isogg) { #ifndef __W32G__ output_filename = create_auto_output_name(input_filename, "ogg", NULL, 0); #else output_filename = create_auto_output_name(input_filename, "ogg", w32g_output_dir, w32g_auto_output_mode); #endif } else { #ifndef __W32G__ output_filename = create_auto_output_name(input_filename, "flac", NULL, 0); #else output_filename = create_auto_output_name(input_filename, "flac", w32g_output_dir, w32g_auto_output_mode); #endif } if (output_filename == NULL) { ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "unknown output file name"); return -1; } if ((flac_output_open(output_filename, input_filename)) == -1) { ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "files open failed %s->%s", output_filename, input_filename); free(output_filename); return -1; } if (dpm.name != NULL) free(dpm.name); dpm.name = output_filename; ctl->cmsg(CMSG_INFO, VERB_NORMAL, "Output %s", dpm.name); return 0; }