blob: 4aaba102ebbee91fde1bea9ae164c370b986e709 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/************************************************************************************
Filename : WavPlayer_OSX.h
Content : An Apple OSX audio handler.
Created : March 5, 2013
Authors : Robotic Arm Software - Peter Hoff, Dan Goodman, Bryan Croteau
Copyright : Copyright 2013 Oculus VR, Inc. All Rights reserved.
Use of this software is subject to the terms of the Oculus LLC license
agreement provided at the time of installation or download, or which
otherwise accompanies this software in either electronic or hard copy form.
************************************************************************************/
#ifndef OVR_WavPlayer_h
#define OVR_WavPlayer_h
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/stat.h>
#include <AudioToolbox/AudioQueue.h>
#define AUDIO_BUFFERS 4
namespace OVR { namespace Platform { namespace OSX {
typedef struct AQCallbackStruct
{
AudioQueueRef Queue;
UInt32 FrameCount;
AudioQueueBufferRef Buffers[AUDIO_BUFFERS];
AudioStreamBasicDescription DataFormat;
UInt32 PlayPtr;
UInt32 SampleLen;
unsigned char* PCMBuffer;
} AQCallbackStruct;
class WavPlayer
{
public:
WavPlayer(const char* fileName);
int PlayAudio();
private:
bool isDataChunk(unsigned char* buffer, int index);
int getWord(unsigned char* buffer, int index);
short getHalf(unsigned char* buffer, int index);
void *LoadPCM(const char *filename, unsigned long *len);
int PlayBuffer(void *pcm, unsigned long len);
static void aqBufferCallback(void *in, AudioQueueRef inQ, AudioQueueBufferRef outQB);
short AudioFormat;
short NumChannels;
int SampleRate;
int ByteRate;
short BlockAlign;
short BitsPerSample;
const char* FileName;
};
}}}
#endif
|