Remove svn $Id$ header.
[platform/upstream/libvorbis.git] / lib / bitrate.h
index 96675f0..655a68c 100644 (file)
@@ -5,13 +5,12 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: bitrate tracking and management
- last mod: $Id: bitrate.h,v 1.2 2001/12/12 09:45:24 xiphmont Exp $
 
  ********************************************************************/
 
 #include "os.h"
 
 /* encode side bitrate tracking */
-#define BITTRACK_DIVISOR 16
 typedef struct bitrate_manager_state {
-  ogg_uint32_t  *queue_binned;
-  ogg_uint32_t  *queue_actual;
-  int            queue_size;
+  int            managed;
 
-  int            queue_head;
-  int            queue_bins;
+  long           avg_reservoir;
+  long           minmax_reservoir;
+  long           avg_bitsper;
+  long           min_bitsper;
+  long           max_bitsper;
 
-  long          *avg_binacc;
-  int            avg_center;
-  int            avg_tail;
-  ogg_uint32_t   avg_centeracc;
-  ogg_uint32_t   avg_sampleacc;
-  ogg_uint32_t   avg_sampledesired;
-  ogg_uint32_t   avg_centerdesired;
-
-  long          *minmax_binstack;
-  long          *minmax_posstack;
-  long          *minmax_limitstack;
-  long           minmax_stackptr;
-
-  long           minmax_acctotal;
-  int            minmax_tail;
-  ogg_uint32_t   minmax_sampleacc;
-  ogg_uint32_t   minmax_sampledesired;
-
-  int            next_to_flush;
-  int            last_to_flush;
-  
+  long           short_per_long;
   double         avgfloat;
-  double         avgnoise;
-  long           noisetrigger_postpone;
-  long           noisetrigger_request;
-
-  /* unfortunately, we need to hold queued packet data somewhere */
-  oggpack_buffer *queue_packet_buffers;
-  ogg_packet     *queue_packets;
 
+  vorbis_block  *vb;
+  int            choice;
 } bitrate_manager_state;
 
 typedef struct bitrate_manager_info{
-  /* detailed bitrate management setup */
-  double queue_avg_time;
-  double queue_avg_center;
-  double queue_minmax_time;
-  double queue_hardmin;
-  double queue_hardmax;
-  double queue_avgmin;
-  double queue_avgmax;
+  long           avg_rate;
+  long           min_rate;
+  long           max_rate;
+  long           reservoir_bits;
+  double         reservoir_bias;
+
+  double         slew_damp;
 
-  double avgfloat_initial; /* set by mode */
-  double avgfloat_minimum; /* set by mode */
-  double avgfloat_downslew_max;
-  double avgfloat_upslew_max;
-  double avgfloat_downhyst;
-  double avgfloat_uphyst;
-  double avgfloat_noise_lowtrigger;
-  double avgfloat_noise_hightrigger;
-  double avgfloat_noise_minval;
-  double avgfloat_noise_maxval;
 } bitrate_manager_info;
 
 extern void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bs);
 extern void vorbis_bitrate_clear(bitrate_manager_state *bs);
 extern int vorbis_bitrate_managed(vorbis_block *vb);
-extern int vorbis_bitrate_maxmarkers(void);
 extern int vorbis_bitrate_addblock(vorbis_block *vb);
 extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, ogg_packet *op);