使用音频引擎MITA编写自己的dsp插件的源代码
来源:互联网 发布:vb里combo怎么设置 编辑:程序博客网 时间:2024/04/27 17:51
#include "../../include/mita.h"/**< @brief MITA SDK Header */
#ifdef _DEBUG
#pragma comment(lib, "../../library/mitaD.lib")
#else
#pragma comment(lib, "../../library/mita.lib")
#endif
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define _IID_ExampleMITA_UUID_Make(AAAABBBB,5059,11E0,8000,0B15,00000A15)
typedef struct MITA_TAG_MODULEHEADER
{
MITA_IDSPbase;
//////////////////////////////////////////////////////////////////////////
//TODO: 添加额外的模块数据
}MITA_MODULEHEADER;
#pragma warning(push)
#pragma warning(disable:4996)
MITA_STATIC
MITA_INLINE
MITA_VOID
MITA_CheckError(MITA_VOID)
{
MITA_ERROR lastError = MITA_GetLastError();
if (lastError != MITA_ERROR_OK)
{
printf("ERROR: MITA Framework error with %u codes\n", lastError);
exit(lastError);
}
}
MITA_STATIC
MITA_INLINE
MITA_BYTE
MITA_EnterKey(MITA_VOID)
{
MITA_INT32 key = 0xFF;
do
{
if (kbhit())
{
key = getch();
break;
}
} while (1);
if (key >= 'a' && key <= 'z')
key -= 32;
return key;
}
//////////////////////////////////////////////////////////////////////////
MITA_STATIC
MITA_BOOL
MITA_CALLBACK
Example_Process(MITA_MODULEHEADER *pThis, MITA_HFRAMEBUFFER Buffer, MITA_LPDSPCONTEXT Context)
{
//////////////////////////////////////////////////////////////////////////
//TODO: 添加你的处理代码
return MITA_TRUE;
}
MITA_STATIC
MITA_BOOL
MITA_CALLBACK
Example_SetParam(MITA_MODULEHEADER *pThis, MITA_UINT32 nParamID, MITA_LPCVOID lpParam)
{
//////////////////////////////////////////////////////////////////////////
//TODO: 添加参数设置
return MITA_FALSE;
}
MITA_STATIC
MITA_BOOL
MITA_CALLBACK
Example_GetParam(MITA_MODULEHEADER *pThis, MITA_UINT32 nParamID, MITA_LPVOID lpParam)
{
//////////////////////////////////////////////////////////////////////////
//TODO: 添加参数获取
return MITA_FALSE;
}
MITA_STATIC
MITA_VOID
MITA_CALLBACK
Example_Release(MITA_MODULEHEADER *pThis)
{
//////////////////////////////////////////////////////////////////////////
//TODO: 释放资源
if (pThis)
MITA_Free(pThis);
}
MITA_STATIC
MITA_BOOL
MITA_CALLBACK
Example_Reset(MITA_MODULEHEADER *pThis)
{
//////////////////////////////////////////////////////////////////////////
//TODO: 重置DSP状态,数据信息等。
return MITA_TRUE;
}
MITA_STATIC
MITA_LPCMODULEINFO
MITA_CALLBACK
Example_GetModuleInfo(MITA_IModule* pThis)
{
return pThis->PlusObject->getModuleInfo(pThis->PlusObject);
}
MITA_STATIC
MITA_BOOL
MITA_CALLBACK
Example_HasWindow(MITA_IModule* pThis, MITA_DWORD dwType)
{
return pThis->PlusObject->hasWindow(pThis->PlusObject, dwType);
}
MITA_STATIC
MITA_BOOL
MITA_CALLBACK
Example_ShowWindow(MITA_IModule* pThis, MITA_DWORD dwType, MITA_HANDLE hParent, MITA_BOOL bShow)
{
return pThis->PlusObject->showWindow(pThis->PlusObject, dwType, hParent, bShow);
}
MITA_STATIC
MITA_IModule*
MITA_CALLBACK
Example_CreateObject(MITA_IStaticPlus *pThis, MITA_HINSTANCE hInstance)
{
MITA_MODULEHEADER *pExample = (MITA_MODULEHEADER *)MITA_Malloc(sizeof(MITA_MODULEHEADER));
if (pExample == MITA_NULL)
return MITA_NULL;
pExample->base.base.PlusObject= &pThis->base;
pExample->base.base._instance= hInstance;
pExample->base.base._resverd= MITA_MODULE_RESVERD_DSP;
pExample->base.base.release= Example_Release;
pExample->base.base.getModuleInfo= Example_GetModuleInfo;
pExample->base.base.hasWindow= Example_HasWindow;
pExample->base.base.showWindow= Example_ShowWindow;
pExample->base.setParam= Example_SetParam;
pExample->base.getParam= Example_GetParam;
pExample->base.process= Example_Process;
pExample->base.reset= Example_Reset;
//////////////////////////////////////////////////////////////////////////
//TODO: 添加额外的初始化操作。
return (MITA_IModule*)pExample;
}
MITA_STATIC
MITA_LPCMODULEINFO
MITA_CALLBACK
Plus_GetModuleInfo(MITA_IStaticPlus *pThis)
{
return &pThis->moduleInfo;
}
MITA_STATIC
MITA_BOOL
MITA_CALLBACK
Plus_HasWindow(MITA_IStaticPlus *pThis, MITA_DWORD dwType)
{
return MITA_FALSE;
}
MITA_STATIC
MITA_BOOL
MITA_CALLBACK
Plus_ShowWindow(MITA_IStaticPlus *pThis, MITA_DWORD dwType, MITA_HANDLE hParent, MITA_BOOL bShow)
{
return MITA_FALSE;
}
MITA_STATIC
MITA_IStaticPlus
gExamplePlugin =
{
Plus_GetModuleInfo,
Plus_HasWindow,
Plus_ShowWindow,
Example_CreateObject,
{
MITA_MT_DSP,
_IID_Example,
1,
L"MITA Plugin Example",
L"MITA Plugin Example Module",
L"Copyright(C) Hangzhou Migan Technology 2008-2011. All rights reserved.",
MITA_NULL
}
};
MITA_STATIC
MITA_HPLUSOBJECT
MITA_CALL
Example_ModuleMain(void)
{
return (MITA_HPLUSOBJECT)&gExamplePlugin;
}
//////////////////////////////////////////////////////////////////////////
//如果你想要导出dll的话,那么还需要添加一个接口函数
// MITA_GetPlusMains, nIndex 为模块的序号
_declspec(dllexport)
MITA_MODULEMAIN
MITA_CALL
MITA_GetPlusMains(MITA_SIZE nIndex)
{
switch (nIndex)
{
case 0:
return Example_ModuleMain;
}
return MITA_NULL;
}
void main(void)
{
MITA_HINSTANCE hInstance;
MITA_HPLUGIN hExamplePlugin;
MITA_HMODULE hExampleModule;
MITA_HOBJECT hExampleObject;
MITA_UUID RegGuid;
MITA_MODULEINFO moduleInfo;
MITA_BYTE Key;
printf(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n");
printf(";;Copyright(C) 杭州蜜柑科技有限公司 2008 - 2011. 保留所有权利。;;\n");
printf(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n");
printf(";;Plugin Example ;;\n");
printf(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n");
//////////////////////////////////////////////////////////////////////////
//1. Create a global instance handle.
hInstance = MITA_Initialize(MITA_NULL);
MITA_CheckError();
printf("Press A use static module loader.\n");
printf("Press B use export module loader.\n");
Key = MITA_EnterKey() - 'A';
if (Key == 0)
{
//////////////////////////////////////////////////////////////////////////
//2. Register Module
MITA_Ins_RegisterModule(hInstance, Example_ModuleMain, &RegGuid, &hExampleModule);
MITA_CheckError();
}
else
{
//////////////////////////////////////////////////////////////////////////
//2. Load Plugin, just this exe file.
MITA_Ins_LoadPlugin(hInstance, L"make_your_dsp.exe", &hExamplePlugin);
MITA_CheckError();
MITA_Ins_GetModuleByIndex(hInstance, 0, &hExampleModule);
MITA_CheckError();
}
//////////////////////////////////////////////////////////////////////////
//3. Create Module Object
MITA_Module_CreateModuleObject(hExampleModule, &hExampleObject);
MITA_CheckError();
//////////////////////////////////////////////////////////////////////////
MITA_Object_GetModuleInfo(hExampleObject, &moduleInfo);
MITA_CheckError();
printf("\n");
printf("Name: %s\n", MITA_Text_ToSystemS(moduleInfo.name, MITA_TCT_DEFAULT));
printf("Vers: %08X\n", moduleInfo.version);
printf("Desc: %s\n", MITA_Text_ToSystemS(moduleInfo.describe, MITA_TCT_DEFAULT));
printf("Copy: %s\n", MITA_Text_ToSystemS(moduleInfo.copyright, MITA_TCT_DEFAULT));
printf("\n");
/*
use MITA_DSP_XXXX operations.
*/
//////////////////////////////////////////////////////////////////////////
//4. Delete Module Object
MITA_CloseHandle(hExampleObject);
MITA_CheckError();
if (Key == 0)
{
//////////////////////////////////////////////////////////////////////////
//5*. Unregister Module,这一步不是必须的,在释放“实例句柄”的时候,会自动
// 进行移除操作。
MITA_Ins_UnregisterModule(hInstance, &RegGuid);
MITA_CheckError();
}
else
{
MITA_Ins_UnregisterPluginModule(hInstance, hExamplePlugin, MITA_NULL);
MITA_CheckError();
}
//////////////////////////////////////////////////////////////////////////
//6. Delete global instance handle.
MITA_CloseHandle(hInstance);
}
#pragma warning(pop)
- 使用音频引擎MITA编写自己的dsp插件的源代码
- 使用音频引擎MITA编写自己的音频设备的源代码
- 使用音频引擎MITA添加dsp Vibro的源代码
- 使用音频引擎MITA制作自己的解码器的源代码
- 使用音频引擎MITA创建自己的编码器的源代码
- 使用音频引擎MITA给音频文件添加dsp音效源代码
- 使用音频引擎MITA播放缓冲的音频文件的源代码
- 使用音频引擎MITA添加各种音效的源代码
- 使用音频引擎MITA实现卡拉ok的源代码
- 使用音频引擎MITA实现多音源输入的源代码
- 使用音频引擎MITA实现多输出源的源代码
- 使用音频引擎MITA成组处理音频文件的源代码
- 使用音频引擎MITA二进制静态播放音频文件的源代码
- 使用音频引擎MITA播放流文件的源代码
- 使用音频引擎MITA处理音频文件tag的源代码
- 使用音频引擎MITA处理播放器列表的源代码
- 使用音频引擎MITA播放声音源代码
- 使用音频引擎MITA播放某一路径下音乐文件的源代码
- 黑马程序员 (3)JAVA API(2)
- FileIO1
- socket编程 协议集
- 使用音频引擎MITA编写自己的音频设备的源代码
- 嵌入式调试printf重定向到文件
- 使用音频引擎MITA编写自己的dsp插件的源代码
- 职场拒绝“男人婆”
- sqlserver触发器复习
- 使用音频引擎MITA创建自己的编码器的源代码
- Java 6 JVM参数选项大全(中文版)
- VPython - 目录
- 类的sizeof计算
- WINCE6.0+S3C6410睡眠和唤醒的实现
- Linux PDF editor for manipulating PDF documents