source: svn/trunk/newcon3bcm2_21bu/magnum/commonutils/acm/bacm_spdif.h @ 54

Last change on this file since 54 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 14.7 KB
Line 
1/***************************************************************************
2*     Copyright (c) 2003-2007, Broadcom Corporation
3*     All Rights Reserved
4*     Confidential Property of Broadcom Corporation
5*
6*  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7*  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8*  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9*
10* $brcm_Workfile: bacm_spdif.h $
11* $brcm_Revision: Hydra_Software_Devel/1 $
12* $brcm_Date: 3/15/07 3:17p $
13*
14* Module Description:
15*
16* Revision History:
17*
18* $brcm_Log: /magnum/commonutils/acm/bacm_spdif.h $
19*
20* Hydra_Software_Devel/1   3/15/07 3:17p rgreen
21* PR27181: Initial audio common support for SPDIF Channel Status
22* types/functions
23*
24* Hydra_Software_Devel/1   9/22/05 9:42p bandrews
25* PR17068: Refactored common spdif stuff.  Improved status reporting.
26***************************************************************************/
27
28#ifndef BAVC_AUDIO_H__
29#define BAVC_AUDIO_H__
30
31#include "bavc.h"
32#include "bacm_spdif_defs.h"
33
34/***************************************************************************
35Summary:
36        An enum of the channel status clock accuracies.
37**************************************************************************/
38typedef enum BACM_SPDIF_Application
39{
40        BACM_SPDIF_Application_eConsumer = BACM_SPDIF_CHAN_STAT0_APPLICATION_Consumer,
41        BACM_SPDIF_Application_eProfessional = BACM_SPDIF_CHAN_STAT0_APPLICATION_Professional
42} BACM_SPDIF_Application;
43
44/***************************************************************************
45Summary:
46        This enumeration defines the stream type of incoming digaud data
47
48***************************************************************************/
49typedef enum BACM_SPDIF_StreamType
50{
51        BACM_SPDIF_StreamType_eLinear = BACM_SPDIF_CHAN_STAT0_STREAM_TYPE_Linear,
52        BACM_SPDIF_StreamType_eNonlinear = BACM_SPDIF_CHAN_STAT0_STREAM_TYPE_Nonlinear
53} BACM_SPDIF_StreamType;
54
55/***************************************************************************
56Summary:
57        An enum of the channel status clock accuracies.
58**************************************************************************/
59typedef enum BACM_SPDIF_PCM_AdditionalFormatInfo
60{
61        BACM_SPDIF_PCM_AdditionalFormatInfo_2ChannelNoPreEmphasis = BACM_SPDIF_CHAN_STAT0_ADDED_FORMAT_INFO_PCM_2ChannelNoPreEmphasis,
62        BACM_SPDIF_PCM_AdditionalFormatInfo_2ChannelPreEmphasis50us15us = BACM_SPDIF_CHAN_STAT0_ADDED_FORMAT_INFO_PCM_2ChannelPreEmphasis50us15us,
63        BACM_SPDIF_PCM_AdditionalFormatInfo_2ChannelPreEmphasisReserved0 = BACM_SPDIF_CHAN_STAT0_ADDED_FORMAT_INFO_PCM_2ChannelPreEmphasisReserved0,
64        BACM_SPDIF_PCM_AdditionalFormatInfo_2ChannelPreEmphasisReserved1 = BACM_SPDIF_CHAN_STAT0_ADDED_FORMAT_INFO_PCM_2ChannelPreEmphasisReserved1
65} BACM_SPDIF_PCM_AdditionalFormatInfo;
66
67/***************************************************************************
68Summary:
69        An enum of the channel status clock accuracies.
70**************************************************************************/
71typedef enum BACM_SPDIF_Nonlinear_AdditionalFormatInfo
72{
73        BACM_SPDIF_Nonlinear_AdditionalFormatInfo_Default = BACM_SPDIF_CHAN_STAT0_ADDED_FORMAT_INFO_NonLinear_Default
74} BACM_SPDIF_Nonlinear_AdditionalFormatInfo;
75
76/***************************************************************************
77Summary:
78        An enum of the channel status clock accuracies.
79**************************************************************************/
80typedef enum BACM_SPDIF_ChannelStatusMode
81{
82        BACM_SPDIF_ChannelStatusMode_e0 = BACM_SPDIF_CHAN_STAT0_MODE_Mode0
83} BACM_SPDIF_ChannelStatusMode;
84
85/***************************************************************************
86Summary:
87        An enum of the channel status clock accuracies.
88**************************************************************************/
89typedef enum BACM_SPDIF_SourceNumber
90{
91        BACM_SPDIF_SourceNumber_eUnspecified = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_Unspecified,
92        BACM_SPDIF_SourceNumber_e1 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_1,
93        BACM_SPDIF_SourceNumber_e2 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_2,
94        BACM_SPDIF_SourceNumber_e3 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_3,
95        BACM_SPDIF_SourceNumber_e4 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_4,
96        BACM_SPDIF_SourceNumber_e5 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_5,
97        BACM_SPDIF_SourceNumber_e6 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_6,
98        BACM_SPDIF_SourceNumber_e7 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_7,
99        BACM_SPDIF_SourceNumber_e8 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_8,
100        BACM_SPDIF_SourceNumber_e9 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_9,
101        BACM_SPDIF_SourceNumber_e10 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_10,
102        BACM_SPDIF_SourceNumber_e11 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_11,
103        BACM_SPDIF_SourceNumber_e12 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_12,
104        BACM_SPDIF_SourceNumber_e13 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_13,
105        BACM_SPDIF_SourceNumber_e14 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_14,
106        BACM_SPDIF_SourceNumber_e15 = BACM_SPDIF_CHAN_STAT2_SOURCE_NUM_15
107} BACM_SPDIF_SourceNumber;
108
109/***************************************************************************
110Summary:
111        An enum of the channel status clock accuracies.
112**************************************************************************/
113typedef enum BACM_SPDIF_ChannelNumber
114{
115        BACM_SPDIF_ChannelNumber_eUnspecified = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_Unspecified,
116        BACM_SPDIF_ChannelNumber_e1 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_1,
117        BACM_SPDIF_ChannelNumber_e2 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_2,
118        BACM_SPDIF_ChannelNumber_e3 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_3,
119        BACM_SPDIF_ChannelNumber_e4 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_4,
120        BACM_SPDIF_ChannelNumber_e5 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_5,
121        BACM_SPDIF_ChannelNumber_e6 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_6,
122        BACM_SPDIF_ChannelNumber_e7 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_7,
123        BACM_SPDIF_ChannelNumber_e8 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_8,
124        BACM_SPDIF_ChannelNumber_e9 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_9,
125        BACM_SPDIF_ChannelNumber_e10 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_10,
126        BACM_SPDIF_ChannelNumber_e11 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_11,
127        BACM_SPDIF_ChannelNumber_e12 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_12,
128        BACM_SPDIF_ChannelNumber_e13 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_13,
129        BACM_SPDIF_ChannelNumber_e14 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_14,
130        BACM_SPDIF_ChannelNumber_e15 = BACM_SPDIF_CHAN_STAT2_CHAN_NUM_15
131} BACM_SPDIF_ChannelNumber;
132
133/***************************************************************************
134Summary:
135        An enum of the channel status clock accuracies.
136**************************************************************************/
137typedef enum BACM_SPDIF_SamplingFrequency
138{
139        BACM_SPDIF_SamplingFrequency_e44100 = BACM_SPDIF_CHAN_STAT3_FS_44100,
140        BACM_SPDIF_SamplingFrequency_eUnspecified = BACM_SPDIF_CHAN_STAT3_FS_Unspecified,
141        BACM_SPDIF_SamplingFrequency_e48000 = BACM_SPDIF_CHAN_STAT3_FS_48000,
142        BACM_SPDIF_SamplingFrequency_e32000 = BACM_SPDIF_CHAN_STAT3_FS_32000,
143        BACM_SPDIF_SamplingFrequency_e22050 = BACM_SPDIF_CHAN_STAT3_FS_22050,
144        BACM_SPDIF_SamplingFrequency_e24000 = BACM_SPDIF_CHAN_STAT3_FS_24000,
145        BACM_SPDIF_SamplingFrequency_e88200 = BACM_SPDIF_CHAN_STAT3_FS_88200,
146        BACM_SPDIF_SamplingFrequency_e96000 = BACM_SPDIF_CHAN_STAT3_FS_96000,
147        BACM_SPDIF_SamplingFrequency_e176400 = BACM_SPDIF_CHAN_STAT3_FS_176400,
148        BACM_SPDIF_SamplingFrequency_e192000 = BACM_SPDIF_CHAN_STAT3_FS_192000
149} BACM_SPDIF_SamplingFrequency;
150
151/***************************************************************************
152Summary:
153        An enum of the channel status clock accuracies.
154**************************************************************************/
155typedef enum BACM_SPDIF_ClockAccuracy
156{
157        BACM_SPDIF_ClockAccuracy_eLevel2 = BACM_SPDIF_CHAN_STAT3_CLK_ACCURACY_LevelII,
158        BACM_SPDIF_ClockAccuracy_eLevel1 = BACM_SPDIF_CHAN_STAT3_CLK_ACCURACY_LevelI,
159        BACM_SPDIF_ClockAccuracy_eLevel3 = BACM_SPDIF_CHAN_STAT3_CLK_ACCURACY_LevelIII,
160        BACM_SPDIF_ClockAccuracy_eUnmatched = BACM_SPDIF_CHAN_STAT3_CLK_ACCURACY_Unmatched
161} BACM_SPDIF_ClockAccuracy;
162
163/***************************************************************************
164Summary:
165        An enum of the channel status clock accuracies.
166**************************************************************************/
167typedef enum BACM_SPDIF_WordLength
168{
169        BACM_SPDIF_WordLength_eUnspecifiedOf20 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_UNSPECIFIED_OF_20_BITS,
170        BACM_SPDIF_WordLength_e16Of20 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_16_OF_20_BITS,
171        BACM_SPDIF_WordLength_e17Of20 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_17_OF_20_BITS,
172        BACM_SPDIF_WordLength_e18Of20 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_18_OF_20_BITS,
173        BACM_SPDIF_WordLength_e19Of20 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_19_OF_20_BITS,
174        BACM_SPDIF_WordLength_e20Of20 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_20_OF_20_BITS,
175        BACM_SPDIF_WordLength_eUnspecifiedOf24 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_UNSPECIFIED_OF_24_BITS,
176        BACM_SPDIF_WordLength_e20Of24 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_20_OF_24_BITS,
177        BACM_SPDIF_WordLength_e21Of24 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_21_OF_24_BITS,
178        BACM_SPDIF_WordLength_e22Of24 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_22_OF_24_BITS,
179        BACM_SPDIF_WordLength_e23Of24 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_23_OF_24_BITS,
180        BACM_SPDIF_WordLength_e24Of24 = BACM_SPDIF_CHAN_STAT4_WORD_LEN_24_OF_24_BITS
181} BACM_SPDIF_WordLength;
182
183/***************************************************************************
184Summary:
185        An enum of the channel status clock accuracies.
186**************************************************************************/
187typedef enum BACM_SPDIF_OriginalSamplingFrequency
188{
189        BACM_SPDIF_OriginalSamplingFrequency_eUnspecified = BACM_SPDIF_CHAN_STAT4_ORIG_FS_Unspecified,
190        BACM_SPDIF_OriginalSamplingFrequency_e192000 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_192000,
191        BACM_SPDIF_OriginalSamplingFrequency_e12000 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_12000,
192        BACM_SPDIF_OriginalSamplingFrequency_e176400 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_176400,
193        BACM_SPDIF_OriginalSamplingFrequency_eReserved0 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_Reserved0,
194        BACM_SPDIF_OriginalSamplingFrequency_e96000 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_96000,
195        BACM_SPDIF_OriginalSamplingFrequency_e8000 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_8000,
196        BACM_SPDIF_OriginalSamplingFrequency_e88200 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_88200,
197        BACM_SPDIF_OriginalSamplingFrequency_e16000 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_16000,
198        BACM_SPDIF_OriginalSamplingFrequency_e24000 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_24000,
199        BACM_SPDIF_OriginalSamplingFrequency_e11025 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_11025,
200        BACM_SPDIF_OriginalSamplingFrequency_e22050 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_22050,
201        BACM_SPDIF_OriginalSamplingFrequency_e32000 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_32000,
202        BACM_SPDIF_OriginalSamplingFrequency_e48000 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_48000,
203        BACM_SPDIF_OriginalSamplingFrequency_eReserved1 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_Reserved1,
204        BACM_SPDIF_OriginalSamplingFrequency_e44100 = BACM_SPDIF_CHAN_STAT4_ORIG_FS_44100
205} BACM_SPDIF_OriginalSamplingFrequency;
206
207/***************************************************************************
208Summary:
209        The SPDIF channel status.  See IEC60958 for more information.
210               
211**************************************************************************/
212typedef struct BACM_SPDIF_ChannelStatus
213{
214        BACM_SPDIF_Application eApplication;
215        BACM_SPDIF_StreamType eStreamType;
216        bool bCopyrighted;
217        union BACM_SPDIF_AdditionalFormatInfo
218        {
219                BACM_SPDIF_PCM_AdditionalFormatInfo ePCM;
220                BACM_SPDIF_Nonlinear_AdditionalFormatInfo eNonlinear;
221        } uAdditionalFormatInfo;
222        BACM_SPDIF_ChannelStatusMode eChannelStatusMode;
223        uint8_t uiCategoryCode;
224        BACM_SPDIF_SourceNumber eSourceNumber;
225        BACM_SPDIF_ChannelNumber eChannelNumber;
226        BACM_SPDIF_SamplingFrequency eSamplingFrequency;
227        BACM_SPDIF_ClockAccuracy eClockAccuracy;
228        BACM_SPDIF_WordLength eWordLength;
229        BACM_SPDIF_OriginalSamplingFrequency eOriginalSamplingFrequency;
230} BACM_SPDIF_ChannelStatus;
231
232#define BACM_SPDIF_ChannelStatusMaxByteCount    24 /* 192 bits */
233
234/***************************************************************************
235Summary:
236Takes the channel status byte array and converts it to a struct
237**************************************************************************/
238#define BACM_SPDIF_InitChannelStatus_isr BACM_SPDIF_InitChannelStatus
239void BACM_SPDIF_InitChannelStatus(BACM_SPDIF_ChannelStatus * psChannelStatus);
240
241/***************************************************************************
242Summary:
243Takes the channel status byte array and converts it to a struct
244**************************************************************************/
245#define BACM_SPDIF_ParseChannelStatus_isr BACM_SPDIF_ParseChannelStatus
246void BACM_SPDIF_ParseChannelStatus(BACM_SPDIF_ChannelStatus * psChannelStatus, uint8_t uiChannelStatusSize, uint8_t auiChannelStatus[]);
247
248/***************************************************************************
249Summary:
250        This enumeration defines the data type of SPDIF Preamble C.
251
252***************************************************************************/
253typedef enum BACM_SPDIF_DataType
254{
255        BACM_SPDIF_DataType_eNULL = BACM_SPDIF_PC_DATA_TYPE_Null, 
256        BACM_SPDIF_DataType_eAC3 = BACM_SPDIF_PC_DATA_TYPE_AC3, 
257        BACM_SPDIF_DataType_eReserved2 = BACM_SPDIF_PC_DATA_TYPE_Reserved2,     
258        BACM_SPDIF_DataType_ePause = BACM_SPDIF_PC_DATA_TYPE_Pause,
259        BACM_SPDIF_DataType_eMpeg1L1 = BACM_SPDIF_PC_DATA_TYPE_Mpeg1L1,
260        BACM_SPDIF_DataType_eMpeg1L23Mpeg2noext = BACM_SPDIF_PC_DATA_TYPE_Mpeg1L23Mpeg2noext,
261        BACM_SPDIF_DataType_eMpeg2withext = BACM_SPDIF_PC_DATA_TYPE_Mpeg2withext,
262        BACM_SPDIF_DataType_eAAC = BACM_SPDIF_PC_DATA_TYPE_AAC,
263        BACM_SPDIF_DataType_eMpeg2L1LF = BACM_SPDIF_PC_DATA_TYPE_Mpeg2L1LF,
264        BACM_SPDIF_DataType_eMpeg2L2LF = BACM_SPDIF_PC_DATA_TYPE_Mpeg2L2LF,
265        BACM_SPDIF_DataType_eMpeg2L3LF = BACM_SPDIF_PC_DATA_TYPE_Mpeg2L3LF,
266        BACM_SPDIF_DataType_eDTS1 = BACM_SPDIF_PC_DATA_TYPE_DTS1, 
267        BACM_SPDIF_DataType_eDTS2 = BACM_SPDIF_PC_DATA_TYPE_DTS2, 
268        BACM_SPDIF_DataType_eDTS3 = BACM_SPDIF_PC_DATA_TYPE_DTS3,
269        BACM_SPDIF_DataType_eATRAC = BACM_SPDIF_PC_DATA_TYPE_ATRAC,
270        BACM_SPDIF_DataType_eATRAC23 = BACM_SPDIF_PC_DATA_TYPE_ATRAC23,
271        BACM_SPDIF_DataType_eExtended = BACM_SPDIF_PC_DATA_TYPE_Extended
272} BACM_SPDIF_DataType;
273
274/***************************************************************************
275Summary:
276        This structure defines the Burst Preamble C.
277
278***************************************************************************/
279typedef struct BACM_SPDIF_PreambleC
280{
281        bool bPayloadMayContainErrors;                  /* true if the payload may contain errors, false otherwise */
282        uint8_t uiBitstreamNumber;                              /* the bitstream number, 0 - 7 */
283        uint8_t uiDataTypeDependentInfo;                        /* info that depends on the data type */
284        BACM_SPDIF_DataType eDataType;                  /* input data type */
285} BACM_SPDIF_PreambleC;
286
287/***************************************************************************
288Summary:
289Takes the channel status byte array and converts it to a struct
290**************************************************************************/
291#define BACM_SPDIF_ParsePreambleC_isr BACM_SPDIF_ParsePreambleC
292void BACM_SPDIF_ParsePreambleC(BACM_SPDIF_PreambleC * psPreambleC, uint16_t uiPreambleC);
293
294#endif /* BACM_SPDIF_COMMON_H__ */
295
Note: See TracBrowser for help on using the repository browser.