⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winmm.c.bak

📁 This is a futaba PCM decode source. You can study futaba pcm code.
💻 BAK
📖 第 1 页 / 共 5 页
字号:
//---------------------------------------------------------------------------
#define _INC_MMSYSTEM

#include <windows.h>
#include <mmsystem.h>
#include <math.h>

#include "jr.h"
#include "futaba.h"

#define PW_FUTABA 6.623
#define PW_JR     7.340
#define PPM_MIN    30.0
#define PPM_MAX   100.0
#define PPM_TRIG    200

//#define FUTABA_PCM
//#define FUTABA_PPM
#define JR_PCM
//#define JR_PPM

#pragma argsused

#define MAXPNAMELEN      32     /* max product name length (including NULL) */
#define MAXERRORLENGTH   256    /* max error text length (including NULL) */
#define MAX_JOYSTICKOEMVXDNAME 260 /* max oem vxd name length (including NULL) */
#define JOYCAPS_HASV		0x0008
#define JOYERR_NOERROR        (0)                  /* no error */
#define JOYERR_BASE            160
#define JOYERR_UNPLUGGED      (JOYERR_BASE+7)      /* joystick is unplugged */
#define WAVERR_BASE            32
#define WAVERR_STILLPLAYING   (WAVERR_BASE + 1)    /* still something playing */
#define WIM_DATA              0x3C0
#define WAVE_FORMAT_PCM     1
#define WAVE_MAPPER     ((UINT)-1)
#define CALLBACK_FUNCTION   0x00030000l    /* dwCallback is a FARPROC */
DECLARE_HANDLE(HWAVEIN);

typedef struct {
    WORD        wFormatTag;         /* format type */
    WORD        nChannels;          /* number of channels (i.e. mono, stereo...) */
    DWORD       nSamplesPerSec;     /* sample rate */
    DWORD       nAvgBytesPerSec;    /* for buffer estimation */
    WORD        nBlockAlign;        /* block size of data */
    WORD        wBitsPerSample;     /* number of bits per sample of mono data */
    WORD        cbSize;             /* the count in bytes of the size of */
				    /* extra information (after cbSize) */
} WAVEFORMATEX;

typedef struct wavehdr_tag {
    LPSTR       lpData;                 /* pointer to locked data buffer */
    DWORD       dwBufferLength;         /* length of data buffer */
    DWORD       dwBytesRecorded;        /* used for input only */
    DWORD       dwUser;                 /* for client's use */
    DWORD       dwFlags;                /* assorted flags (see defines) */
    DWORD       dwLoops;                /* loop control counter */
    struct wavehdr_tag FAR *lpNext;     /* reserved for driver */
    DWORD       reserved;               /* reserved for driver */
} WAVEHDR;

