summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/libflac/src/plugin_winamp2/playback.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/libflac/src/plugin_winamp2/playback.h')
-rw-r--r--3rdparty/libflac/src/plugin_winamp2/playback.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/3rdparty/libflac/src/plugin_winamp2/playback.h b/3rdparty/libflac/src/plugin_winamp2/playback.h
new file mode 100644
index 00000000000..cf4349cd576
--- /dev/null
+++ b/3rdparty/libflac/src/plugin_winamp2/playback.h
@@ -0,0 +1,92 @@
+/* in_flac - Winamp2 FLAC input plugin
+ * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "FLAC/all.h"
+#include "share/replaygain_synthesis.h"
+#include "plugin_common/all.h"
+
+/*
+ * constants
+ */
+
+#define SAMPLES_PER_WRITE 576
+
+#define BITRATE_HIST_SEGMENT_MSEC 500
+#define BITRATE_HIST_SIZE 64
+
+/*
+ * common structures
+ */
+
+typedef struct {
+ volatile FLAC__bool is_playing;
+ volatile FLAC__bool abort_flag;
+ volatile FLAC__bool eof;
+ volatile int seek_to;
+ FLAC__uint64 total_samples;
+ unsigned bits_per_sample;
+ unsigned output_bits_per_sample;
+ unsigned channels;
+ unsigned sample_rate;
+ int length_in_msec; /* int (instead of FLAC__uint64) only because that's what Winamp uses; seeking won't work right if this maxes out */
+ unsigned average_bps;
+ FLAC__bool has_replaygain;
+ double replay_scale;
+ DitherContext dither_context;
+} stream_data_struct;
+
+
+typedef struct {
+ struct {
+ FLAC__bool enable;
+ FLAC__bool album_mode;
+ int preamp;
+ FLAC__bool hard_limit;
+ } replaygain;
+ struct {
+ struct {
+ FLAC__bool dither_24_to_16;
+ } normal;
+ struct {
+ FLAC__bool dither;
+ int noise_shaping; /* value must be one of NoiseShaping enum, see plugin_common/replaygain_synthesis.h */
+ int bps_out;
+ } replaygain;
+ } resolution;
+ struct {
+ FLAC__bool stop_err;
+ } misc;
+} output_config_t;
+
+/*
+ * protopytes
+ */
+
+FLAC__bool FLAC_plugin__decoder_init(FLAC__StreamDecoder *decoder, const char *filename, FLAC__int64 filesize, stream_data_struct *stream_data, output_config_t *config);
+void FLAC_plugin__decoder_finish(FLAC__StreamDecoder *decoder);
+void FLAC_plugin__decoder_delete(FLAC__StreamDecoder *decoder);
+
+int FLAC_plugin__seek(FLAC__StreamDecoder *decoder, stream_data_struct *stream_data);
+unsigned FLAC_plugin__decode(FLAC__StreamDecoder *decoder, stream_data_struct *stream_data, char *sample_buffer);
+int FLAC_plugin__get_rate(unsigned written_time, unsigned output_time, stream_data_struct *stream_data);
+
+/*
+ * these should be defined in plug-in
+ */
+
+extern void FLAC_plugin__show_error(const char *message,...);