int SoundDecoder_Init() { size_t total_number_of_decoders; size_t i; size_t current_pos = 0; if(1 == s_isInitialized) { return 1; } if(NULL == s_errorPool) { s_errorPool = TError_CreateErrorPool(); } if(NULL == s_errorPool) { return 0; } s_errorPool = TError_CreateErrorPool(); total_number_of_decoders = sizeof(s_linkedDecoders) / sizeof(s_linkedDecoders[0]); s_availableDecoders = (const SoundDecoder_DecoderInfo **)malloc((total_number_of_decoders) * sizeof(SoundDecoder_DecoderInfo*)); if(NULL == s_availableDecoders) { SoundDecoder_SetError(ERR_OUT_OF_MEMORY); return 0; } for(i = 0; s_linkedDecoders[i].funcs != NULL; i++) { s_linkedDecoders[i].available = s_linkedDecoders[i].funcs->init(); if(s_linkedDecoders[i].available) { s_availableDecoders[current_pos] = &(s_linkedDecoders[i].funcs->info); current_pos++; } } s_availableDecoders[current_pos] = NULL; s_isInitialized = 1; return 1; }
int SoundDecoder_Init() { size_t total_number_of_decoders; size_t i; size_t current_pos = 0; if(1 == s_isInitialized) { return 1; } if(NULL == s_errorPool) { s_errorPool = TError_CreateErrorPool(); } if(NULL == s_errorPool) { return 0; } total_number_of_decoders = sizeof(s_linkedDecoders) / sizeof(s_linkedDecoders[0]); s_availableDecoders = (const SoundDecoder_DecoderInfo **)malloc((total_number_of_decoders) * sizeof(SoundDecoder_DecoderInfo*)); if(NULL == s_availableDecoders) { SoundDecoder_SetError(ERR_OUT_OF_MEMORY); return 0; } /* Allocate memory for linked list of sound samples. */ s_listOfLoadedSamples = LinkedList_Create(); if(NULL == s_listOfLoadedSamples) { free(s_availableDecoders); s_availableDecoders = NULL; SoundDecoder_SetError(ERR_OUT_OF_MEMORY); return 0; } for(i = 0; s_linkedDecoders[i].funcs != NULL; i++) { s_linkedDecoders[i].available = s_linkedDecoders[i].funcs->init(); if(s_linkedDecoders[i].available) { s_availableDecoders[current_pos] = &(s_linkedDecoders[i].funcs->info); current_pos++; } } s_availableDecoders[current_pos] = NULL; s_isInitialized = 1; return 1; }