X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=ogg_afh.c;h=70cd9f6439286503847709d2a165ca32132d74f1;hp=cce1eb54f40c02d05e96419c1afd0e849c18c6a4;hb=1340485877e90df2af6355fefb079a1ffad4cfd0;hpb=c839ef92e35d5604748aa4674b400156ff7baced diff --git a/ogg_afh.c b/ogg_afh.c index cce1eb54..70cd9f64 100644 --- a/ogg_afh.c +++ b/ogg_afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2006 Andre Noll + * Copyright (C) 2004-2007 Andre Noll * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,25 +17,26 @@ */ /** \file ogg_afh.c para_server's ogg vorbis audio format handler */ +#include #include #include #include #include "server.cmdline.h" #include "server.h" -#include "afs.h" +#include "vss.h" #include "afh.h" #include "error.h" #include "string.h" -/* must be big enough to hold header */ +/** must be big enough to hold header */ #define CHUNK_SIZE 32768 static double chunk_time = 0.25; static OggVorbis_File *oggvorbis_file; static FILE *infile; static int header_len, oggbuf_len, vi_channels; -static char *header, *oggbuf; +static char *header, *inbuf; static ssize_t *chunk_table, max_chunk_len; static struct audio_format_handler *af; static long vi_sampling_rate, vi_bitrate, vi_bitrate_nominal, @@ -80,11 +81,9 @@ static int ogg_compute_header_len(void) goto err2; } ret = -E_VORBIS; - if (vorbis_synthesis_headerin(&vi, &vc, &packet) < 0) { + if (vorbis_synthesis_headerin(&vi, &vc, &packet) < 0) goto err2; - } else - PARA_INFO_LOG("channels: %i, rate: %li\n", vi.channels, - vi.rate); + PARA_INFO_LOG("channels: %i, rate: %li\n", vi.channels, vi.rate); ogg_stream_packetin(stream_out, &packet); ret = ogg_sync_pageout(sync_in, &page); @@ -116,7 +115,7 @@ err2: err1: ogg_sync_destroy(sync_in); vorbis_info_clear(&vi); - vorbis_comment_clear(&vc); + vorbis_comment_clear(&vc); return ret; } @@ -141,7 +140,7 @@ static void tunetable(void) lp = i; for (i = 2; i < num_chunks - lp; i++) chunk_table[i] = chunk_table[i + lp]; -#endif +#endif } @@ -160,7 +159,7 @@ static void ogg_compute_chunk_table(double time_total) num = time_total / chunk_time + 3; PARA_DEBUG_LOG("chunk time: %g allocating %d chunk pointers\n", chunk_time, num); - chunk_table = para_malloc(num * sizeof(ogg_int64_t)); + chunk_table = para_malloc(num * sizeof(size_t)); chunk_table[0] = 0; max_chunk_len = 0; rewind(infile); @@ -202,8 +201,8 @@ static void ogg_close_audio_file(void) free(chunk_table); chunk_table = NULL; num_chunks = 0; - free(oggbuf); - oggbuf = NULL; + free(inbuf); + inbuf = NULL; oggbuf_len = 0; } @@ -306,26 +305,26 @@ static ogg_int64_t get_chunk_size(long unsigned chunk_num) return ret; } -char *ogg_read_chunk(long unsigned current_chunk, ssize_t *len) +static char *ogg_read_chunk(long unsigned current_chunk, ssize_t *len) { int ret; ogg_int64_t cs = get_chunk_size(current_chunk); if (!cs) { /* nothing to send for this run */ *len = 0; - return oggbuf; + return inbuf; } if (cs < 0) { /* eof */ *len = 0; return NULL; } *len = cs; - if (!oggbuf || oggbuf_len < *len) { + if (!inbuf || oggbuf_len < *len) { PARA_INFO_LOG("increasing ogg buffer size (%d -> %zu)\n", oggbuf_len, *len); - oggbuf = para_realloc(oggbuf, *len); + inbuf = para_realloc(inbuf, *len); oggbuf_len = *len; } - ret = read(fileno(infile), oggbuf, *len); + ret = read(fileno(infile), inbuf, *len); if (!ret) { *len = 0; return NULL; @@ -337,7 +336,7 @@ char *ogg_read_chunk(long unsigned current_chunk, ssize_t *len) if (ret != *len) PARA_WARNING_LOG("short read (%d/%zd)\n", ret, *len); *len = ret; - return oggbuf; + return inbuf; } static char *ogg_get_header_info(int *len) @@ -347,6 +346,12 @@ static char *ogg_get_header_info(int *len) } static const char* ogg_suffixes[] = {"ogg", NULL}; + +/** + * the init function of the ogg vorbis audio format handler + * + * \param p pointer to the struct to initialize + */ void ogg_init(struct audio_format_handler *p) { af = p;