spdif_data_parse.h
2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#ifndef _SPDIF_DATA_PARSE_C_
#define _SPDIF_DATA_PARSE_C_
//for AAC(ADTS) DATA TYPE
enum
{
SPDIF_STREAM_UNKNOWN,
SPDIF_STREAM_AC3,
SPDIF_STREAM_AAC,
SPDIF_STREAM_PCM,
SPDIF_STREAM_DTS,
SPDIF_STREAM_UNLOCK,
SPDIF_STREAM_TEMP,
SPDIF_AUTO_ON
};
//AAC DATA TYPE:7
enum {
MPEG2_AAC_RESERVE_SAMPLE_RATE = 0, //32 frames, 1024 samples of frames
};
//AAC DATA TYPE:19
//for AAC(ADTS) STREAM SUBDATA TYPE
enum {
MPEG2_AAC_HALF_LOW_SAMPLE_RATE = 0, //64 frames, 2048 samples of frames
MPEG2_AAC_QUARTER_LOW_SAMPLE_RATE = 1, //128 frames, 4096 samples of frames
MPEG2_AAC_RESERVE1_LOW_SAMPLE_RATE = 2,
MPEG2_AAC_RESERVE2_LOW_SAMPLE_RATE = 3
};
//AAC DATA TYPE:20
//for AAC(ADTS) STREAM SUBDATA TYPE
enum {
MPEG4_AAC_NORMAL = 0, //32 frames, 1024 samples of frames
MPEG4_AAC_HALF_LOW_SAMPLE_RATE = 1, //64 frames, 2048 samples of frames
MPEG4_AAC_QUARTER_LOW_SAMPLE_RATE = 2, //128 frames, 4096 samples of frames
MPEG4_AAC_DOUBLE_HIGH_SAMPLE_RATE = 3, //16 frames, 512 samples of frames
};
#define PREAMBLE_PA 0xF872
#define PREAMBLE_PB 0x4E1F
//#define PREAMBLE_PAPB 0xF8724E1F
#define PREAMBLE_PC_AC3 1
#define PREAMBLE_PC_MPEG2_AAC1 7 //frame size:1024
//data type:low samle rate
#define PREAMBLE_PC_MPEG2_AAC2 (19) //BIT4-BIT0, for low sample frequency
//data type
#define PREAMBLE_PC_MPEG4_AAC (20) //BIT4-BIT0
//sub data type
#define PREAMBLE_PC_MPEG4_AAC_1K ((0<<5)) //frame size:1024
#define PREAMBLE_PC_MPEG4_AAC_2K ((1<<5)) //frame size:2048
#define PREAMBLE_PC_MPEG4_AAC_4K ((2<<5)) //frame size:4096
#define PREAMBLE_PC_MPEG4_AAC_4K ((3<<5)) //frame size:512
typedef struct {
// U16 pa; //header syc
// U16 pb; //header syc;
// U16 pd; //burst_payload_length;
// U16 pc; //burst_info;
// U16 pe; //if the burst-infor pc is equal 0x1F(31), the burst-preamble is extended with Pe.
// U16 pf; //if the burst-infor pc is equal 0x1F(31), the burst-preamble is extended with Pf.
u16 detect_cn;
U8 data_type;
//U8 monitor;
#if 0
U8 subdata_type; //[Bit6->bit5], burst_info;
U16 total_byte_of_frame; //repeat frames
U16 audio_data_len; //Pd
U16 remain_audio_data_len; //Pd
U16 stuff_data_len; //No audio data
U16 remain_stuff_data_len; //Pd
U8 stream_no;
U8 status;
//} SPDIF_HEADER;
#endif
} __attribute__ ((packed)) SPDIF_HEADER;
extern SPDIF_HEADER spdif_header;
extern u8 spdif_parse_read_cn;
U32 *spdif_data_parser_open(U32 *buf, U16 dword_length);
U8 spdif_data_monitor_by_u32(U32 *buf, U16 dword_length);
U8 spdif_data_monitor_by_u16(U32 *buf, U16 dword_length);
U32 spdif_get_data_burst_size(void);
U32 spdif_data_burst_parser (U8 *buf, u16 len);
void app_nav_spdif_stream_reinit1 (void);
#endif