Mercurial > audlegacy-plugins
diff src/flacng/flacng.h @ 930:2f742d127b3e trunk
[svn] - initial import of flacng from audacious-flacng-0.012
author | nenolod |
---|---|
date | Mon, 09 Apr 2007 10:55:23 -0700 |
parents | |
children | 7d7f77129c75 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/flacng/flacng.h Mon Apr 09 10:55:23 2007 -0700 @@ -0,0 +1,94 @@ +/* + * A FLAC decoder plugin for the Audacious Media Player + * Copyright (C) 2005 Ralf Ertzinger + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +#ifndef FLACNG_H +#define FLACNG_H + +#include <glib.h> +#include <audacious/plugin.h> +#include <audacious/vfs.h> + +#define OUTPUT_BLOCK_SIZE (8192u) +#define MAX_SUPPORTED_CHANNELS (2u) +#define BUFFER_SIZE_SAMP (FLAC__MAX_BLOCK_SIZE * FLAC__MAX_CHANNELS) +#define BUFFER_SIZE_BYTE (BUFFER_SIZE_SAMP * (FLAC__MAX_BITS_PER_SAMPLE/8)) + +/* + * Audio information about the stream as a whole, gathered from + * the metadata header + */ +struct stream_info { + guint bits_per_sample; + guint samplerate; + guint channels; + gulong samples; + gboolean has_seektable; +}; + +/* + * Information about the last decoded audio frame. + * Also describes the format of the audio currently contained + * in the stream buffer. + */ +struct frame_info { + guint bits_per_sample; + guint samplerate; + guint channels; +}; + +/* + * Information about the stream content, from the metadata + */ +struct stream_comment { + gchar* artist; + gchar* album; + gchar* title; + gchar* tracknumber; + gchar* genre; + gchar* date; +}; + +/* + * Replaygain information, from the metadata + */ +struct stream_replaygain { + gboolean has_rg; + gchar* ref_loud; + gchar* track_gain; + gchar* track_peak; + gchar* album_gain; + gchar* album_peak; +}; + + +typedef struct callback_info { + gint32* output_buffer; + gint32* write_pointer; + guint buffer_free; + guint buffer_used; + VFSFile* input_stream; + struct stream_info stream; + struct stream_comment comment; + struct stream_replaygain replaygain; + gboolean metadata_changed; + struct frame_info frame; + glong read_max; + gchar* name; +} callback_info; + +#endif