/*
- * Copyright (C) 2004-2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2004-2007 Andre Noll <maan@systemlinux.org>
*
* 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
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*/
-/** \file ogg.c para_server's ogg vorbis audio format handler */
+/** \file ogg_afh.c para_server's ogg vorbis audio format handler */
+#include <inttypes.h>
#include <ogg/ogg.h>
#include <vorbis/codec.h>
#include <vorbis/vorbisfile.h>
#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 int header_len, oggbuf_len, vi_channels;
static char *header, *oggbuf;
static ssize_t *chunk_table, max_chunk_len;
-struct audio_format_handler *af;
+static struct audio_format_handler *af;
static long vi_sampling_rate, vi_bitrate, vi_bitrate_nominal,
num_chunks;
err1:
ogg_sync_destroy(sync_in);
vorbis_info_clear(&vi);
- vorbis_comment_clear(&vc);
+ vorbis_comment_clear(&vc);
return ret;
}
continue;
}
if (j < 0)
- tv_scale(i + 2, &af->chunk_tv, &af->eof_tv);
+ tv_scale(i, &af->chunk_tv, &af->eof_tv);
for (j = lp; j < i; j++)
chunk_table[j] = chunk_table[i];
lp = i;
lp = i;
for (i = 2; i < num_chunks - lp; i++)
chunk_table[i] = chunk_table[i + lp];
-#endif
+#endif
}
oggbuf_len = 0;
}
-static int ogg_save_header(FILE *file, int header_len)
+static int ogg_save_header(FILE *file, int len)
{
int ret;
- header = para_malloc(header_len);
+ header = para_malloc(len);
rewind(file);
- ret = read(fileno(file), header, header_len);
- if (ret != header_len)
+ ret = read(fileno(file), header, len);
+ if (ret != len)
return -E_OGG_READ;
return 1;
}
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);
}
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;