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

📄 sdlaudio_drv.h

📁 audio-video-codecs.rar语音编解码器
💻 H
字号:
/*
//
//                  INTEL CORPORATION PROPRIETARY INFORMATION
//     This software is supplied under the terms of a license agreement or
//     nondisclosure agreement with Intel Corporation and may not be copied
//     or disclosed except in accordance with the terms of that agreement.
//          Copyright(c) 2003-2006 Intel Corporation. All Rights Reserved.
//
*/

#ifndef __SDLAUDIO_DRV_H__
#define __SDLAUDIO_DRV_H__

#include <umc_defs.h>

#ifdef UMC_ENABLE_SDL_AUDIO_RENDER

#include <SDL/SDL.h>
#include <ipps.h>
#include <vm_mutex.h>
#include <vm_debug.h>

#define SDLAUDIO_BUFFERS_NUM  32
#define SDLAUDIO_BUFFERS_SIZE 32 * 1024

#define SDLAUDIO_FORMAT AUDIO_S16SYS

/* Note: it's better to use 2**k falue (required for some systems). */
#define SDLAUDIO_SAMPLES 1024

#define CHECK_RESULT(err, msg, rez)                                           \
if (result != err) {                                                          \
    vm_debug_trace(VM_DEBUG_NONE, VM_STRING("SDLAudio:" msg " FAILED"));                  \
    return rez;                                                               \
}

#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */

void *sdlaudioInit(const Ipp32u Frequency,
                   const Ipp32u Channels,
                   const Ipp32u BitPerSample);

Ipp32s sdlaudioPlay(void *Driver,
                    Ipp8u* Buffer,
                    Ipp32s Size);

Ipp32s sdlaudioReset(void *Driver);

void sdlaudioClose(void *Driver);

Ipp32s sdlaudioPause(void *Driver);

Ipp32s sdlaudioResume(void *Driver);

Ipp32f sdlaudioSetVolume (void *Driver, Ipp32f volume);

Ipp32f sdlaudioGetVolume (void *Driver);

#ifdef __cplusplus
}
#endif /* __cplusplus */

enum sdlaudioRenderFlag
{
    SDLAUDIO_RENDER_OPEN  = 0x00000000,
    SDLAUDIO_RENDER_CLOSE = 0x00000001
};

typedef struct SDLAudioDrv
{
    Ipp32u mChannels;
    Ipp32u mFrequency;
    Ipp32u mBitPerSample;

    Ipp32u mChunkSize;
    Ipp32u mChunksNumber;

    Ipp32u mBufferSize;   /* ! (chunksNumber + 1) * chunkSize */
    Ipp32u mReadPosition;
    Ipp32u mWritePosition;
    Ipp32u mRenderFlag;
    Ipp32f mVolume;              /* [0,1] */

    Ipp8u *mDataBuffer;

    vm_mutex mLockBuffer;
    vm_mutex mLockSender;
} SDLAudioDrv;

#endif // UMC_ENABLE_SDL_AUDIO_RENDER

#endif // __SDLAUDIO_DRV_H__

⌨️ 快捷键说明

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