obs-studio/build_dependencies/aja/include/ajalibraries/ajantv2/includes/ntv2audiodefines.h
Ward Nakchbandi b48576284b first commit
2023-03-04 20:33:16 +03:00

86 lines
2.4 KiB
C

/* SPDX-License-Identifier: MIT */
/**
@file ntv2audiodefines.h
@brief Declares common audio macros and structs used in the SDK.
@copyright (C) 2004-2021 AJA Video Systems, Inc. All rights reserved.
**/
#ifndef NTV2_AUDIODEFINES_H
#define NTV2_AUDIODEFINES_H
#define NTV2_NUMAUDIO_CHANNELS 6
#define NTV2_AUDIOSAMPLESIZE (sizeof (ULWord))
#define NTV2_AUDIO_WRAPADDRESS 0x000FF000
#define NTV2_AUDIO_WRAPADDRESS_MEDIUM (0x000FF000 * 2)
#define NTV2_AUDIO_WRAPADDRESS_BIG (0x000FF000 * 4)
#define NTV2_AUDIO_WRAPADDRESS_BIGGER (0x000FF000 * 8) // used with KiPro Mini 99 video buffers
#define NTV2_AUDIO_READBUFFEROFFSET 0x00100000
#define NTV2_AUDIO_READBUFFEROFFSET_MEDIUM (0x00100000 * 2)
#define NTV2_AUDIO_READBUFFEROFFSET_BIG (0x00100000 * 4)
#define NTV2_AUDIO_READBUFFEROFFSET_BIGGER (0x00100000 * 8) // used with KiPro Mini 99 video buffers
#define NTV2_AUDIO_BUFFEROFFSET_BIG (0x00100000 * 8)
#define NTV2_NUMSAMPLES_PER_AUDIO_INTERRUPT 960
#define NTV2_TOTALSAMPLES_IN_BUFFER(numChannels) (NTV2_AUDIO_WRAPADDRESS/((numChannels)*NTV2_AUDIOSAMPLESIZE))
#define kSDIName "SDI"
#define kAESName "AES/EBU"
#define kADATName "ADAT - 8 channels"
#define kAnalogName "Analog - 4 channels"
#define kNoneName "IO - none"
#define kAllName "8 channels"
#define kAJADeviceManufacturer "AJA Video"
typedef enum
{
kNumAudioChannels2 = 2,
kNumAudioChannels4 = 4,
kNumAudioChannels6 = 6,
kNumAudioChannels8 = 8,
kNumAudioChannels16 = 16,
kNumAudioChannelsMax = kNumAudioChannels16 // Used in Linux and Windows too
} AudioChannelsPerFrameEnum;
typedef enum
{
k16bitsPerSample = 16,
k24bitsPerSample = 24,
k32bitsPerSample = 32
} AudioBitsPerSampleEnum;
typedef enum
{
k44p1KHzSampleRate = 44100,
k48KHzSampleRate = 48000,
k96KHzSampleRate = 96000
} AudioSampleRateEnum;
typedef enum
{
kSourceSDI = 0x69736469,
kSourceAES = 0x69616573,
kSourceADAT = 0x69616474,
kSourceAnalog = 0x69616C67,
kSourceNone = 0x6E6F696E,
kSourceAll = 0x6F757420
} AudioSourceEnum;
typedef enum {
kNormal = 0,
kMuted = 1
} AudioMuteEnum;
// These are ProIO specific audio settings. The ENUMs represent actual register
// values. This is probably not a great idea but for now we will leave it like this
// since it only pertains to a ProIO build. Ideally these should just enumerations
// and the settings layer in the muxer should translate these to what the hardware
// wants.
#endif // NTV2_AUDIODEFINES_H