X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=aac_afh.c;h=20f142733a1bbb1a46c27c96706614d1efe9c775;hp=ab97cdad0da50177b0820651dfd69f7237a7cd27;hb=fcbaa47c0cb6e3e45bf1c465180752289bbe8b6b;hpb=f7b6451de1f334d8ab13a1f9428a1b24a437ba1d diff --git a/aac_afh.c b/aac_afh.c index ab97cdad..20f14273 100644 --- a/aac_afh.c +++ b/aac_afh.c @@ -33,16 +33,6 @@ /** size of the input buffer, must be big enough to hold header */ #define AAC_INBUF_SIZE 65536 -static FILE *infile; - -static void aac_close_audio_file(void) -{ - if (!infile) - return; - fclose(infile); - infile = NULL; -} - static int aac_find_stsz(unsigned char *buf, unsigned buflen, size_t *skip) { int i; @@ -68,8 +58,8 @@ static int aac_find_stsz(unsigned char *buf, unsigned buflen, size_t *skip) return -E_STSZ; } -static int read_chunk_table(struct audio_format_info *afi, unsigned char *inbuf, - size_t inbuf_len, size_t skip) +static int read_chunk_table(FILE *file, struct audio_format_info *afi, + unsigned char *inbuf, size_t inbuf_len, size_t skip) { int ret, i; size_t sum = 0; @@ -78,7 +68,7 @@ static int read_chunk_table(struct audio_format_info *afi, unsigned char *inbuf, ret = aac_find_stsz(inbuf, inbuf_len, &skip); if (ret >= 0) break; - ret = read(fileno(infile), inbuf, AAC_INBUF_SIZE); + ret = read(fileno(file), inbuf, AAC_INBUF_SIZE); if (ret <= 0) return -E_AAC_READ; inbuf_len = ret; @@ -91,7 +81,7 @@ static int read_chunk_table(struct audio_format_info *afi, unsigned char *inbuf, if (skip + 4 > inbuf_len) { skip = inbuf_len - skip; memmove(inbuf, inbuf + inbuf_len - skip, skip); - ret = read(fileno(infile), inbuf + skip, + ret = read(fileno(file), inbuf + skip, AAC_INBUF_SIZE - skip); if (ret <= 0) return -E_AAC_READ; @@ -135,8 +125,7 @@ static int aac_get_file_info(FILE *file, struct audio_format_info *afi) mp4AudioSpecificConfig mp4ASC; NeAACDecHandle handle; - infile = file; - ret = read(fileno(infile), inbuf, AAC_INBUF_SIZE); + ret = read(fileno(file), inbuf, AAC_INBUF_SIZE); if (ret <= 0) { ret = -E_AAC_READ; goto out; @@ -158,7 +147,7 @@ static int aac_get_file_info(FILE *file, struct audio_format_info *afi) if (NeAACDecAudioSpecificConfig(inbuf + skip, inbuf_len - skip, &mp4ASC) < 0) goto out; - ret = read_chunk_table(afi, inbuf, inbuf_len, skip); + ret = read_chunk_table(file, afi, inbuf, inbuf_len, skip); if (ret < 0) goto out; afi->seconds_total = aac_set_chunk_tv(afi, &mp4ASC); @@ -166,7 +155,7 @@ static int aac_get_file_info(FILE *file, struct audio_format_info *afi) ret = aac_find_entry_point(inbuf, inbuf_len, &skip); if (ret >= 0) break; - ret = read(fileno(infile), inbuf, AAC_INBUF_SIZE); + ret = read(fileno(file), inbuf, AAC_INBUF_SIZE); if (ret <= 0) { ret = -E_AAC_READ; goto out; @@ -190,10 +179,13 @@ out: } static const char* aac_suffixes[] = {"m4a", "mp4", NULL}; -/** the init function of the aac audio format handler */ -void aac_afh_init(struct audio_format_handler *p) +/** + * the init function of the aac audio format handler + * + * \param afh pointer to the struct to initialize + */ +void aac_afh_init(struct audio_format_handler *afh) { - p->get_file_info = aac_get_file_info, - p->close_audio_file = aac_close_audio_file; - p->suffixes = aac_suffixes; + afh->get_file_info = aac_get_file_info, + afh->suffixes = aac_suffixes; }