static struct {
    char Path[MAX_PATH];
    HANDLE Handle;
    DWORD TlsIndex;
    void (*CloseDriver)(void);
    void (*DefDriverProc)(void);
    void (*DriverCallback)(void);
    void (*DrvGetModuleHandle)(void);
    void (*GetDriverModuleHandle)(void);
    void (*MigrateAllDrivers)(void);
    void (*MigrateMidiUser)(void);
    void (*MigrateSoundEvents)(void);
    void (*NotifyCallbackData)(void);
    void (*OpenDriver)(void);
    void (*PlaySound)(void);
    void (*PlaySoundA)(void);
    void (*PlaySoundW)(void);
    void (*SendDriverMessage)(void);
    void (*WOW32DriverCallback)(void);
    void (*WOW32ResolveMultiMediaHandle)(void);
    void (*WOWAppExit)(void);
    void (*WinmmLogoff)(void);
    void (*WinmmLogon)(void);
    void (*aux32Message)(void);
    void (*auxGetDevCapsA)(void);
    void (*auxGetDevCapsW)(void);
    void (*auxGetNumDevs)(void);
    void (*auxGetVolume)(void);
    void (*auxOutMessage)(void);
    void (*auxSetVolume)(void);
    void (*joy32Message)(void);
    void (*joyConfigChanged)(void);
    void (*joyGetDevCapsA)(void);
    void (*joyGetDevCapsW)(void);
    void (*joyGetNumDevs)(void);
    void (*joyGetPos)(void);
    void (*joyGetPosEx)(void);
    void (*joyGetThreshold)(void);
    void (*joyReleaseCapture)(void);
    void (*joySetCapture)(void);
    void (*joySetThreshold)(void);
    void (*mci32Message)(void);
    void (*mciDriverNotify)(void);
    void (*mciDriverYield)(void);
    void (*mciExecute)(void);
    void (*mciFreeCommandResource)(void);
    void (*mciGetCreatorTask)(void);
    void (*mciGetDeviceIDA)(void);
    void (*mciGetDeviceIDFromElementIDA)(void);
    void (*mciGetDeviceIDFromElementIDW)(void);
    void (*mciGetDeviceIDW)(void);
    void (*mciGetDriverData)(void);
    void (*mciGetErrorStringA)(void);
    void (*mciGetErrorStringW)(void);
    void (*mciGetYieldProc)(void);
    void (*mciLoadCommandResource)(void);
    void (*mciSendCommandA)(void);
    void (*mciSendCommandW)(void);
    void (*mciSendStringA)(void);
    void (*mciSendStringW)(void);
    void (*mciSetDriverData)(void);
    void (*mciSetYieldProc)(void);
    void (*mid32Message)(void);
    void (*midiConnect)(void);
    void (*midiDisconnect)(void);
    void (*midiInAddBuffer)(void);
    void (*midiInClose)(void);
    void (*midiInGetDevCapsA)(void);
    void (*midiInGetDevCapsW)(void);
    void (*midiInGetErrorTextA)(void);
    void (*midiInGetErrorTextW)(void);
    void (*midiInGetID)(void);
    void (*midiInGetNumDevs)(void);
    void (*midiInMessage)(void);
    void (*midiInOpen)(void);
    void (*midiInPrepareHeader)(void);
    void (*midiInReset)(void);
    void (*midiInStart)(void);
    void (*midiInStop)(void);
    void (*midiInUnprepareHeader)(void);
    void (*midiOutCacheDrumPatches)(void);
    void (*midiOutCachePatches)(void);
    void (*midiOutClose)(void);
    void (*midiOutGetDevCapsA)(void);
    void (*midiOutGetDevCapsW)(void);
    void (*midiOutGetErrorTextA)(void);
    void (*midiOutGetErrorTextW)(void);
    void (*midiOutGetID)(void);
    void (*midiOutGetNumDevs)(void);
    void (*midiOutGetVolume)(void);
    void (*midiOutLongMsg)(void);
    void (*midiOutMessage)(void);
    void (*midiOutOpen)(void);
    void (*midiOutPrepareHeader)(void);
    void (*midiOutReset)(void);
    void (*midiOutSetVolume)(void);
    void (*midiOutShortMsg)(void);
    void (*midiOutUnprepareHeader)(void);
    void (*midiStreamClose)(void);
    void (*midiStreamOpen)(void);
    void (*midiStreamOut)(void);
    void (*midiStreamPause)(void);
    void (*midiStreamPosition)(void);
    void (*midiStreamProperty)(void);
    void (*midiStreamRestart)(void);
    void (*midiStreamStop)(void);
    void (*mixerClose)(void);
    void (*mixerGetControlDetailsA)(void);
    void (*mixerGetControlDetailsW)(void);
    void (*mixerGetDevCapsA)(void);
    void (*mixerGetDevCapsW)(void);
    void (*mixerGetID)(void);
    void (*mixerGetLineControlsA)(void);
    void (*mixerGetLineControlsW)(void);
    void (*mixerGetLineInfoA)(void);
    void (*mixerGetLineInfoW)(void);
    void (*mixerGetNumDevs)(void);
    void (*mixerMessage)(void);
    void (*mixerOpen)(void);
    void (*mixerSetControlDetails)(void);
    void (*mmDrvInstall)(void);
    void (*mmGetCurrentTask)(void);
    void (*mmTaskBlock)(void);
    void (*mmTaskCreate)(void);
    void (*mmTaskSignal)(void);
    void (*mmTaskYield)(void);
    void (*mmioAdvance)(void);
    void (*mmioAscend)(void);
    void (*mmioClose)(void);
    void (*mmioCreateChunk)(void);
    void (*mmioDescend)(void);
    void (*mmioFlush)(void);
    void (*mmioGetInfo)(void);
    void (*mmioInstallIOProcA)(void);
    void (*mmioInstallIOProcW)(void);
    void (*mmioOpenA)(void);
    void (*mmioOpenW)(void);
    void (*mmioRead)(void);
    void (*mmioRenameA)(void);
    void (*mmioRenameW)(void);
    void (*mmioSeek)(void);
    void (*mmioSendMessage)(void);
    void (*mmioSetBuffer)(void);
    void (*mmioSetInfo)(void);
    void (*mmioStringToFOURCCA)(void);
    void (*mmioStringToFOURCCW)(void);
    void (*mmioWrite)(void);
    void (*mmsystemGetVersion)(void);
    void (*mod32Message)(void);
    void (*mxd32Message)(void);
    void (*sndPlaySoundA)(void);
    void (*sndPlaySoundW)(void);
    void (*tid32Message)(void);
    void (*timeBeginPeriod)(void);
    void (*timeEndPeriod)(void);
    void (*timeGetDevCaps)(void);
    void (*timeGetSystemTime)(void);
    void (*timeGetTime)(void);
    void (*timeKillEvent)(void);
    void (*timeSetEvent)(void);
//    void (*waveInAddBuffer)(void);
    UINT WINAPI (*waveInAddBuffer)(HWAVEIN, void*, UINT);
//    void (*waveInClose)(void);
    UINT WINAPI (*waveInClose)(HWAVEIN hwi);

⌨️ 快捷键说明

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