19 uint8_t byProfessional : 1;
20 uint8_t byNotLPCM : 1;
21 uint8_t byEncodedAudioSignalEmphasis : 3;
22 uint8_t bySourceSamplingFreqUnlocked : 1;
23 uint8_t byEncodedSamplingFreq : 2;
25 uint8_t byEncodedChannelMode : 4;
26 uint8_t byEncodedUserBitsManagement : 4;
29 uint8_t bySingleCoordinationSignal : 1;
30 uint8_t byWordLength : 4;
31 uint8_t byAlignmentLevel : 2;
33 uint8_t byChannelNumberOrMultiChannelMode : 7;
34 uint8_t byDefinedMultiChannelMode : 1;
36 uint8_t byReferenceSignal : 2;
37 uint8_t byReserved1 : 1;
38 uint8_t bySamplingFreq : 4;
39 uint8_t bySamplingFreqScaling : 1;
43 uint8_t achChannelOrigin[4];
44 uint8_t achChannelDestination[4];
45 uint32_t dwLocalSampleAddress;
46 uint32_t dwTimeOfDaySampleAddress;
47 uint8_t byReliabilityFlags;
53 uint8_t byProfessional : 1;
54 uint8_t byNotLPCM : 1;
55 uint8_t byNoCopyright : 1;
56 uint8_t byAdditionalFormatInfo : 3;
59 uint8_t byCategoryCode;
61 uint8_t bySourceNumber : 4;
62 uint8_t byChannelNumber : 4;
64 uint8_t bySamplingFreq : 4;
65 uint8_t byClockAccuracy : 2;
66 uint8_t byReserved1 : 2;
68 uint8_t byWordLength : 4;
69 uint8_t byOrigSamplingFreq : 4;
75 inline int IEC60958_GetBitsPerSample(uint8_t byWordLength)
77 switch (byWordLength) {
94 switch (pStatus->Professional.byEncodedSamplingFreq) {
96 switch (pStatus->Professional.bySamplingFreq) {
99 case 3:
return 192000;
100 case 5:
return 22050;
101 case 6:
return 88200;
102 case 7:
return 176400;
121 switch (pStatus->Consumer.bySamplingFreq) {
122 case 0:
return 44100;
123 case 2:
return 48000;
124 case 3:
return 32000;
125 case 4:
return 22050;
126 case 6:
return 24000;
127 case 8:
return 88200;
128 case 9:
return 768000;
129 case 10:
return 96000;
130 case 12:
return 176400;
131 case 14:
return 192000;
137 inline bool IEC60958_ParseChannelStatus(
IEC60958_CHANNEL_STATUS * pStatus,
bool * pbLPCM, uint32_t * pdwSampleRate,
int * pnBitsPerSample)
140 uint32_t dwSampleRate = 48000;
141 int nBitsPerSample = 16;
143 if (pStatus->Professional.byProfessional) {
144 bLPCM = !pStatus->Professional.byNotLPCM;
145 dwSampleRate = IEC60958P_GetSampleRate(pStatus);
146 nBitsPerSample = IEC60958_GetBitsPerSample(pStatus->Professional.byWordLength);
149 bLPCM = !pStatus->Consumer.byNotLPCM;
150 dwSampleRate = IEC60958C_GetSampleRate(pStatus);
151 nBitsPerSample = IEC60958_GetBitsPerSample(pStatus->Consumer.byWordLength);
154 if (pbLPCM) *pbLPCM = bLPCM;
155 if (pdwSampleRate) *pdwSampleRate = dwSampleRate;
156 if (pnBitsPerSample) *pnBitsPerSample = nBitsPerSample;
Definition: MWIEC60958.h:13