playback.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:3k
源码类别:

Windows CE

开发平台:

C/C++

  1. /* in_flac - Winamp2 FLAC input plugin
  2.  * Copyright (C) 2000,2001,2002,2003,2004,2005  Josh Coalson
  3.  *
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  */
  18. #include "FLAC/all.h"
  19. #include "share/replaygain_synthesis.h"
  20. #include "plugin_common/all.h"
  21. /*
  22.  *  constants
  23.  */
  24. #define SAMPLES_PER_WRITE           576
  25. #define BITRATE_HIST_SEGMENT_MSEC   500
  26. #define BITRATE_HIST_SIZE           64
  27. /*
  28.  *  common structures
  29.  */
  30. typedef struct {
  31. volatile FLAC__bool is_playing;
  32. volatile FLAC__bool abort_flag;
  33. volatile FLAC__bool eof;
  34. volatile int seek_to;
  35. unsigned total_samples;
  36. unsigned bits_per_sample;
  37. unsigned output_bits_per_sample;
  38. unsigned channels;
  39. unsigned sample_rate;
  40. unsigned length_in_msec;
  41. unsigned average_bps;
  42. FLAC__bool has_replaygain;
  43. double replay_scale;
  44. DitherContext dither_context;
  45. } file_info_struct;
  46. typedef struct {
  47. struct {
  48. FLAC__bool enable;
  49. FLAC__bool album_mode;
  50. int  preamp;
  51. FLAC__bool hard_limit;
  52. } replaygain;
  53. struct {
  54. struct {
  55. FLAC__bool dither_24_to_16;
  56. } normal;
  57. struct {
  58. FLAC__bool dither;
  59. int  noise_shaping; /* value must be one of NoiseShaping enum, see plugin_common/replaygain_synthesis.h */
  60. int  bps_out;
  61. } replaygain;
  62. } resolution;
  63. struct {
  64. FLAC__bool stop_err;
  65. } misc;
  66. } output_config_t;
  67. /*
  68.  *  protopytes
  69.  */
  70. FLAC__bool FLAC_plugin__decoder_init(FLAC__FileDecoder *decoder, const char *filename, FLAC__int64 filesize, file_info_struct *file_info, output_config_t *config);
  71. void FLAC_plugin__decoder_finish(FLAC__FileDecoder *decoder);
  72. void FLAC_plugin__decoder_delete(FLAC__FileDecoder *decoder);
  73. int FLAC_plugin__seek(FLAC__FileDecoder *decoder, file_info_struct *file_info);
  74. unsigned FLAC_plugin__decode(FLAC__FileDecoder *decoder, file_info_struct *file_info, char *sample_buffer);
  75. int FLAC_plugin__get_rate(unsigned written_time, unsigned output_time, file_info_struct *file_info);
  76. /*
  77.  *  these should be defined in plug-in
  78.  */
  79. extern void FLAC_plugin__show_error(const char *message,...);