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