Пример #1
0
triBool triAt3Init()
{	
	int modID = sceUtilityLoadAvModule(PSP_AV_MODULE_AVCODEC);
	
	if(modID < 0)
	{
		triLogError("triAt3: Init unsuccessful\r\n");
		return(0);
	}
		
	triLogPrint("triAt3: Init successful\r\n");
	
	return(1);
}
Пример #2
0
//Load and start needed modules:
int initMEAudioModules(){
   if (!HW_ModulesInit){
        if (sceKernelDevkitVersion() == 0x01050001)
        {
            LoadStartAudioModules("flash0:/kd/me_for_vsh.prx", PSP_MEMORY_PARTITION_KERNEL);
            LoadStartAudioModules("flash0:/kd/audiocodec.prx", PSP_MEMORY_PARTITION_KERNEL);
        }
        else
        {
            sceUtilityLoadAvModule(PSP_AV_MODULE_AVCODEC);
        }
       HW_ModulesInit = 1;
   }
   return 0;
}
Пример #3
0
bool Mp3PspStream::initDecoder() {
	DEBUG_ENTER_FUNC();

	if (_decoderInit) {
		PSP_ERROR("Already initialized!");
		return true;
	}

	// Based on PSP firmware version, we need to do different things to do Media Engine processing
	uint32 firmware = sceKernelDevkitVersion();
	PSP_DEBUG_PRINT("Firmware version 0x%x\n", firmware);
    if (firmware == 0x01050001){
		if (!loadStartAudioModule((char *)(void *)"flash0:/kd/me_for_vsh.prx",
			PSP_MEMORY_PARTITION_KERNEL)) {
			PSP_ERROR("failed to load me_for_vsh.prx. ME cannot start.\n");
			_decoderFail = true;
			return false;
		}
        if (!loadStartAudioModule((char *)(void *)"flash0:/kd/audiocodec.prx", PSP_MEMORY_PARTITION_KERNEL)) {
			PSP_ERROR("failed to load audiocodec.prx. ME cannot start.\n");
			_decoderFail = true;
			return false;
		}
    } else {
        if (sceUtilityLoadAvModule(PSP_AV_MODULE_AVCODEC) < 0) {
			PSP_ERROR("failed to load AVCODEC module. ME cannot start.\n");
			_decoderFail = true;
			return false;
		}
	}

	PSP_DEBUG_PRINT("Using PSP's ME for MP3\n");	// important to know this is happening

	_decoderInit = true;
	return true;
}
Пример #4
0
void load_utils()
{
	int ret;
	int module;
	unsigned i;

	if (isImported(sceUtilityLoadModule)) {
		// Load modules in order
		if (!globals->isEmu || sceNetIsImported)
			for(i = 0; i < sizeof(netModules) / sizeof(int); i++) {
				ret = sceUtilityLoadModule(netModules[i]);
				if (ret < 0)
					dbg_printf("%s: Loading 0x%08X failed 0x%08X\n",
						__func__, netModules[i], ret);
			}

		for(i = 0; i < sizeof(modules) / sizeof(int); i++) {
			ret = sceUtilityLoadModule(modules[i]);
			if (ret < 0)
				dbg_printf("%s: Loading 0x%08X failed 0x%08X\n",
					__func__, modules[i], ret);
		}

		ret = sceUtilityLoadModule(PSP_MODULE_AV_MP3);
		if (ret < 0)
			dbg_printf("%s: Loading 0x%08X failed 0x%08X\n",
				__func__, PSP_MODULE_AV_MP3, ret);
	} else {
		if (isImported(sceUtilityLoadNetModule))
			for (module = 1; module <= 7; module++) {
				ret = sceUtilityLoadNetModule(module);
				if (ret < 0)
					dbg_printf("%s: Loading net module %d failed 0x%08X\n",
						__func__, module, ret);
			}

		if (isImported(sceUtilityLoadUsbModule))
			for (module = 1; module <= 5; module++) {
				ret = sceUtilityLoadUsbModule(module);
				if (ret < 0)
					dbg_printf("%s: Loading USB module %d failed 0x%08X\n",
						__func__, module, ret);
			}

		if (isImported(sceUtilityLoadAvModule))
			for (module = 1; module <= 7; module++) {
				ret = sceUtilityLoadAvModule(module);
				dbg_printf("%s: Loading AV module %d failed 0x%08X\n",
					__func__, module, ret);
			}
		else {
#ifdef UTILITY_AV_AVCODEC_PATH
			avcodec_modid = sceKernelLoadModule(UTILITY_AV_AVCODEC_PATH, 0, NULL);
			sceKernelStartModule(avcodec_modid, 0, NULL, NULL, NULL);
#endif
#ifdef UTILITY_AV_SASCORE_PATH
			sascore_modid = sceKernelLoadModule(UTILITY_AV_SASCORE_PATH, 0, NULL);
			sceKernelStartModule(sascore_modid, 0, NULL, NULL, NULL);
#endif
#ifdef UTILITY_AV_ATRAC3PLUS_PATH
			atrac3plus_modid = sceKernelLoadModule(UTILITY_AV_ATRAC3PLUS_PATH, 0, NULL);
			sceKernelStartModule(atrac3plus_modid, 0, NULL, NULL, NULL);
#endif
#ifdef UTILITY_AV_MPEGBASE_PATH
			mpegbase_modid = sceKernelLoadModule(UTILITY_AV_MPEGBASE_PATH, 0, NULL);
			sceKernelStartModule(mpegbase_modid, 0, NULL, NULL, NULL);
#endif
		}
	}
}
Пример #5
0
// Loads and registers exports from an utility module
SceLibraryEntryTable *load_export_util(UtilModInfo *util_mod, const char *lib)
{
	SceLibraryEntryTable *exports;
	int *p;
	int ret, nid;

	if (util_mod == NULL || lib == NULL)
		return NULL;

	dbg_printf("Loading utility module for library %s\n", lib);

		//force load PSP_MODULE_AV_AVCODEC if we request a specific audio module
	if (util_mod->id > PSP_MODULE_AV_AVCODEC && util_mod->id <= PSP_MODULE_AV_G729) {
		dbg_printf("Force-Loading AVCODEC\n");
		if (isImported(sceUtilityLoadModule))
			sceUtilityLoadModule(PSP_MODULE_AV_AVCODEC);
		else if (isImported(sceUtilityLoadAvModule))
			sceUtilityLoadAvModule(PSP_AV_MODULE_AVCODEC);
	} else if(util_mod->id == PSP_MODULE_NET_HTTP) {
		dbg_printf("Force-Loading HTTP\n");
		if (isImported(sceUtilityLoadModule)) {
			sceUtilityLoadModule(PSP_MODULE_NET_COMMON);
			sceUtilityLoadModule(PSP_MODULE_NET_INET);
			sceUtilityLoadModule(PSP_MODULE_NET_PARSEURI);
			sceUtilityLoadModule(PSP_MODULE_NET_PARSEHTTP);
		} else if (isImported(sceUtilityLoadNetModule)) {
			sceUtilityLoadNetModule(PSP_NET_MODULE_COMMON);
			sceUtilityLoadNetModule(PSP_NET_MODULE_INET);
			sceUtilityLoadNetModule(PSP_NET_MODULE_PARSEURI);
			sceUtilityLoadNetModule(PSP_NET_MODULE_PARSEHTTP);
		}
	}

	ret = load_util(util_mod->id);
	if (ret < 0 && ret != 0x80111102)
		return NULL;

#ifndef DISABLE_UNLOAD_UTILITY_MODULES
#ifdef UTILITY_UNLOAD_MODULE_FILE
	if (!ret)
		ret = util_mod->id;
#endif
	// PSP_MODULE_AV_AVCODEC -> cast syscall of sceAudiocodec and sceVideocodec
	// PSP_MODULE_AV_MP3 -> On 6.20 OFW, libmp3 has a bug when unload it.
	if ((util_mod->id != PSP_MODULE_AV_AVCODEC || globals->isEmu)
		&& (util_mod->id != PSP_MODULE_AV_MP3
			|| globals->module_sdk_version > 0x06020010)) {
#ifdef UTILITY_UNLOAD_MODULE_FILE
		add_util_table(ret);
#else
		add_util_table(util_mod->id);
#endif
	}
#endif

	// Get module exports
	exports = find_exports(util_mod->name, lib);
	if (exports == NULL) {
		dbg_printf("->ERROR: could not find module exports for %s\n", util_mod->name);
#ifndef DISABLE_UNLOAD_UTILITY_MODULES
#ifdef UTILITY_UNLOAD_MODULE_FILE
		unload_util(ret);
		rm_util_table(ret);
#else
		unload_util(util_mod->id);
		rm_util_table(ret);
#endif
#endif
		return NULL;
	}

	dbg_printf("Number of export functions: %d\n", exports->stubcount);
	dbg_printf("Pointer to exports: 0x%08X\n", (int)exports->entrytable);

	switch (util_mod->id) {
		case PSP_MODULE_NET_INET:
			if (util_mod == &net_apctl)
				nid = 0xB3EDD0EC; // sceNetApctlTerm
			else if (util_mod == &net_resolver)
				nid = 0x6138194A; // sceNetResolverTerm
			else if (util_mod == &net_inet)
				nid = 0xA9ED66B9; // sceNetInetTerm
			else
				return exports;
			break;
		case PSP_MODULE_NET_COMMON:
			nid = 0x281928A9; // sceNetTerm
			break;
		default:
			return exports;
	}

	for (p = (int *)exports->entrytable;
		(int)p < (int)exports->entrytable + exports->stubcount;
		p++)
		if (*p == nid) {
			net_term_func[net_term_num] = (void *)p[exports->stubcount];
			net_term_num++;
			break;
		}

	return exports;
}