Lines Matching full:header
32 /* .xa file header */
56 xa_header_t header; member
88 char *magic = xa->header.magic; in startread()
91 if (lsx_readbuf(ft, xa->header.magic, (size_t)4) != 4 || in startread()
92 (memcmp("XA\0\0", xa->header.magic, (size_t)4) != 0 && in startread()
93 memcmp("XAI\0", xa->header.magic, (size_t)4) != 0 && in startread()
94 memcmp("XAJ\0", xa->header.magic, (size_t)4) != 0)) in startread()
96 lsx_fail_errno(ft, SOX_EHDR, "XA: Header not found"); in startread()
100 /* Read the rest of the header */ in startread()
101 if (lsx_readdw(ft, &xa->header.outSize) != SOX_SUCCESS) return SOX_EOF; in startread()
102 if (lsx_readw(ft, &xa->header.tag) != SOX_SUCCESS) return SOX_EOF; in startread()
103 if (lsx_readw(ft, &xa->header.channels) != SOX_SUCCESS) return SOX_EOF; in startread()
104 if (lsx_readdw(ft, &xa->header.sampleRate) != SOX_SUCCESS) return SOX_EOF; in startread()
105 if (lsx_readdw(ft, &xa->header.avgByteRate) != SOX_SUCCESS) return SOX_EOF; in startread()
106 if (lsx_readw(ft, &xa->header.align) != SOX_SUCCESS) return SOX_EOF; in startread()
107 if (lsx_readw(ft, &xa->header.bits) != SOX_SUCCESS) return SOX_EOF; in startread()
109 /* Output the data from the header */ in startread()
110 lsx_debug("XA Header:"); in startread()
117 lsx_debug(" dwOutSize: %u", xa->header.outSize); in startread()
118 lsx_debug(" wTag: 0x%04x", xa->header.tag); in startread()
119 lsx_debug(" wChannels: %u", xa->header.channels); in startread()
120 lsx_debug(" dwSampleRate: %u", xa->header.sampleRate); in startread()
121 lsx_debug(" dwAvgByteRate: %u", xa->header.avgByteRate); in startread()
122 lsx_debug(" wAlign: %u", xa->header.align); in startread()
123 lsx_debug(" wBits: %u", xa->header.bits); in startread()
128 if (!ft->encoding.bits_per_sample || ft->encoding.bits_per_sample == xa->header.bits) { in startread()
129 ft->encoding.bits_per_sample = xa->header.bits; in startread()
131 lsx_report("User options overriding size read in .xa header"); in startread()
134 if (ft->signal.channels == 0 || ft->signal.channels == xa->header.channels) { in startread()
135 ft->signal.channels = xa->header.channels; in startread()
137 lsx_report("User options overriding channels read in .xa header"); in startread()
140 if (ft->signal.rate == 0 || ft->signal.rate == xa->header.sampleRate) { in startread()
141 ft->signal.rate = xa->header.sampleRate; in startread()
143 lsx_report("User options overriding rate read in .xa header"); in startread()
159 /* Validate the header */ in startread()
160 if (xa->header.bits != ft->encoding.bits_per_sample) { in startread()
162 xa->header.bits, ft->encoding.bits_per_sample); in startread()
163 xa->header.bits = ft->encoding.bits_per_sample; in startread()
165 if (xa->header.align != (ft->encoding.bits_per_sample >> 3) * xa->header.channels) { in startread()
167 xa->header.align, (ft->encoding.bits_per_sample >> 3) * xa->header.channels); in startread()
168 xa->header.align = (ft->encoding.bits_per_sample >> 3) * xa->header.channels; in startread()
170 if (xa->header.avgByteRate != (xa->header.align * xa->header.sampleRate)) { in startread()
172 xa->header.avgByteRate, xa->header.align * xa->header.sampleRate); in startread()
173 xa->header.avgByteRate = xa->header.align * xa->header.sampleRate; in startread()