X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=aac_afh.c;h=3129824dbe0f721ebbe2566f06dcfca3c0f9b934;hp=1ab865971fa663f4e669bbd375ea732b00c6e259;hb=0b814bdbb7a3fe018cffee0162dc6c916cfa6879;hpb=3a624c04894f5b0fa4a1c0850307b33bf92c8e51 diff --git a/aac_afh.c b/aac_afh.c index 1ab86597..3129824d 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; @@ -194,6 +183,5 @@ static const char* aac_suffixes[] = {"m4a", "mp4", NULL}; void aac_afh_init(struct audio_format_handler *afh) { afh->get_file_info = aac_get_file_info, - afh->close_audio_file = aac_close_audio_file; afh->suffixes = aac_suffixes; }