source: svn/trunk/newcon3bcm2_21bu/magnum/commonutils/acm/bacm_spdif.c @ 15

Last change on this file since 15 was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 4.5 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.c $
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.c $
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/2   12/22/05 6:39p bandrews
25* PR18809: Cleaned up compiler warnings
26*
27* Hydra_Software_Devel/1   9/22/05 9:42p bandrews
28* PR17068: Refactored common spdif stuff.  Improved status reporting.
29***************************************************************************/
30
31#include "bacm_spdif.h"
32
33
34BDBG_MODULE(BACM) ;
35
36
37void BACM_SPDIF_InitChannelStatus(BACM_SPDIF_ChannelStatus * psChannelStatus)
38{
39        if (psChannelStatus)
40        {
41                psChannelStatus->eApplication = BACM_SPDIF_Application_eConsumer;
42                psChannelStatus->eStreamType = BACM_SPDIF_StreamType_eLinear;
43                psChannelStatus->bCopyrighted = false;
44                psChannelStatus->uAdditionalFormatInfo.ePCM = BACM_SPDIF_PCM_AdditionalFormatInfo_2ChannelNoPreEmphasis;
45                psChannelStatus->eChannelStatusMode = BACM_SPDIF_ChannelStatusMode_e0;
46                psChannelStatus->uiCategoryCode = 0x0;
47                psChannelStatus->eSourceNumber = BACM_SPDIF_SourceNumber_eUnspecified;
48                psChannelStatus->eChannelNumber = BACM_SPDIF_ChannelNumber_eUnspecified;
49                psChannelStatus->eSamplingFrequency = BACM_SPDIF_SamplingFrequency_eUnspecified;
50                psChannelStatus->eClockAccuracy = BACM_SPDIF_ClockAccuracy_eLevel2;
51                psChannelStatus->eWordLength = BACM_SPDIF_WordLength_eUnspecifiedOf24;
52                psChannelStatus->eOriginalSamplingFrequency = BACM_SPDIF_OriginalSamplingFrequency_eUnspecified;
53        }
54}
55
56
57void BACM_SPDIF_ParseChannelStatus(BACM_SPDIF_ChannelStatus * psChannelStatus, uint8_t uiChannelStatusSize, uint8_t auiChannelStatus[])
58{
59        if (psChannelStatus)
60        {
61                if (uiChannelStatusSize > 0)
62                {
63                        psChannelStatus->eApplication = 
64                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[0], CHAN_STAT0, APPLICATION);                               
65                        psChannelStatus->eStreamType = 
66                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[0], CHAN_STAT0, STREAM_TYPE);
67                        psChannelStatus->bCopyrighted = 
68                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[0], CHAN_STAT0, COPYRIGHT);
69
70                        if (psChannelStatus->eStreamType == BACM_SPDIF_StreamType_eLinear)
71                        {
72                                psChannelStatus->uAdditionalFormatInfo.ePCM = 
73                                        BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[0], CHAN_STAT0, ADDED_FORMAT_INFO);
74                        }
75                        else
76                        {
77                                psChannelStatus->uAdditionalFormatInfo.eNonlinear = 
78                                        BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[0], CHAN_STAT0, ADDED_FORMAT_INFO);
79                        }
80                       
81                        psChannelStatus->eChannelStatusMode = 
82                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[0], CHAN_STAT0, MODE);
83                }
84                if (uiChannelStatusSize > 1)
85                {
86                        psChannelStatus->uiCategoryCode = 
87                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[1], CHAN_STAT1, CATEGORY_CODE);
88                }
89                if (uiChannelStatusSize > 2)
90                {
91                        psChannelStatus->eSourceNumber = 
92                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[2], CHAN_STAT2, SOURCE_NUM);
93                        psChannelStatus->eChannelNumber = 
94                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[2], CHAN_STAT2, CHAN_NUM);
95                }
96                if (uiChannelStatusSize > 3)
97                {
98                        psChannelStatus->eSamplingFrequency = 
99                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[3], CHAN_STAT3, FS);
100                        psChannelStatus->eClockAccuracy = 
101                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[3], CHAN_STAT3, CLK_ACCURACY);
102                }
103                if (uiChannelStatusSize > 4)
104                {
105                        psChannelStatus->eWordLength = 
106                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[4], CHAN_STAT4, WORD_LEN);
107                        psChannelStatus->eOriginalSamplingFrequency = 
108                                BACM_SPDIF_GET_FIELD_DATA(auiChannelStatus[4], CHAN_STAT4, ORIG_FS);
109                }
110
111        }
112}
113
114
115void BACM_SPDIF_ParsePreambleC(BACM_SPDIF_PreambleC * psPreambleC, uint16_t uiPreambleC)
116{
117        if (psPreambleC)
118        {
119                psPreambleC->eDataType = 
120                        BACM_SPDIF_GET_FIELD_DATA(uiPreambleC, PC, DATA_TYPE);
121                       
122                psPreambleC->bPayloadMayContainErrors = 
123                        BACM_SPDIF_GET_FIELD_DATA(uiPreambleC, PC, PAYLOAD_ERRORS);
124                       
125                psPreambleC->uiDataTypeDependentInfo = 
126                        BACM_SPDIF_GET_FIELD_DATA(uiPreambleC, PC, TYPE_DEP_INFO);
127                       
128                psPreambleC->uiBitstreamNumber = 
129                        BACM_SPDIF_GET_FIELD_DATA(uiPreambleC, PC, BS_NUM);
130        }
131}
132
Note: See TracBrowser for help on using the repository browser.