From 4df56926d10669ec120510957d3aa3fddb16e3c6 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Wed, 31 Oct 2007 15:21:27 +0100 Subject: [PATCH] Also save the header length and offset in the aft. --- afh.h | 12 ++++++------ aft.c | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/afh.h b/afh.h index 504bc2b2..ffccce95 100644 --- a/afh.h +++ b/afh.h @@ -43,6 +43,11 @@ struct afh_info { 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 @@ -50,12 +55,7 @@ struct afh_info { * 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. */ diff --git a/aft.c b/aft.c index f6631096..8d9c7063 100644 --- a/aft.c +++ b/aft.c @@ -323,14 +323,18 @@ enum afhi_offsets { 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) @@ -348,6 +352,8 @@ static void save_afhi(struct afh_info *afhi, char *buf) 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 */ @@ -360,6 +366,8 @@ static void load_afhi(const char *buf, struct afh_info *afhi) 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); } -- 2.39.2