struct timeval chunk_tv;
/** End of file timeout - Do not load new audio file until this time. */
struct timeval eof_tv;
+ /**
+ * The position of the header within the audio file. Ignored if \a
+ * header_len equals zero.
+ */
+ uint32_t header_offset;
/**
* The header is needed by senders in case a new client connects in the
* middle of the stream. The length of the header defaults to zero
* treatment. The audio format handler does not need to set this to
* zero in this case.
*/
- unsigned header_len;
- /**
- * The position of the header within the audio file. Ignored if \a
- * header_len equals zero.
- */
- unsigned header_offset;
+ uint32_t header_len;
/** The number of channels. */
uint8_t channels;
/** Frequency in Hz. */
AFHI_BITRATE_OFFSET = 4,
/** Position of the frequency. */
AFHI_FREQUENCY_OFFSET = 8,
+ /** Location of the audio file header. */
+ AFHI_HEADER_OFFSET_OFFSET = 12,
+ /* Length of the audio file header. Zero means: No header. */
+ AFHI_HEADER_LEN_OFFSET = 16,
/** Number of channels is stored here. */
- AFHI_CHANNELS_OFFSET = 12,
+ AFHI_CHANNELS_OFFSET = 20,
/** EOF timeout in ms. */
- AFHI_EOF_OFFSET = 13,
+ AFHI_EOF_OFFSET = 21,
/** The tag info position. */
- AFHI_INFO_STRING_OFFSET = 15,
+ AFHI_INFO_STRING_OFFSET = 23,
/** Minimal on-disk size of a valid afhi struct. */
- MIN_AFHI_SIZE = 16
+ MIN_AFHI_SIZE = 24
};
static unsigned sizeof_afhi_buf(const struct afh_info *afhi)
afhi->seconds_total);
write_u32(buf + AFHI_BITRATE_OFFSET, afhi->bitrate);
write_u32(buf + AFHI_FREQUENCY_OFFSET, afhi->frequency);
+ write_u32(buf + AFHI_HEADER_OFFSET_OFFSET, afhi->header_offset);
+ write_u32(buf + AFHI_HEADER_LEN_OFFSET, afhi->header_len);
write_u8(buf + AFHI_CHANNELS_OFFSET, afhi->channels);
write_u16(buf + AFHI_EOF_OFFSET, tv2ms(&afhi->eof_tv));
strcpy(buf + AFHI_INFO_STRING_OFFSET, afhi->info_string); /* OK */
afhi->bitrate = read_u32(buf + AFHI_BITRATE_OFFSET);
afhi->frequency = read_u32(buf + AFHI_FREQUENCY_OFFSET);
afhi->channels = read_u8(buf + AFHI_CHANNELS_OFFSET);
+ afhi->header_offset = read_u32(buf + AFHI_HEADER_OFFSET_OFFSET);
+ afhi->header_len = read_u32(buf + AFHI_HEADER_LEN_OFFSET);
ms2tv(read_u16(buf + AFHI_EOF_OFFSET), &afhi->eof_tv);
strcpy(afhi->info_string, buf + AFHI_INFO_STRING_OFFSET);
}