Also save the header length and offset in the aft.
authorAndre Noll <maan@systemlinux.org>
Wed, 31 Oct 2007 14:21:27 +0000 (15:21 +0100)
committerAndre Noll <maan@systemlinux.org>
Wed, 31 Oct 2007 14:21:27 +0000 (15:21 +0100)
afh.h
aft.c

diff --git a/afh.h b/afh.h
index 504bc2b..ffccce9 100644 (file)
--- 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 f663109..8d9c706 100644 (file)
--- 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);
 }