1 /********************************************************************
3 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
4 * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
5 * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
6 * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
9 * by Monty <monty@xiph.org> and the XIPHOPHORUS Company *
10 * http://www.xiph.org/ *
12 ********************************************************************
14 function: predefined encoding modes
15 last mod: $Id: mode_D.h,v 1.2 2000/11/06 00:07:24 xiphmont Exp $
17 ********************************************************************/
19 /* this is really a freeform VBR mode. It roughly centers on 256 kbps stereo */
25 #include "vorbis/codec.h"
28 #include "books/lsp12_0.vqh"
29 #include "books/lsp30_0.vqh"
31 #include "books/resaux0_128a_256.vqh"
32 #include "books/resaux0_1024a_256.vqh"
34 #include "books/res0_128a_256_1.vqh"
35 #include "books/res0_128a_256_2.vqh"
36 #include "books/res0_128a_256_3.vqh"
37 #include "books/res0_128a_256_4.vqh"
38 #include "books/res0_128a_256_5.vqh"
39 #include "books/res0_1024a_256_1.vqh"
40 #include "books/res0_1024a_256_2.vqh"
41 #include "books/res0_1024a_256_3.vqh"
42 #include "books/res0_1024a_256_4.vqh"
43 #include "books/res0_1024a_256_5.vqh"
45 static vorbis_info_psy _psy_set_256 ={
54 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
55 /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
56 /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
59 /* 0 10 20 30 40 50 60 70 80 90 100 */
60 {{-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*63*/
61 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*125*/
62 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*175*/
63 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*250*/
64 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*350*/
65 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*500*/
66 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*700*/
67 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*1000*/
68 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*1400*/
69 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*2000*/
70 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*2800*/
71 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*4000*/
72 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*5600*/
73 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*8000*/
74 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*11500*/
75 {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*16000*/
79 {{-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*63*/
80 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*88*/
81 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*125*/
82 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*175*/
83 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*250*/
84 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*350*/
85 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*500*/
86 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*700*/
87 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*1000*/
88 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*1400*/
89 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*2000*/
90 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*2800*/
91 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*4000*/
92 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*5600*/
93 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*8000*/
94 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*11500*/
95 {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*16000*/
99 /* 0 10 20 30 40 50 60 70 80 90 100 */
104 -0., -.004 /* attack/decay control */
107 /* with GNUisms, this could be short and readable. Oh well */
108 static vorbis_info_time0 _time_set0_256={0};
109 static vorbis_info_floor0 _floor_set0_256={12, 44100, 64, 12,150, 1, {0} };
110 static vorbis_info_floor0 _floor_set1_256={30, 44100, 256, 12,150, 1, {1} };
111 static vorbis_info_residue0 _residue_set0_256={0,128, 32,6,2,
115 {0,9999,9999,9999,9999},
116 {99,2.5,7,13.5,27.5},
120 static vorbis_info_residue0 _residue_set1_256={0,1024, 32,6,3,
124 {0,9999,9999,9999,9999},
125 {99,2.5,7,13.5,27.5},
129 static vorbis_info_mapping0 _mapping_set0_256={1, {0,0}, {0}, {0}, {0}, {0}};
130 static vorbis_info_mapping0 _mapping_set1_256={1, {0,0}, {0}, {1}, {1}, {0}};
131 static vorbis_info_mode _mode_set0_256={0,0,0,0};
132 static vorbis_info_mode _mode_set1_256={1,0,0,1};
134 /* CD quality stereo, no channel coupling */
135 codec_setup_info info_D={
137 /* smallblock, largeblock */
139 /* modes,maps,times,floors,residues,books,psys */
140 2, 2, 1, 2, 2, 14, 1,
142 {&_mode_set0_256,&_mode_set1_256},
144 {0,0},{&_mapping_set0_256,&_mapping_set1_256},
146 {0,0},{&_time_set0_256},
148 {0,0},{&_floor_set0_256,&_floor_set1_256},
150 {0,0},{&_residue_set0_256,&_residue_set1_256},
152 {&_vq_book_lsp12_0, /* 0 */
153 &_vq_book_lsp30_0, /* 1 */
155 &_huff_book_resaux0_128a_256,
156 &_huff_book_resaux0_1024a_256,
158 &_vq_book_res0_128a_256_1,
159 &_vq_book_res0_128a_256_2,
160 &_vq_book_res0_128a_256_3,
161 &_vq_book_res0_128a_256_4,
162 &_vq_book_res0_128a_256_5,
163 &_vq_book_res0_1024a_256_1,
164 &_vq_book_res0_1024a_256_2,
165 &_vq_book_res0_1024a_256_3,
166 &_vq_book_res0_1024a_256_4,
167 &_vq_book_res0_1024a_256_5,
172 /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
176 #define PREDEF_INFO_MAX 0