acm.c

来自「好记星的控件,包括button,list,对文件操作」· C语言 代码 · 共 74 行

C
74
字号
#include "kernel.h"

UINT AcmStreamOpen(HACMSTREAM *phas, NU_DRIVER *drv, WAVEFORMATEX *pwfxSrc, WAVEFORMATEX *pwfxDst, DWORD fdwOpen)
{
	NU_DRIVER_REQUEST request;
	ACMDS_OPEN open;

    NU_DRIVER  *pNdTemp[50];
    UINT32      dwDrivers, i;

	if(drv != NULL)
	{
		*phas = (VOID *)drv;

		open.pwfxSrc = pwfxSrc;
		open.pwfxDst = pwfxDst;
		open.fdwOpen = fdwOpen;
		request.nu_function = NU_ASSIGN;
		request.nu_supplemental_ptr = (VOID *)&open;
		NU_Request_Driver(drv, &request);
	
		return request.nu_status;
	}
	else
	{
		dwDrivers = NU_Driver_Pointers(pNdTemp,50);
		for( i = 0; i < dwDrivers; i++ )
		{
			if( strncmp("ACM", pNdTemp[i]->nu_driver_name, strlen("ACM")) == 0 )
			{
				*phas = (VOID *)pNdTemp[i];

				open.pwfxSrc = pwfxSrc;
				open.pwfxDst = pwfxDst;
				open.fdwOpen = fdwOpen;
				request.nu_function = NU_ASSIGN;
				request.nu_supplemental_ptr = (VOID *)&open;
				NU_Request_Driver(pNdTemp[i], &request);
	
				if(request.nu_status == NU_SUCCESS)
					return MMSYSERR_NOERROR;
			}
		}
		return MMSYSERR_NODRIVER;
 	}
}


UINT AcmStreamSize(HACMSTREAM has, DWORD cbInput, DWORD *pdwOutputBytes, DWORD fdwSize)
{
	NU_DRIVER_REQUEST request;

	request.nu_function = NU_INPUT;
	request.nu_request_info.nu_input.nu_request_size = cbInput;
	request.nu_supplemental = fdwSize;
	NU_Request_Driver((NU_DRIVER *)has, &request);

	*pdwOutputBytes = request.nu_request_info.nu_input.nu_actual_size;

	return request.nu_status;
}

UINT AcmStreamConvert(HACMSTREAM has, ACMSTREAMHEADER *pash, DWORD fdwConvert)
{
	NU_DRIVER_REQUEST request;

	request.nu_function = NU_OUTPUT;
	request.nu_supplemental_ptr = (VOID *)pash;
	request.nu_supplemental = fdwConvert;
	NU_Request_Driver((NU_DRIVER *)has, &request);

	return request.nu_status;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?