diff options
Diffstat (limited to '3rdparty/libflac/src/plugin_winamp2/playback.h')
-rw-r--r-- | 3rdparty/libflac/src/plugin_winamp2/playback.h | 92 |
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,...); |