X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=lib%2Fcodec_internal.h;h=2dcfbc5dfe1cb9da1b5cd672ec508dfbbec9d892;hb=2d0dc6a37ab741b09404599b885bdd7882d382a7;hp=956ea8331a376a35e432e9226044900eb53c913a;hpb=63bb426cb18452a6576d67abbaaa859df28d41b9;p=platform%2Fupstream%2Flibvorbis.git diff --git a/lib/codec_internal.h b/lib/codec_internal.h index 956ea83..2dcfbc5 100644 --- a/lib/codec_internal.h +++ b/lib/codec_internal.h @@ -5,13 +5,13 @@ * 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-2009 * + * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: libvorbis codec headers - last mod: $Id: codec_internal.h,v 1.12 2001/12/20 01:00:26 segher Exp $ + last mod: $Id$ ********************************************************************/ @@ -23,19 +23,22 @@ #define BLOCKTYPE_IMPULSE 0 #define BLOCKTYPE_PADDING 1 -#define BLOCKTYPE_TRANSITION 0 +#define BLOCKTYPE_TRANSITION 0 #define BLOCKTYPE_LONG 1 +#define PACKETBLOBS 15 + typedef struct vorbis_block_internal{ - float **pcmdelay; /* this is a pointer into local storage */ + float **pcmdelay; /* this is a pointer into local storage */ float ampmax; int blocktype; - ogg_uint32_t *packet_markers; + oggpack_buffer *packetblob[PACKETBLOBS]; /* initialized, must be freed; + blob [PACKETBLOBS/2] points to + the oggpack_buffer in the + main vorbis_block */ } vorbis_block_internal; -typedef void vorbis_look_time; -typedef void vorbis_look_mapping; typedef void vorbis_look_floor; typedef void vorbis_look_residue; typedef void vorbis_look_transform; @@ -48,7 +51,6 @@ typedef struct { int mapping; } vorbis_info_mode; -typedef void vorbis_info_time; typedef void vorbis_info_floor; typedef void vorbis_info_residue; typedef void vorbis_info_mapping; @@ -56,17 +58,18 @@ typedef void vorbis_info_mapping; #include "psy.h" #include "bitrate.h" -typedef struct backend_lookup_state { +typedef struct private_state { /* local lookup storage */ - envelope_lookup *ve; /* envelope lookup */ - float **window[2][2][2]; /* block, leadin, leadout, type */ + envelope_lookup *ve; /* envelope lookup */ + int window[2]; vorbis_look_transform **transform[2]; /* block, type */ - codebook *fullbooks; - vorbis_look_psy_global *psy_g_look; + drft_lookup fft_look[2]; - /* backend lookups are tied to the mode, not the backend or naked mapping */ int modebits; - vorbis_look_mapping **mode; + vorbis_look_floor **flr; + vorbis_look_residue **residue; + vorbis_look_psy *psy; + vorbis_look_psy_global *psy_g_look; /* local storage, only used on the encoding side. This way the application does not need to worry about freeing some packets' @@ -78,55 +81,16 @@ typedef struct backend_lookup_state { bitrate_manager_state bms; -} backend_lookup_state; - -/* high level configuration information for setting things up - step-by-step with the detaile vorbis_encode_ctl interface */ - -typedef struct highlevel_block { - double tone_mask_quality; - double tone_peaklimit_quality; - - double noise_bias_quality; - double noise_compand_quality; - - double ath_quality; - -} highlevel_block; - -typedef struct highlevel_encode_setup { - double base_quality; /* these have to be tracked by the ctl */ - double base_quality_short; /* interface so that the right books get */ - double base_quality_long; /* chosen... */ - - int short_block_p; - int long_block_p; - int impulse_block_p; - - int stereo_couple_p; - int stereo_backfill_p; - int residue_backfill_p; - - int stereo_point_dB; - double stereo_point_kHz[2]; - double lowpass_kHz[2]; - - double ath_floating_dB; - double ath_absolute_dB; - - double amplitude_track_dBpersec; - double trigger_quality; - - highlevel_block blocktype[4]; /* impulse, padding, trans, long */ - -} highlevel_encode_setup; + ogg_int64_t sample_count; +} private_state; /* codec_setup_info contains all the setup information specific to the specific compression/decompression mode in progress (eg, psychoacoustic settings, channel setup, options, codebook - etc). + etc). *********************************************************************/ +#include "highlevel.h" typedef struct codec_setup_info { /* Vorbis supports only short and long blocks, but allows the @@ -141,7 +105,6 @@ typedef struct codec_setup_info { int modes; int maps; - int times; int floors; int residues; int books; @@ -150,25 +113,55 @@ typedef struct codec_setup_info { vorbis_info_mode *mode_param[64]; int map_type[64]; vorbis_info_mapping *map_param[64]; - int time_type[64]; - vorbis_info_time *time_param[64]; int floor_type[64]; vorbis_info_floor *floor_param[64]; int residue_type[64]; vorbis_info_residue *residue_param[64]; static_codebook *book_param[256]; + codebook *fullbooks; - vorbis_info_psy *psy_param[64]; /* encode only */ + vorbis_info_psy *psy_param[4]; /* encode only */ vorbis_info_psy_global psy_g_param; bitrate_manager_info bi; - highlevel_encode_setup hi; - - int passlimit[32]; /* iteration limit per couple/quant pass */ - int coupling_passes; + highlevel_encode_setup hi; /* used only by vorbisenc.c. It's a + highly redundant structure, but + improves clarity of program flow. */ + int halfrate_flag; /* painless downsample for decode */ } codec_setup_info; extern vorbis_look_psy_global *_vp_global_look(vorbis_info *vi); extern void _vp_global_free(vorbis_look_psy_global *look); + + +typedef struct { + int sorted_index[VIF_POSIT+2]; + int forward_index[VIF_POSIT+2]; + int reverse_index[VIF_POSIT+2]; + + int hineighbor[VIF_POSIT]; + int loneighbor[VIF_POSIT]; + int posts; + + int n; + int quant_q; + vorbis_info_floor1 *vi; + + long phrasebits; + long postbits; + long frames; +} vorbis_look_floor1; + + + +extern int *floor1_fit(vorbis_block *vb,vorbis_look_floor1 *look, + const float *logmdct, /* in */ + const float *logmask); +extern int *floor1_interpolate_fit(vorbis_block *vb,vorbis_look_floor1 *look, + int *A,int *B, + int del); +extern int floor1_encode(oggpack_buffer *opb,vorbis_block *vb, + vorbis_look_floor1 *look, + int *post,int *ilogmask); #endif