19 BYTE byProfessional : 1;
21 BYTE byEncodedAudioSignalEmphasis : 3;
22 BYTE bySourceSamplingFreqUnlocked : 1;
23 BYTE byEncodedSamplingFreq : 2;
25 BYTE byEncodedChannelMode : 4;
26 BYTE byEncodedUserBitsManagement : 4;
29 BYTE bySingleCoordinationSignal : 1;
30 BYTE byWordLength : 4;
31 BYTE byAlignmentLevel : 2;
33 BYTE byChannelNumberOrMultiChannelMode : 7;
34 BYTE byDefinedMultiChannelMode : 1;
36 BYTE byReferenceSignal : 2;
38 BYTE bySamplingFreq : 4;
39 BYTE bySamplingFreqScaling : 1;
43 BYTE achChannelOrigin[4];
44 BYTE achChannelDestination[4];
45 DWORD dwLocalSampleAddress;
46 DWORD dwTimeOfDaySampleAddress;
47 BYTE byReliabilityFlags;
53 BYTE byProfessional : 1;
55 BYTE byNoCopyright : 1;
56 BYTE byAdditionalFormatInfo : 3;
61 BYTE bySourceNumber : 4;
62 BYTE byChannelNumber : 4;
64 BYTE bySamplingFreq : 4;
65 BYTE byClockAccuracy : 2;
68 BYTE byWordLength : 4;
69 BYTE byOrigSamplingFreq : 4;
75 static inline int IEC60958_GetBitsPerSample(BYTE 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 static inline BOOLEAN IEC60958_ParseChannelStatus(
IEC60958_CHANNEL_STATUS * pStatus, BOOLEAN * pbLPCM, DWORD * pdwSampleRate,
int * pnBitsPerSample)
140 DWORD 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