Mercurial > libdvdnav.hg
comparison dvdread/ifo_types.h @ 349:8a711d89e294 src
read_audio_attr() uses getbits() instead of relying on endianness-specific bitfields
author | nicodvb |
---|---|
date | Sat, 03 May 2008 07:50:09 +0000 |
parents | 5300b5982b85 |
children | 950749fdce4a |
comparison
equal
deleted
inserted
replaced
348:5300b5982b85 | 349:8a711d89e294 |
---|---|
92 | 92 |
93 /** | 93 /** |
94 * Audio Attributes. | 94 * Audio Attributes. |
95 */ | 95 */ |
96 typedef struct { | 96 typedef struct { |
97 #ifdef WORDS_BIGENDIAN | |
98 unsigned char audio_format : 3; | 97 unsigned char audio_format : 3; |
99 unsigned char multichannel_extension : 1; | 98 unsigned char multichannel_extension : 1; |
100 unsigned char lang_type : 2; | 99 unsigned char lang_type : 2; |
101 unsigned char application_mode : 2; | 100 unsigned char application_mode : 2; |
102 | 101 |
103 unsigned char quantization : 2; | 102 unsigned char quantization : 2; |
104 unsigned char sample_frequency : 2; | 103 unsigned char sample_frequency : 2; |
105 unsigned char unknown1 : 1; | 104 unsigned char unknown1 : 1; |
106 unsigned char channels : 3; | 105 unsigned char channels : 3; |
107 #else | |
108 unsigned char application_mode : 2; | |
109 unsigned char lang_type : 2; | |
110 unsigned char multichannel_extension : 1; | |
111 unsigned char audio_format : 3; | |
112 | |
113 unsigned char channels : 3; | |
114 unsigned char unknown1 : 1; | |
115 unsigned char sample_frequency : 2; | |
116 unsigned char quantization : 2; | |
117 #endif | |
118 uint16_t lang_code; | 106 uint16_t lang_code; |
119 uint8_t lang_extension; | 107 uint8_t lang_extension; |
120 uint8_t code_extension; | 108 uint8_t code_extension; |
121 uint8_t unknown3; | 109 uint8_t unknown3; |
122 union { | 110 union { |
123 struct ATTRIBUTE_PACKED { | 111 struct ATTRIBUTE_PACKED { |
124 #ifdef WORDS_BIGENDIAN | |
125 unsigned char unknown4 : 1; | 112 unsigned char unknown4 : 1; |
126 unsigned char channel_assignment : 3; | 113 unsigned char channel_assignment : 3; |
127 unsigned char version : 2; | 114 unsigned char version : 2; |
128 unsigned char mc_intro : 1; /* probably 0: true, 1:false */ | 115 unsigned char mc_intro : 1; /* probably 0: true, 1:false */ |
129 unsigned char mode : 1; /* Karaoke mode 0: solo 1: duet */ | 116 unsigned char mode : 1; /* Karaoke mode 0: solo 1: duet */ |
130 #else | |
131 unsigned char mode : 1; | |
132 unsigned char mc_intro : 1; | |
133 unsigned char version : 2; | |
134 unsigned char channel_assignment : 3; | |
135 unsigned char unknown4 : 1; | |
136 #endif | |
137 } karaoke; | 117 } karaoke; |
138 struct ATTRIBUTE_PACKED { | 118 struct ATTRIBUTE_PACKED { |
139 #ifdef WORDS_BIGENDIAN | |
140 unsigned char unknown5 : 4; | 119 unsigned char unknown5 : 4; |
141 unsigned char dolby_encoded : 1; /* suitable for surround decoding */ | 120 unsigned char dolby_encoded : 1; /* suitable for surround decoding */ |
142 unsigned char unknown6 : 3; | 121 unsigned char unknown6 : 3; |
143 #else | |
144 unsigned char unknown6 : 3; | |
145 unsigned char dolby_encoded : 1; | |
146 unsigned char unknown5 : 4; | |
147 #endif | |
148 } surround; | 122 } surround; |
149 } app_info; | 123 } app_info; |
150 } ATTRIBUTE_PACKED audio_attr_t; | 124 } ATTRIBUTE_PACKED audio_attr_t; |
151 | 125 |
152 | 126 |