annotate vorbis_enc.c @ 9473:e38284cd69dc libavcodec

Use memcpy instead of the very inefficient bytecopy where both are correct (i.e. no overlap of src and dst is possible).
author reimar
date Fri, 17 Apr 2009 17:20:48 +0000
parents 4cb7c65fc775
children 67a20f0eb42c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1 /*
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
2 * copyright (c) 2006 Oded Shimon <ods15@ods15.dyndns.org>
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
3 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3919
diff changeset
4 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3919
diff changeset
5 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3919
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3919
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
10 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3919
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
14 * Lesser General Public License for more details.
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
15 *
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3919
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
5215
2b72f9bc4f06 license header consistency cosmetics
diego
parents: 5127
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
19 */
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
20
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
21 /**
8718
e9d9d946f213 Use full internal pathname in doxygen @file directives.
diego
parents: 8306
diff changeset
22 * @file libavcodec/vorbis_enc.c
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
23 * Native Vorbis encoder.
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
24 * @author Oded Shimon <ods15@ods15.dyndns.org>
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
25 */
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
26
3908
045c650f0951 Original Commit: r109 | ods15 | 2006-10-01 19:14:52 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3907
diff changeset
27 #include <float.h>
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
28 #include "avcodec.h"
3892
4fb6be21be4b Original Commit: r93 | ods15 | 2006-09-30 22:02:21 +0300 (Sat, 30 Sep 2006) | 2 lines
ods15
parents: 3891
diff changeset
29 #include "dsputil.h"
3841
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
30 #include "vorbis.h"
3915
a4f6e6981930 add vorbis_enc_data.h, remove codebook data from vorbis_enc.c
ods15
parents: 3913
diff changeset
31 #include "vorbis_enc_data.h"
3841
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
32
8030
a512ac8fa540 Use of new bitstream in vorbis_enc.c.
benoit
parents: 7838
diff changeset
33 #define BITSTREAM_WRITER_LE
9411
4cb7c65fc775 Split bitstream.h, put the bitstream writer stuff in the new file
stefano
parents: 8718
diff changeset
34 #include "put_bits.h"
8030
a512ac8fa540 Use of new bitstream in vorbis_enc.c.
benoit
parents: 7838
diff changeset
35
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
36 #undef NDEBUG
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
37 #include <assert.h>
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
38
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
39 typedef struct {
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
40 int nentries;
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
41 uint8_t * lens;
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
42 uint32_t * codewords;
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
43 int ndimentions;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
44 float min;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
45 float delta;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
46 int seq_p;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
47 int lookup;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
48 int * quantlist;
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
49 float * dimentions;
3908
045c650f0951 Original Commit: r109 | ods15 | 2006-10-01 19:14:52 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3907
diff changeset
50 float * pow2;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
51 } vorbis_enc_codebook;
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
52
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
53 typedef struct {
3814
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
54 int dim;
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
55 int subclass;
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
56 int masterbook;
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
57 int * books;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
58 } vorbis_enc_floor_class;
3814
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
59
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
60 typedef struct {
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
61 int partitions;
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
62 int * partition_to_class;
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
63 int nclasses;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
64 vorbis_enc_floor_class * classes;
3814
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
65 int multiplier;
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
66 int rangebits;
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
67 int values;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
68 vorbis_floor1_entry * list;
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
69 } vorbis_enc_floor;
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
70
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
71 typedef struct {
3815
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
72 int type;
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
73 int begin;
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
74 int end;
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
75 int partition_size;
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
76 int classifications;
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
77 int classbook;
3897
11caa885c449 Original Commit: r98 | ods15 | 2006-10-01 10:15:33 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3896
diff changeset
78 int8_t (*books)[8];
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
79 float (*maxes)[2];
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
80 } vorbis_enc_residue;
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
81
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
82 typedef struct {
3816
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
83 int submaps;
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
84 int * mux;
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
85 int * floor;
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
86 int * residue;
3870
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
87 int coupling_steps;
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
88 int * magnitude;
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
89 int * angle;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
90 } vorbis_enc_mapping;
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
91
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
92 typedef struct {
3817
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
93 int blockflag;
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
94 int mapping;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
95 } vorbis_enc_mode;
3817
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
96
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
97 typedef struct {
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
98 int channels;
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
99 int sample_rate;
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
100 int log2_blocksize[2];
3841
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
101 MDCTContext mdct[2];
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
102 const float * win[2];
3842
5f8cfa1a6fdb Original Commit: r39 | ods15 | 2006-09-23 09:36:11 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3841
diff changeset
103 int have_saved;
3841
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
104 float * saved;
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
105 float * samples;
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
106 float * floor; // also used for tmp values for mdct
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
107 float * coeffs; // also used for residue after floor
3891
50e912426a32 Original Commit: r92 | ods15 | 2006-09-30 12:13:47 +0300 (Sat, 30 Sep 2006) | 3 lines
ods15
parents: 3890
diff changeset
108 float quality;
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
109
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
110 int ncodebooks;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
111 vorbis_enc_codebook * codebooks;
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
112
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
113 int nfloors;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
114 vorbis_enc_floor * floors;
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
115
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
116 int nresidues;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
117 vorbis_enc_residue * residues;
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
118
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
119 int nmappings;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
120 vorbis_enc_mapping * mappings;
3817
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
121
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
122 int nmodes;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
123 vorbis_enc_mode * modes;
7838
88f4153caa21 vorbis_enc : set coded_frame->pts value to running sample count.
jai_menon
parents: 7546
diff changeset
124
88f4153caa21 vorbis_enc : set coded_frame->pts value to running sample count.
jai_menon
parents: 7546
diff changeset
125 int64_t sample_count;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
126 } vorbis_enc_context;
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
127
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
128 static inline void put_codeword(PutBitContext * pb, vorbis_enc_codebook * cb, int entry) {
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
129 assert(entry >= 0);
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
130 assert(entry < cb->nentries);
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
131 assert(cb->lens[entry]);
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
132 put_bits(pb, cb->lens[entry], cb->codewords[entry]);
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
133 }
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
134
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
135 static int cb_lookup_vals(int lookup, int dimentions, int entries) {
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
136 if (lookup == 1) return ff_vorbis_nth_root(entries, dimentions);
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
137 else if (lookup == 2) return dimentions * entries;
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
138 return 0;
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
139 }
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
140
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
141 static void ready_codebook(vorbis_enc_codebook * cb) {
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
142 int i;
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
143
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
144 ff_vorbis_len2vlc(cb->lens, cb->codewords, cb->nentries);
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
145
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
146 if (!cb->lookup)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
147 cb->pow2 = cb->dimentions = NULL;
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
148 else {
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
149 int vals = cb_lookup_vals(cb->lookup, cb->ndimentions, cb->nentries);
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
150 cb->dimentions = av_malloc(sizeof(float) * cb->nentries * cb->ndimentions);
3908
045c650f0951 Original Commit: r109 | ods15 | 2006-10-01 19:14:52 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3907
diff changeset
151 cb->pow2 = av_mallocz(sizeof(float) * cb->nentries);
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
152 for (i = 0; i < cb->nentries; i++) {
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
153 float last = 0;
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
154 int j;
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
155 int div = 1;
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
156 for (j = 0; j < cb->ndimentions; j++) {
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
157 int off;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
158 if (cb->lookup == 1)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
159 off = (i / div) % vals; // lookup type 1
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
160 else
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
161 off = i * cb->ndimentions + j; // lookup type 2
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
162
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
163 cb->dimentions[i * cb->ndimentions + j] = last + cb->min + cb->quantlist[off] * cb->delta;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
164 if (cb->seq_p)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
165 last = cb->dimentions[i * cb->ndimentions + j];
3908
045c650f0951 Original Commit: r109 | ods15 | 2006-10-01 19:14:52 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3907
diff changeset
166 cb->pow2[i] += cb->dimentions[i * cb->ndimentions + j]*cb->dimentions[i * cb->ndimentions + j];
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
167 div *= vals;
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
168 }
3908
045c650f0951 Original Commit: r109 | ods15 | 2006-10-01 19:14:52 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3907
diff changeset
169 cb->pow2[i] /= 2.;
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
170 }
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
171 }
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
172 }
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
173
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
174 static void ready_residue(vorbis_enc_residue * rc, vorbis_enc_context * venc) {
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
175 int i;
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
176 assert(rc->type == 2);
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
177 rc->maxes = av_mallocz(sizeof(float[2]) * rc->classifications);
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
178 for (i = 0; i < rc->classifications; i++) {
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
179 int j;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
180 vorbis_enc_codebook * cb;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
181 for (j = 0; j < 8; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
182 if (rc->books[i][j] != -1) break;
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
183 if (j == 8) continue; // zero
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
184 cb = &venc->codebooks[rc->books[i][j]];
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
185 assert(cb->ndimentions >= 2);
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
186 assert(cb->lookup);
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
187
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
188 for (j = 0; j < cb->nentries; j++) {
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
189 float a;
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
190 if (!cb->lens[j]) continue;
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
191 a = fabs(cb->dimentions[j * cb->ndimentions]);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
192 if (a > rc->maxes[i][0])
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
193 rc->maxes[i][0] = a;
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
194 a = fabs(cb->dimentions[j * cb->ndimentions + 1]);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
195 if (a > rc->maxes[i][1])
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
196 rc->maxes[i][1] = a;
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
197 }
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
198 }
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
199 // small bias
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
200 for (i = 0; i < rc->classifications; i++) {
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
201 rc->maxes[i][0] += 0.8;
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
202 rc->maxes[i][1] += 0.8;
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
203 }
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
204 }
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
205
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
206 static void create_vorbis_context(vorbis_enc_context * venc, AVCodecContext * avccontext) {
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
207 vorbis_enc_floor * fc;
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
208 vorbis_enc_residue * rc;
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
209 vorbis_enc_mapping * mc;
3820
3cfdf99da951 Original Commit: r14 | ods15 | 2006-09-22 12:26:17 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3819
diff changeset
210 int i, book;
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
211
3893
7c51248a63d3 Original Commit: r94 | ods15 | 2006-09-30 22:09:33 +0300 (Sat, 30 Sep 2006) | 2 lines
ods15
parents: 3892
diff changeset
212 venc->channels = avccontext->channels;
7c51248a63d3 Original Commit: r94 | ods15 | 2006-09-30 22:09:33 +0300 (Sat, 30 Sep 2006) | 2 lines
ods15
parents: 3892
diff changeset
213 venc->sample_rate = avccontext->sample_rate;
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
214 venc->log2_blocksize[0] = venc->log2_blocksize[1] = 11;
3893
7c51248a63d3 Original Commit: r94 | ods15 | 2006-09-30 22:09:33 +0300 (Sat, 30 Sep 2006) | 2 lines
ods15
parents: 3892
diff changeset
215
8042
e70975d5ff80 uses FF_ARRAY_ELEMS() where appropriate
aurel
parents: 8030
diff changeset
216 venc->ncodebooks = FF_ARRAY_ELEMS(cvectors);
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
217 venc->codebooks = av_malloc(sizeof(vorbis_enc_codebook) * venc->ncodebooks);
3893
7c51248a63d3 Original Commit: r94 | ods15 | 2006-09-30 22:09:33 +0300 (Sat, 30 Sep 2006) | 2 lines
ods15
parents: 3892
diff changeset
218
3878
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
219 // codebook 0..14 - floor1 book, values 0..255
3880
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
220 // codebook 15 residue masterbook
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
221 // codebook 16..29 residue
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
222 for (book = 0; book < venc->ncodebooks; book++) {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
223 vorbis_enc_codebook * cb = &venc->codebooks[book];
3898
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
224 int vals;
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
225 cb->ndimentions = cvectors[book].dim;
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
226 cb->nentries = cvectors[book].real_len;
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
227 cb->min = cvectors[book].min;
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
228 cb->delta = cvectors[book].delta;
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
229 cb->lookup = cvectors[book].lookup;
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
230 cb->seq_p = 0;
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
231
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
232 cb->lens = av_malloc(sizeof(uint8_t) * cb->nentries);
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
233 cb->codewords = av_malloc(sizeof(uint32_t) * cb->nentries);
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
234 memcpy(cb->lens, cvectors[book].clens, cvectors[book].len);
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
235 memset(cb->lens + cvectors[book].len, 0, cb->nentries - cvectors[book].len);
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
236
3898
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
237 if (cb->lookup) {
3880
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
238 vals = cb_lookup_vals(cb->lookup, cb->ndimentions, cb->nentries);
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
239 cb->quantlist = av_malloc(sizeof(int) * vals);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
240 for (i = 0; i < vals; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
241 cb->quantlist[i] = cvectors[book].quant[i];
3898
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
242 } else {
c8b9218c3458 Original Commit: r99 | ods15 | 2006-10-01 11:12:44 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3897
diff changeset
243 cb->quantlist = NULL;
3883
6d15c93bce65 Original Commit: r83 | ods15 | 2006-09-29 21:06:13 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3882
diff changeset
244 }
3820
3cfdf99da951 Original Commit: r14 | ods15 | 2006-09-22 12:26:17 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3819
diff changeset
245 ready_codebook(cb);
3cfdf99da951 Original Commit: r14 | ods15 | 2006-09-22 12:26:17 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3819
diff changeset
246 }
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
247
3825
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
248 venc->nfloors = 1;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
249 venc->floors = av_malloc(sizeof(vorbis_enc_floor) * venc->nfloors);
3826
c583e895f980 Original Commit: r20 | ods15 | 2006-09-22 13:12:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3825
diff changeset
250
c583e895f980 Original Commit: r20 | ods15 | 2006-09-22 13:12:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3825
diff changeset
251 // just 1 floor
3825
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
252 fc = &venc->floors[0];
3878
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
253 fc->partitions = 8;
3825
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
254 fc->partition_to_class = av_malloc(sizeof(int) * fc->partitions);
3878
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
255 fc->nclasses = 0;
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
256 for (i = 0; i < fc->partitions; i++) {
3912
f56e6d3a1d6e Original Commit: r113 | ods15 | 2006-10-01 21:35:47 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3911
diff changeset
257 static const int a[] = {0,1,2,2,3,3,4,4};
3878
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
258 fc->partition_to_class[i] = a[i];
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
259 fc->nclasses = FFMAX(fc->nclasses, fc->partition_to_class[i]);
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
260 }
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
261 fc->nclasses++;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
262 fc->classes = av_malloc(sizeof(vorbis_enc_floor_class) * fc->nclasses);
3825
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
263 for (i = 0; i < fc->nclasses; i++) {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
264 vorbis_enc_floor_class * c = &fc->classes[i];
3825
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
265 int j, books;
3912
f56e6d3a1d6e Original Commit: r113 | ods15 | 2006-10-01 21:35:47 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3911
diff changeset
266 c->dim = floor_classes[i].dim;
f56e6d3a1d6e Original Commit: r113 | ods15 | 2006-10-01 21:35:47 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3911
diff changeset
267 c->subclass = floor_classes[i].subclass;
f56e6d3a1d6e Original Commit: r113 | ods15 | 2006-10-01 21:35:47 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3911
diff changeset
268 c->masterbook = floor_classes[i].masterbook;
3825
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
269 books = (1 << c->subclass);
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
270 c->books = av_malloc(sizeof(int) * books);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
271 for (j = 0; j < books; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
272 c->books[j] = floor_classes[i].nbooks[j];
3825
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
273 }
3878
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
274 fc->multiplier = 2;
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
275 fc->rangebits = venc->log2_blocksize[0] - 1;
3825
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
276
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
277 fc->values = 2;
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
278 for (i = 0; i < fc->partitions; i++)
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
279 fc->values += fc->classes[fc->partition_to_class[i]].dim;
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
280
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
281 fc->list = av_malloc(sizeof(vorbis_floor1_entry) * fc->values);
3825
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
282 fc->list[0].x = 0;
9983437a00a1 Original Commit: r19 | ods15 | 2006-09-22 12:54:18 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3824
diff changeset
283 fc->list[1].x = 1 << fc->rangebits;
3860
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
284 for (i = 2; i < fc->values; i++) {
3900
2c1a4cce567b Original Commit: r101 | ods15 | 2006-10-01 14:15:00 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3899
diff changeset
285 static const int a[] = {
2c1a4cce567b Original Commit: r101 | ods15 | 2006-10-01 14:15:00 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3899
diff changeset
286 93, 23,372, 6, 46,186,750, 14, 33, 65,
2c1a4cce567b Original Commit: r101 | ods15 | 2006-10-01 14:15:00 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3899
diff changeset
287 130,260,556, 3, 10, 18, 28, 39, 55, 79,
2c1a4cce567b Original Commit: r101 | ods15 | 2006-10-01 14:15:00 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3899
diff changeset
288 111,158,220,312,464,650,850
2c1a4cce567b Original Commit: r101 | ods15 | 2006-10-01 14:15:00 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3899
diff changeset
289 };
3866
4d5f73f10198 Original Commit: r66 | ods15 | 2006-09-25 18:42:13 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3865
diff changeset
290 fc->list[i].x = a[i - 2];
3860
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
291 }
3901
e255692302f0 Original Commit: r102 | ods15 | 2006-10-01 17:58:38 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3900
diff changeset
292 ff_vorbis_ready_floor1_list(fc->list, fc->values);
3827
91f130d6c3f4 Original Commit: r21 | ods15 | 2006-09-22 13:40:31 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3826
diff changeset
293
91f130d6c3f4 Original Commit: r21 | ods15 | 2006-09-22 13:40:31 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3826
diff changeset
294 venc->nresidues = 1;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
295 venc->residues = av_malloc(sizeof(vorbis_enc_residue) * venc->nresidues);
3827
91f130d6c3f4 Original Commit: r21 | ods15 | 2006-09-22 13:40:31 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3826
diff changeset
296
3828
f9c449155a0e Original Commit: r22 | ods15 | 2006-09-22 13:49:56 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3827
diff changeset
297 // single residue
f9c449155a0e Original Commit: r22 | ods15 | 2006-09-22 13:49:56 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3827
diff changeset
298 rc = &venc->residues[0];
3880
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
299 rc->type = 2;
3828
f9c449155a0e Original Commit: r22 | ods15 | 2006-09-22 13:49:56 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3827
diff changeset
300 rc->begin = 0;
3880
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
301 rc->end = 1600;
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
302 rc->partition_size = 32;
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
303 rc->classifications = 10;
3878
30de59a39f6e Original Commit: r78 | ods15 | 2006-09-29 15:14:28 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3877
diff changeset
304 rc->classbook = 15;
3897
11caa885c449 Original Commit: r98 | ods15 | 2006-10-01 10:15:33 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3896
diff changeset
305 rc->books = av_malloc(sizeof(*rc->books) * rc->classifications);
11caa885c449 Original Commit: r98 | ods15 | 2006-10-01 10:15:33 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3896
diff changeset
306 {
11caa885c449 Original Commit: r98 | ods15 | 2006-10-01 10:15:33 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3896
diff changeset
307 static const int8_t a[10][8] = {
3880
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
308 { -1, -1, -1, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
309 { -1, -1, 16, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
310 { -1, -1, 17, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
311 { -1, -1, 18, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
312 { -1, -1, 19, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
313 { -1, -1, 20, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
314 { -1, -1, 21, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
315 { 22, 23, -1, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
316 { 24, 25, -1, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
317 { 26, 27, 28, -1, -1, -1, -1, -1, },
3d5920649c39 Original Commit: r80 | ods15 | 2006-09-29 15:44:22 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3879
diff changeset
318 };
3897
11caa885c449 Original Commit: r98 | ods15 | 2006-10-01 10:15:33 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3896
diff changeset
319 memcpy(rc->books, a, sizeof a);
3849
ead3ae56d1b6 Original Commit: r47 | ods15 | 2006-09-23 12:34:48 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3848
diff changeset
320 }
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
321 ready_residue(rc, venc);
3828
f9c449155a0e Original Commit: r22 | ods15 | 2006-09-22 13:49:56 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3827
diff changeset
322
3827
91f130d6c3f4 Original Commit: r21 | ods15 | 2006-09-22 13:40:31 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3826
diff changeset
323 venc->nmappings = 1;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
324 venc->mappings = av_malloc(sizeof(vorbis_enc_mapping) * venc->nmappings);
3827
91f130d6c3f4 Original Commit: r21 | ods15 | 2006-09-22 13:40:31 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3826
diff changeset
325
3829
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
326 // single mapping
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
327 mc = &venc->mappings[0];
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
328 mc->submaps = 1;
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
329 mc->mux = av_malloc(sizeof(int) * venc->channels);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
330 for (i = 0; i < venc->channels; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
331 mc->mux[i] = 0;
3829
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
332 mc->floor = av_malloc(sizeof(int) * mc->submaps);
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
333 mc->residue = av_malloc(sizeof(int) * mc->submaps);
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
334 for (i = 0; i < mc->submaps; i++) {
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
335 mc->floor[i] = 0;
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
336 mc->residue[i] = 0;
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
337 }
3870
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
338 mc->coupling_steps = venc->channels == 2 ? 1 : 0;
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
339 mc->magnitude = av_malloc(sizeof(int) * mc->coupling_steps);
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
340 mc->angle = av_malloc(sizeof(int) * mc->coupling_steps);
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
341 if (mc->coupling_steps) {
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
342 mc->magnitude[0] = 0;
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
343 mc->angle[0] = 1;
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
344 }
3829
e8e340cbc7f2 Original Commit: r23 | ods15 | 2006-09-22 13:55:48 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3828
diff changeset
345
3827
91f130d6c3f4 Original Commit: r21 | ods15 | 2006-09-22 13:40:31 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3826
diff changeset
346 venc->nmodes = 1;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
347 venc->modes = av_malloc(sizeof(vorbis_enc_mode) * venc->nmodes);
3830
477ee30c6fc6 Original Commit: r24 | ods15 | 2006-09-22 13:57:09 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3829
diff changeset
348
477ee30c6fc6 Original Commit: r24 | ods15 | 2006-09-22 13:57:09 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3829
diff changeset
349 // single mode
477ee30c6fc6 Original Commit: r24 | ods15 | 2006-09-22 13:57:09 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3829
diff changeset
350 venc->modes[0].blockflag = 0;
477ee30c6fc6 Original Commit: r24 | ods15 | 2006-09-22 13:57:09 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3829
diff changeset
351 venc->modes[0].mapping = 0;
3841
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
352
3842
5f8cfa1a6fdb Original Commit: r39 | ods15 | 2006-09-23 09:36:11 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3841
diff changeset
353 venc->have_saved = 0;
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
354 venc->saved = av_malloc(sizeof(float) * venc->channels * (1 << venc->log2_blocksize[1]) / 2);
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
355 venc->samples = av_malloc(sizeof(float) * venc->channels * (1 << venc->log2_blocksize[1]));
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
356 venc->floor = av_malloc(sizeof(float) * venc->channels * (1 << venc->log2_blocksize[1]) / 2);
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
357 venc->coeffs = av_malloc(sizeof(float) * venc->channels * (1 << venc->log2_blocksize[1]) / 2);
3841
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
358
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
359 venc->win[0] = ff_vorbis_vwin[venc->log2_blocksize[0] - 6];
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
360 venc->win[1] = ff_vorbis_vwin[venc->log2_blocksize[1] - 6];
3841
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
361
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
362 ff_mdct_init(&venc->mdct[0], venc->log2_blocksize[0], 0);
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
363 ff_mdct_init(&venc->mdct[1], venc->log2_blocksize[1], 0);
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
364 }
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
365
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
366 static void put_float(PutBitContext * pb, float f) {
3812
52ff3a5d161e Original Commit: r6 | ods15 | 2006-09-16 20:36:31 +0300 (Sat, 16 Sep 2006) | 2 lines
ods15
parents: 3811
diff changeset
367 int exp, mant;
52ff3a5d161e Original Commit: r6 | ods15 | 2006-09-16 20:36:31 +0300 (Sat, 16 Sep 2006) | 2 lines
ods15
parents: 3811
diff changeset
368 uint32_t res = 0;
52ff3a5d161e Original Commit: r6 | ods15 | 2006-09-16 20:36:31 +0300 (Sat, 16 Sep 2006) | 2 lines
ods15
parents: 3811
diff changeset
369 mant = (int)ldexp(frexp(f, &exp), 20);
52ff3a5d161e Original Commit: r6 | ods15 | 2006-09-16 20:36:31 +0300 (Sat, 16 Sep 2006) | 2 lines
ods15
parents: 3811
diff changeset
370 exp += 788 - 20;
52ff3a5d161e Original Commit: r6 | ods15 | 2006-09-16 20:36:31 +0300 (Sat, 16 Sep 2006) | 2 lines
ods15
parents: 3811
diff changeset
371 if (mant < 0) { res |= (1 << 31); mant = -mant; }
52ff3a5d161e Original Commit: r6 | ods15 | 2006-09-16 20:36:31 +0300 (Sat, 16 Sep 2006) | 2 lines
ods15
parents: 3811
diff changeset
372 res |= mant | (exp << 21);
52ff3a5d161e Original Commit: r6 | ods15 | 2006-09-16 20:36:31 +0300 (Sat, 16 Sep 2006) | 2 lines
ods15
parents: 3811
diff changeset
373 put_bits(pb, 32, res);
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
374 }
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
375
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
376 static void put_codebook_header(PutBitContext * pb, vorbis_enc_codebook * cb) {
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
377 int i;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
378 int ordered = 0;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
379
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
380 put_bits(pb, 24, 0x564342); //magic
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
381 put_bits(pb, 16, cb->ndimentions);
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
382 put_bits(pb, 24, cb->nentries);
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
383
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
384 for (i = 1; i < cb->nentries; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
385 if (cb->lens[i] < cb->lens[i-1]) break;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
386 if (i == cb->nentries)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
387 ordered = 1;
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
388
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
389 put_bits(pb, 1, ordered);
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
390 if (ordered) {
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
391 int len = cb->lens[0];
3851
a778f86c28e2 Original Commit: r49 | ods15 | 2006-09-23 12:52:21 +0300 (Sat, 23 Sep 2006) | 3 lines
ods15
parents: 3850
diff changeset
392 put_bits(pb, 5, len - 1);
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
393 i = 0;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
394 while (i < cb->nentries) {
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
395 int j;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
396 for (j = 0; j+i < cb->nentries; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
397 if (cb->lens[j+i] != len) break;
3823
41ad23b61a2c Original Commit: r17 | ods15 | 2006-09-22 12:28:28 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3822
diff changeset
398 put_bits(pb, ilog(cb->nentries - i), j);
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
399 i += j;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
400 len++;
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
401 }
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
402 } else {
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
403 int sparse = 0;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
404 for (i = 0; i < cb->nentries; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
405 if (!cb->lens[i]) break;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
406 if (i != cb->nentries)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
407 sparse = 1;
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
408 put_bits(pb, 1, sparse);
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
409
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
410 for (i = 0; i < cb->nentries; i++) {
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
411 if (sparse) put_bits(pb, 1, !!cb->lens[i]);
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
412 if (cb->lens[i]) put_bits(pb, 5, cb->lens[i] - 1);
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
413 }
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
414 }
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
415
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
416 put_bits(pb, 4, cb->lookup);
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
417 if (cb->lookup) {
3818
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
418 int tmp = cb_lookup_vals(cb->lookup, cb->ndimentions, cb->nentries);
6a737f2d852e Original Commit: r12 | ods15 | 2006-09-22 09:28:30 +0300 (Fri, 22 Sep 2006) | 5 lines
ods15
parents: 3817
diff changeset
419 int bits = ilog(cb->quantlist[0]);
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
420
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
421 for (i = 1; i < tmp; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
422 bits = FFMAX(bits, ilog(cb->quantlist[i]));
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
423
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
424 put_float(pb, cb->min);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
425 put_float(pb, cb->delta);
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
426
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
427 put_bits(pb, 4, bits - 1);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
428 put_bits(pb, 1, cb->seq_p);
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
429
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
430 for (i = 0; i < tmp; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
431 put_bits(pb, bits, cb->quantlist[i]);
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
432 }
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
433 }
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
434
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
435 static void put_floor_header(PutBitContext * pb, vorbis_enc_floor * fc) {
3814
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
436 int i;
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
437
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
438 put_bits(pb, 16, 1); // type, only floor1 is supported
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
439
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
440 put_bits(pb, 5, fc->partitions);
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
441
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
442 for (i = 0; i < fc->partitions; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
443 put_bits(pb, 4, fc->partition_to_class[i]);
3814
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
444
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
445 for (i = 0; i < fc->nclasses; i++) {
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
446 int j, books;
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
447
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
448 put_bits(pb, 3, fc->classes[i].dim - 1);
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
449 put_bits(pb, 2, fc->classes[i].subclass);
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
450
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
451 if (fc->classes[i].subclass)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
452 put_bits(pb, 8, fc->classes[i].masterbook);
3814
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
453
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
454 books = (1 << fc->classes[i].subclass);
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
455
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
456 for (j = 0; j < books; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
457 put_bits(pb, 8, fc->classes[i].books[j] + 1);
3814
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
458 }
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
459
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
460 put_bits(pb, 2, fc->multiplier - 1);
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
461 put_bits(pb, 4, fc->rangebits);
464eca766731 Original Commit: r8 | ods15 | 2006-09-17 09:43:38 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3813
diff changeset
462
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
463 for (i = 2; i < fc->values; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
464 put_bits(pb, fc->rangebits, fc->list[i].x);
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
465 }
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
466
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
467 static void put_residue_header(PutBitContext * pb, vorbis_enc_residue * rc) {
3815
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
468 int i;
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
469
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
470 put_bits(pb, 16, rc->type);
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
471
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
472 put_bits(pb, 24, rc->begin);
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
473 put_bits(pb, 24, rc->end);
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
474 put_bits(pb, 24, rc->partition_size - 1);
3838
6ccaab22c4d6 Original Commit: r35 | ods15 | 2006-09-22 18:53:22 +0300 (Fri, 22 Sep 2006) | 4 lines
ods15
parents: 3837
diff changeset
475 put_bits(pb, 6, rc->classifications - 1);
3815
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
476 put_bits(pb, 8, rc->classbook);
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
477
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
478 for (i = 0; i < rc->classifications; i++) {
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
479 int j, tmp = 0;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
480 for (j = 0; j < 8; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
481 tmp |= (rc->books[i][j] != -1) << j;
3815
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
482
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
483 put_bits(pb, 3, tmp & 7);
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
484 put_bits(pb, 1, tmp > 7);
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
485
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
486 if (tmp > 7)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
487 put_bits(pb, 5, tmp >> 3);
3815
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
488 }
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
489
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
490 for (i = 0; i < rc->classifications; i++) {
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
491 int j;
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
492 for (j = 0; j < 8; j++)
3856
5812c2d48dbd Original Commit: r55 | ods15 | 2006-09-24 13:54:43 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3855
diff changeset
493 if (rc->books[i][j] != -1)
3815
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
494 put_bits(pb, 8, rc->books[i][j]);
3fa081422f78 Original Commit: r9 | ods15 | 2006-09-17 18:56:41 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3814
diff changeset
495 }
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
496 }
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
497
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
498 static int put_main_header(vorbis_enc_context * venc, uint8_t ** out) {
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
499 int i;
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
500 PutBitContext pb;
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
501 uint8_t buffer[50000] = {0}, * p = buffer;
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
502 int buffer_len = sizeof buffer;
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
503 int len, hlens[3];
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
504
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
505 // identification header
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
506 init_put_bits(&pb, p, buffer_len);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
507 put_bits(&pb, 8, 1); //magic
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
508 for (i = 0; "vorbis"[i]; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
509 put_bits(&pb, 8, "vorbis"[i]);
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
510 put_bits(&pb, 32, 0); // version
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
511 put_bits(&pb, 8, venc->channels);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
512 put_bits(&pb, 32, venc->sample_rate);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
513 put_bits(&pb, 32, 0); // bitrate
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
514 put_bits(&pb, 32, 0); // bitrate
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
515 put_bits(&pb, 32, 0); // bitrate
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
516 put_bits(&pb, 4, venc->log2_blocksize[0]);
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
517 put_bits(&pb, 4, venc->log2_blocksize[1]);
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
518 put_bits(&pb, 1, 1); // framing
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
519
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
520 flush_put_bits(&pb);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
521 hlens[0] = (put_bits_count(&pb) + 7) / 8;
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
522 buffer_len -= hlens[0];
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
523 p += hlens[0];
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
524
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
525 // comment header
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
526 init_put_bits(&pb, p, buffer_len);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
527 put_bits(&pb, 8, 3); //magic
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
528 for (i = 0; "vorbis"[i]; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
529 put_bits(&pb, 8, "vorbis"[i]);
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
530 put_bits(&pb, 32, 0); // vendor length TODO
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
531 put_bits(&pb, 32, 0); // amount of comments
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
532 put_bits(&pb, 1, 1); // framing
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
533
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
534 flush_put_bits(&pb);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
535 hlens[1] = (put_bits_count(&pb) + 7) / 8;
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
536 buffer_len -= hlens[1];
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
537 p += hlens[1];
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
538
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
539 // setup header
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
540 init_put_bits(&pb, p, buffer_len);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
541 put_bits(&pb, 8, 5); //magic
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
542 for (i = 0; "vorbis"[i]; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
543 put_bits(&pb, 8, "vorbis"[i]);
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
544
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
545 // codebooks
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
546 put_bits(&pb, 8, venc->ncodebooks - 1);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
547 for (i = 0; i < venc->ncodebooks; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
548 put_codebook_header(&pb, &venc->codebooks[i]);
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
549
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
550 // time domain, reserved, zero
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
551 put_bits(&pb, 6, 0);
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
552 put_bits(&pb, 16, 0);
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
553
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
554 // floors
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
555 put_bits(&pb, 6, venc->nfloors - 1);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
556 for (i = 0; i < venc->nfloors; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
557 put_floor_header(&pb, &venc->floors[i]);
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
558
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
559 // residues
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
560 put_bits(&pb, 6, venc->nresidues - 1);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
561 for (i = 0; i < venc->nresidues; i++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
562 put_residue_header(&pb, &venc->residues[i]);
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
563
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
564 // mappings
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
565 put_bits(&pb, 6, venc->nmappings - 1);
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
566 for (i = 0; i < venc->nmappings; i++) {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
567 vorbis_enc_mapping * mc = &venc->mappings[i];
3816
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
568 int j;
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
569 put_bits(&pb, 16, 0); // mapping type
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
570
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
571 put_bits(&pb, 1, mc->submaps > 1);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
572 if (mc->submaps > 1)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
573 put_bits(&pb, 4, mc->submaps - 1);
3816
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
574
3870
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
575 put_bits(&pb, 1, !!mc->coupling_steps);
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
576 if (mc->coupling_steps) {
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
577 put_bits(&pb, 8, mc->coupling_steps - 1);
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
578 for (j = 0; j < mc->coupling_steps; j++) {
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
579 put_bits(&pb, ilog(venc->channels - 1), mc->magnitude[j]);
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
580 put_bits(&pb, ilog(venc->channels - 1), mc->angle[j]);
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
581 }
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
582 }
3816
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
583
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
584 put_bits(&pb, 2, 0); // reserved
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
585
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
586 if (mc->submaps > 1)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
587 for (j = 0; j < venc->channels; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
588 put_bits(&pb, 4, mc->mux[j]);
3816
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
589
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
590 for (j = 0; j < mc->submaps; j++) {
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
591 put_bits(&pb, 8, 0); // reserved time configuration
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
592 put_bits(&pb, 8, mc->floor[j]);
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
593 put_bits(&pb, 8, mc->residue[j]);
6eba53afa0b0 Original Commit: r10 | ods15 | 2006-09-17 19:37:17 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3815
diff changeset
594 }
3813
95b70f8bc29e Original Commit: r7 | ods15 | 2006-09-17 08:50:47 +0300 (Sun, 17 Sep 2006) | 2 lines
ods15
parents: 3812
diff changeset
595 }
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
596
3817
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
597 // modes
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
598 put_bits(&pb, 6, venc->nmodes - 1);
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
599 for (i = 0; i < venc->nmodes; i++) {
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
600 put_bits(&pb, 1, venc->modes[i].blockflag);
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
601 put_bits(&pb, 16, 0); // reserved window type
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
602 put_bits(&pb, 16, 0); // reserved transform type
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
603 put_bits(&pb, 8, venc->modes[i].mapping);
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
604 }
3ca15f0d4882 Original Commit: r11 | ods15 | 2006-09-17 19:41:28 +0300 (Sun, 17 Sep 2006) | 4 lines
ods15
parents: 3816
diff changeset
605
3836
ff31b13b57df Original Commit: r32 | ods15 | 2006-09-22 18:37:50 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3835
diff changeset
606 put_bits(&pb, 1, 1); // framing
ff31b13b57df Original Commit: r32 | ods15 | 2006-09-22 18:37:50 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3835
diff changeset
607
3811
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
608 flush_put_bits(&pb);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
609 hlens[2] = (put_bits_count(&pb) + 7) / 8;
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
610
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
611 len = hlens[0] + hlens[1] + hlens[2];
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
612 p = *out = av_mallocz(64 + len + len/255);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
613
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
614 *p++ = 2;
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
615 p += av_xiphlacing(p, hlens[0]);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
616 p += av_xiphlacing(p, hlens[1]);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
617 buffer_len = 0;
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
618 for (i = 0; i < 3; i++) {
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
619 memcpy(p, buffer + buffer_len, hlens[i]);
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
620 p += hlens[i];
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
621 buffer_len += hlens[i];
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
622 }
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
623
9f6acced986e Original Commit: r5 | ods15 | 2006-09-16 17:29:04 +0300 (Sat, 16 Sep 2006) | 4 lines
ods15
parents: 3810
diff changeset
624 return p - *out;
3810
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
625 }
a8bebf3e9cb7 Original Commit: r4 | ods15 | 2006-09-16 15:36:03 +0300 (Sat, 16 Sep 2006) | 3 lines
ods15
parents: 3809
diff changeset
626
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
627 static float get_floor_average(vorbis_enc_floor * fc, float * coeffs, int i) {
3890
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
628 int begin = fc->list[fc->list[FFMAX(i-1, 0)].sort].x;
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
629 int end = fc->list[fc->list[FFMIN(i+1, fc->values - 1)].sort].x;
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
630 int j;
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
631 float average = 0;
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
632
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
633 for (j = begin; j < end; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
634 average += fabs(coeffs[j]);
3890
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
635 return average / (end - begin);
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
636 }
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
637
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
638 static void floor_fit(vorbis_enc_context * venc, vorbis_enc_floor * fc, float * coeffs, uint_fast16_t * posts, int samples) {
3861
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
639 int range = 255 / fc->multiplier + 1;
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
640 int i;
3890
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
641 float tot_average = 0.;
3902
bd0cb21d956d Original Commit: r103 | ods15 | 2006-10-01 18:00:43 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3901
diff changeset
642 float averages[fc->values];
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
643 for (i = 0; i < fc->values; i++){
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
644 averages[i] = get_floor_average(fc, coeffs, i);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
645 tot_average += averages[i];
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
646 }
3890
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
647 tot_average /= fc->values;
3891
50e912426a32 Original Commit: r92 | ods15 | 2006-09-30 12:13:47 +0300 (Sat, 30 Sep 2006) | 3 lines
ods15
parents: 3890
diff changeset
648 tot_average /= venc->quality;
3890
de883494646e Original Commit: r91 | ods15 | 2006-09-30 10:05:16 +0300 (Sat, 30 Sep 2006) | 4 lines
ods15
parents: 3889
diff changeset
649
3861
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
650 for (i = 0; i < fc->values; i++) {
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
651 int position = fc->list[fc->list[i].sort].x;
3902
bd0cb21d956d Original Commit: r103 | ods15 | 2006-10-01 18:00:43 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3901
diff changeset
652 float average = averages[i];
3861
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
653 int j;
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
654
3911
a1b41e814052 Original Commit: r112 | ods15 | 2006-10-01 20:48:39 +0200 (Sun, 01 Oct 2006) | 3 lines
ods15
parents: 3910
diff changeset
655 average *= pow(tot_average / average, 0.5) * pow(1.25, position/200.); // MAGIC!
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
656 for (j = 0; j < range - 1; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
657 if (ff_vorbis_floor1_inverse_db_table[j * fc->multiplier] > average) break;
3861
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
658 posts[fc->list[i].sort] = j;
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
659 }
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
660 }
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
661
3863
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
662 static int render_point(int x0, int y0, int x1, int y1, int x) {
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
663 return y0 + (x - x0) * (y1 - y0) / (x1 - x0);
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
664 }
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
665
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
666 static void floor_encode(vorbis_enc_context * venc, vorbis_enc_floor * fc, PutBitContext * pb, uint_fast16_t * posts, float * floor, int samples) {
3860
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
667 int range = 255 / fc->multiplier + 1;
3863
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
668 int coded[fc->values]; // first 2 values are unused
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
669 int i, counter;
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
670
3860
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
671 put_bits(pb, 1, 1); // non zero
3863
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
672 put_bits(pb, ilog(range - 1), posts[0]);
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
673 put_bits(pb, ilog(range - 1), posts[1]);
3887
71ba8e680704 Original Commit: r87 | ods15 | 2006-09-29 21:10:05 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3886
diff changeset
674 coded[0] = coded[1] = 1;
3863
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
675
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
676 for (i = 2; i < fc->values; i++) {
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
677 int predicted = render_point(fc->list[fc->list[i].low].x,
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
678 posts[fc->list[i].low],
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
679 fc->list[fc->list[i].high].x,
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
680 posts[fc->list[i].high],
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
681 fc->list[i].x);
3865
04d496813135 Original Commit: r65 | ods15 | 2006-09-25 18:40:19 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3864
diff changeset
682 int highroom = range - predicted;
3863
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
683 int lowroom = predicted;
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
684 int room = FFMIN(highroom, lowroom);
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
685 if (predicted == posts[i]) {
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
686 coded[i] = 0; // must be used later as flag!
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
687 continue;
3864
df84b5d1a8c2 Original Commit: r64 | ods15 | 2006-09-25 18:39:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3863
diff changeset
688 } else {
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
689 if (!coded[fc->list[i].low ]) coded[fc->list[i].low ] = -1;
3864
df84b5d1a8c2 Original Commit: r64 | ods15 | 2006-09-25 18:39:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3863
diff changeset
690 if (!coded[fc->list[i].high]) coded[fc->list[i].high] = -1;
3863
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
691 }
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
692 if (posts[i] > predicted) {
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
693 if (posts[i] - predicted > room)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
694 coded[i] = posts[i] - predicted + lowroom;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
695 else
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
696 coded[i] = (posts[i] - predicted) << 1;
3863
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
697 } else {
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
698 if (predicted - posts[i] > room)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
699 coded[i] = predicted - posts[i] + highroom - 1;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
700 else
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
701 coded[i] = ((predicted - posts[i]) << 1) - 1;
3863
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
702 }
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
703 }
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
704
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
705 counter = 2;
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
706 for (i = 0; i < fc->partitions; i++) {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
707 vorbis_enc_floor_class * c = &fc->classes[fc->partition_to_class[i]];
3874
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
708 int k, cval = 0, csub = 1<<c->subclass;
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
709 if (c->subclass) {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
710 vorbis_enc_codebook * book = &venc->codebooks[c->masterbook];
3874
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
711 int cshift = 0;
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
712 for (k = 0; k < c->dim; k++) {
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
713 int l;
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
714 for (l = 0; l < csub; l++) {
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
715 int maxval = 1;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
716 if (c->books[l] != -1)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
717 maxval = venc->codebooks[c->books[l]].nentries;
5127
4dbe6578f811 misc spelling fixes
diego
parents: 4498
diff changeset
718 // coded could be -1, but this still works, cause that is 0
3874
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
719 if (coded[counter + k] < maxval) break;
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
720 }
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
721 assert(l != csub);
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
722 cval |= l << cshift;
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
723 cshift += c->subclass;
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
724 }
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
725 put_codeword(pb, book, cval);
3874
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
726 }
3860
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
727 for (k = 0; k < c->dim; k++) {
3877
00623377043e Original Commit: r77 | ods15 | 2006-09-29 15:12:56 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3876
diff changeset
728 int book = c->books[cval & (csub-1)];
3863
2c8d1cadd86e Original Commit: r63 | ods15 | 2006-09-25 13:51:44 +0300 (Mon, 25 Sep 2006) | 3 lines
ods15
parents: 3862
diff changeset
729 int entry = coded[counter++];
3874
84890fea8074 Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3873
diff changeset
730 cval >>= c->subclass;
3877
00623377043e Original Commit: r77 | ods15 | 2006-09-29 15:12:56 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3876
diff changeset
731 if (book == -1) continue;
3864
df84b5d1a8c2 Original Commit: r64 | ods15 | 2006-09-25 18:39:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3863
diff changeset
732 if (entry == -1) entry = 0;
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
733 put_codeword(pb, &venc->codebooks[book], entry);
3860
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
734 }
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
735 }
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
736
3910
aada0ac47451 Original Commit: r111 | ods15 | 2006-10-01 19:40:50 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3909
diff changeset
737 ff_vorbis_floor1_render_list(fc->list, fc->values, posts, coded, fc->multiplier, floor, samples);
3860
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
738 }
be0344cea4ea Original Commit: r60 | ods15 | 2006-09-25 12:46:30 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3859
diff changeset
739
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
740 static float * put_vector(vorbis_enc_codebook * book, PutBitContext * pb, float * num) {
3908
045c650f0951 Original Commit: r109 | ods15 | 2006-10-01 19:14:52 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3907
diff changeset
741 int i, entry = -1;
045c650f0951 Original Commit: r109 | ods15 | 2006-10-01 19:14:52 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3907
diff changeset
742 float distance = FLT_MAX;
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
743 assert(book->dimentions);
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
744 for (i = 0; i < book->nentries; i++) {
3908
045c650f0951 Original Commit: r109 | ods15 | 2006-10-01 19:14:52 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3907
diff changeset
745 float * vec = book->dimentions + i * book->ndimentions, d = book->pow2[i];
3858
70b4bc721531 Original Commit: r58 | ods15 | 2006-09-24 17:35:28 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3857
diff changeset
746 int j;
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
747 if (!book->lens[i]) continue;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
748 for (j = 0; j < book->ndimentions; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
749 d -= vec[j] * num[j];
3908
045c650f0951 Original Commit: r109 | ods15 | 2006-10-01 19:14:52 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3907
diff changeset
750 if (distance > d) {
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
751 entry = i;
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
752 distance = d;
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
753 }
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
754 }
3899
c3e90a13ff29 Original Commit: r100 | ods15 | 2006-10-01 14:01:27 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3898
diff changeset
755 put_codeword(pb, book, entry);
3858
70b4bc721531 Original Commit: r58 | ods15 | 2006-09-24 17:35:28 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3857
diff changeset
756 return &book->dimentions[entry * book->ndimentions];
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
757 }
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
758
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
759 static void residue_encode(vorbis_enc_context * venc, vorbis_enc_residue * rc, PutBitContext * pb, float * coeffs, int samples, int real_ch) {
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
760 int pass, i, j, p, k;
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
761 int psize = rc->partition_size;
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
762 int partitions = (rc->end - rc->begin) / psize;
3882
6c03e983f866 Original Commit: r82 | ods15 | 2006-09-29 21:03:43 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3881
diff changeset
763 int channels = (rc->type == 2) ? 1 : real_ch;
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
764 int classes[channels][partitions];
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
765 int classwords = venc->codebooks[rc->classbook].ndimentions;
3871
7fffd3ab056a Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3870
diff changeset
766
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
767 assert(rc->type == 2);
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
768 assert(real_ch == 2);
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
769 for (p = 0; p < partitions; p++) {
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
770 float max1 = 0., max2 = 0.;
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
771 int s = rc->begin + p * psize;
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
772 for (k = s; k < s + psize; k += 2) {
3903
7a57a82cfa10 Original Commit: r104 | ods15 | 2006-10-01 18:04:08 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3902
diff changeset
773 max1 = FFMAX(max1, fabs(coeffs[ k / real_ch]));
7a57a82cfa10 Original Commit: r104 | ods15 | 2006-10-01 18:04:08 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3902
diff changeset
774 max2 = FFMAX(max2, fabs(coeffs[samples + k / real_ch]));
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
775 }
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
776
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
777 for (i = 0; i < rc->classifications - 1; i++) {
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
778 if (max1 < rc->maxes[i][0] && max2 < rc->maxes[i][1]) break;
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
779 }
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
780 classes[0][p] = i;
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
781 }
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
782
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
783 for (pass = 0; pass < 8; pass++) {
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
784 p = 0;
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
785 while (p < partitions) {
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
786 if (pass == 0)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
787 for (j = 0; j < channels; j++) {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
788 vorbis_enc_codebook * book = &venc->codebooks[rc->classbook];
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
789 int entry = 0;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
790 for (i = 0; i < classwords; i++) {
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
791 entry *= rc->classifications;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
792 entry += classes[j][p + i];
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
793 }
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
794 put_codeword(pb, book, entry);
3881
b272797e8149 Original Commit: r81 | ods15 | 2006-09-29 21:02:09 +0300 (Fri, 29 Sep 2006) | 2 lines
ods15
parents: 3880
diff changeset
795 }
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
796 for (i = 0; i < classwords && p < partitions; i++, p++) {
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
797 for (j = 0; j < channels; j++) {
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
798 int nbook = rc->books[classes[j][p]][pass];
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
799 vorbis_enc_codebook * book = &venc->codebooks[nbook];
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
800 float * buf = coeffs + samples*j + rc->begin + p*psize;
3856
5812c2d48dbd Original Commit: r55 | ods15 | 2006-09-24 13:54:43 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3855
diff changeset
801 if (nbook == -1) continue;
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
802
3871
7fffd3ab056a Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3870
diff changeset
803 assert(rc->type == 0 || rc->type == 2);
3858
70b4bc721531 Original Commit: r58 | ods15 | 2006-09-24 17:35:28 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3857
diff changeset
804 assert(!(psize % book->ndimentions));
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
805
3871
7fffd3ab056a Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3870
diff changeset
806 if (rc->type == 0) {
3872
9f99e471bf72 Original Commit: r72 | ods15 | 2006-09-28 21:00:47 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3871
diff changeset
807 for (k = 0; k < psize; k += book->ndimentions) {
9f99e471bf72 Original Commit: r72 | ods15 | 2006-09-28 21:00:47 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3871
diff changeset
808 float * a = put_vector(book, pb, &buf[k]);
9f99e471bf72 Original Commit: r72 | ods15 | 2006-09-28 21:00:47 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3871
diff changeset
809 int l;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
810 for (l = 0; l < book->ndimentions; l++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
811 buf[k + l] -= a[l];
3872
9f99e471bf72 Original Commit: r72 | ods15 | 2006-09-28 21:00:47 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3871
diff changeset
812 }
3871
7fffd3ab056a Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3870
diff changeset
813 } else {
3907
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
814 int s = rc->begin + p * psize, a1, b1;
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
815 a1 = (s % real_ch) * samples;
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
816 b1 = s / real_ch;
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
817 s = real_ch * samples;
3871
7fffd3ab056a Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3870
diff changeset
818 for (k = 0; k < psize; k += book->ndimentions) {
3907
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
819 int dim, a2 = a1, b2 = b1;
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
820 float vec[book->ndimentions], * pv = vec;
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
821 for (dim = book->ndimentions; dim--; ) {
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
822 *pv++ = coeffs[a2 + b2];
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
823 if ((a2 += samples) == s) {
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
824 a2=0;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
825 b2++;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
826 }
3907
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
827 }
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
828 pv = put_vector(book, pb, vec);
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
829 for (dim = book->ndimentions; dim--; ) {
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
830 coeffs[a1 + b1] -= *pv++;
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
831 if ((a1 += samples) == s) {
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
832 a1=0;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
833 b1++;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
834 }
3907
5f5525341673 Original Commit: r108 | ods15 | 2006-10-01 18:46:06 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3906
diff changeset
835 }
3871
7fffd3ab056a Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3870
diff changeset
836 }
7fffd3ab056a Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3870
diff changeset
837 }
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
838 }
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
839 }
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
840 }
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
841 }
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
842 }
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
843
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
844 static int apply_window_and_mdct(vorbis_enc_context * venc, signed short * audio, int samples) {
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
845 int i, j, channel;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
846 const float * win = venc->win[0];
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
847 int window_len = 1 << (venc->log2_blocksize[0] - 1);
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
848 float n = (float)(1 << venc->log2_blocksize[0]) / 4.;
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
849 // FIXME use dsp
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
850
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
851 if (!venc->have_saved && !samples) return 0;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
852
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
853 if (venc->have_saved) {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
854 for (channel = 0; channel < venc->channels; channel++) {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
855 memcpy(venc->samples + channel*window_len*2, venc->saved + channel*window_len, sizeof(float)*window_len);
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
856 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
857 } else {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
858 for (channel = 0; channel < venc->channels; channel++) {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
859 memset(venc->samples + channel*window_len*2, 0, sizeof(float)*window_len);
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
860 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
861 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
862
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
863 if (samples) {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
864 for (channel = 0; channel < venc->channels; channel++) {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
865 float * offset = venc->samples + channel*window_len*2 + window_len;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
866 j = channel;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
867 for (i = 0; i < samples; i++, j += venc->channels)
4498
2832b65bd37e vorbis suffers from the same sign flip issue as wma (so this lame workaround, though it arguably doesnt matter much where the sign is fliped back)
michael
parents: 3947
diff changeset
868 offset[i] = -audio[j] / 32768. / n * win[window_len - i - 1]; //FIXME find out why the sign has to be fliped
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
869 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
870 } else {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
871 for (channel = 0; channel < venc->channels; channel++) {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
872 memset(venc->samples + channel*window_len*2 + window_len, 0, sizeof(float)*window_len);
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
873 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
874 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
875
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
876 for (channel = 0; channel < venc->channels; channel++) {
7546
97383e012cb9 remove mdct tmp buffer
lorenm
parents: 7451
diff changeset
877 ff_mdct_calc(&venc->mdct[0], venc->coeffs + channel*window_len, venc->samples + channel*window_len*2);
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
878 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
879
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
880 if (samples) {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
881 for (channel = 0; channel < venc->channels; channel++) {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
882 float * offset = venc->saved + channel*window_len;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
883 j = channel;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
884 for (i = 0; i < samples; i++, j += venc->channels)
4498
2832b65bd37e vorbis suffers from the same sign flip issue as wma (so this lame workaround, though it arguably doesnt matter much where the sign is fliped back)
michael
parents: 3947
diff changeset
885 offset[i] = -audio[j] / 32768. / n * win[i]; //FIXME find out why the sign has to be fliped
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
886 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
887 venc->have_saved = 1;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
888 } else {
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
889 venc->have_saved = 0;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
890 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
891 return 1;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
892 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
893
6517
48759bfbd073 Apply 'cold' attribute to init/uninit functions in libavcodec
zuxy
parents: 5215
diff changeset
894 static av_cold int vorbis_encode_init(AVCodecContext * avccontext)
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
895 {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
896 vorbis_enc_context * venc = avccontext->priv_data;
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
897
3906
5ae5224790d3 Original Commit: r107 | ods15 | 2006-10-01 18:13:12 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3905
diff changeset
898 if (avccontext->channels != 2) {
5ae5224790d3 Original Commit: r107 | ods15 | 2006-10-01 18:13:12 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3905
diff changeset
899 av_log(avccontext, AV_LOG_ERROR, "Current FFmpeg Vorbis encoder only supports 2 channels.\n");
5ae5224790d3 Original Commit: r107 | ods15 | 2006-10-01 18:13:12 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3905
diff changeset
900 return -1;
5ae5224790d3 Original Commit: r107 | ods15 | 2006-10-01 18:13:12 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3905
diff changeset
901 }
3896
46ab70354691 Original Commit: r97 | ods15 | 2006-09-30 23:32:19 +0300 (Sat, 30 Sep 2006) | 2 lines
ods15
parents: 3895
diff changeset
902
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
903 create_vorbis_context(venc, avccontext);
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
904
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
905 if (avccontext->flags & CODEC_FLAG_QSCALE)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
906 venc->quality = avccontext->global_quality / (float)FF_QP2LAMBDA / 10.;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
907 else
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
908 venc->quality = 1.;
3911
a1b41e814052 Original Commit: r112 | ods15 | 2006-10-01 20:48:39 +0200 (Sun, 01 Oct 2006) | 3 lines
ods15
parents: 3910
diff changeset
909 venc->quality *= venc->quality;
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
910
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
911 avccontext->extradata_size = put_main_header(venc, (uint8_t**)&avccontext->extradata);
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
912
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
913 avccontext->frame_size = 1 << (venc->log2_blocksize[0] - 1);
3859
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
914
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
915 avccontext->coded_frame = avcodec_alloc_frame();
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
916 avccontext->coded_frame->key_frame = 1;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
917
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
918 return 0;
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
919 }
0d0bd4b2baef Original Commit: r59 | ods15 | 2006-09-24 17:40:40 +0300 (Sun, 24 Sep 2006) | 2 lines
ods15
parents: 3858
diff changeset
920
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
921 static int vorbis_encode_frame(AVCodecContext * avccontext, unsigned char * packets, int buf_size, void *data)
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
922 {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
923 vorbis_enc_context * venc = avccontext->priv_data;
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
924 signed short * audio = data;
3833
d4c01d85fb46 Original Commit: r27 | ods15 | 2006-09-22 14:19:51 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3832
diff changeset
925 int samples = data ? avccontext->frame_size : 0;
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
926 vorbis_enc_mode * mode;
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
927 vorbis_enc_mapping * mapping;
3839
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
928 PutBitContext pb;
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
929 int i;
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
930
3905
557b95209664 Original Commit: r106 | ods15 | 2006-10-01 18:11:55 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3904
diff changeset
931 if (!apply_window_and_mdct(venc, audio, samples)) return 0;
3913
f2204277a928 Original Commit: r114 | ods15 | 2006-10-01 21:38:37 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3912
diff changeset
932 samples = 1 << (venc->log2_blocksize[0] - 1);
3842
5f8cfa1a6fdb Original Commit: r39 | ods15 | 2006-09-23 09:36:11 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3841
diff changeset
933
3839
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
934 init_put_bits(&pb, packets, buf_size);
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
935
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
936 put_bits(&pb, 1, 0); // magic bit
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
937
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
938 put_bits(&pb, ilog(venc->nmodes - 1), 0); // 0 bits, the mode
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
939
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
940 mode = &venc->modes[0];
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
941 mapping = &venc->mappings[mode->mapping];
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
942 if (mode->blockflag) {
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
943 put_bits(&pb, 1, 0);
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
944 put_bits(&pb, 1, 0);
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
945 }
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
946
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
947 for (i = 0; i < venc->channels; i++) {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
948 vorbis_enc_floor * fc = &venc->floors[mapping->floor[mapping->mux[i]]];
3910
aada0ac47451 Original Commit: r111 | ods15 | 2006-10-01 19:40:50 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3909
diff changeset
949 uint_fast16_t posts[fc->values];
3861
b98ea563e9bc Original Commit: r61 | ods15 | 2006-09-25 13:10:56 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3860
diff changeset
950 floor_fit(venc, fc, &venc->coeffs[i * samples], posts, samples);
3862
ee9379fc77a9 Original Commit: r62 | ods15 | 2006-09-25 13:12:07 +0300 (Mon, 25 Sep 2006) | 2 lines
ods15
parents: 3861
diff changeset
951 floor_encode(venc, fc, &pb, posts, &venc->floor[i * samples], samples);
3839
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
952 }
c5ec6d7710ba Original Commit: r36 | ods15 | 2006-09-23 08:43:09 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3838
diff changeset
953
3909
3cac42cde8ea Original Commit: r110 | ods15 | 2006-10-01 19:17:32 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3908
diff changeset
954 for (i = 0; i < venc->channels * samples; i++) {
3cac42cde8ea Original Commit: r110 | ods15 | 2006-10-01 19:17:32 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3908
diff changeset
955 venc->coeffs[i] /= venc->floor[i];
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
956 }
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
957
3870
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
958 for (i = 0; i < mapping->coupling_steps; i++) {
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
959 float * mag = venc->coeffs + mapping->magnitude[i] * samples;
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
960 float * ang = venc->coeffs + mapping->angle[i] * samples;
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
961 int j;
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
962 for (j = 0; j < samples; j++) {
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
963 float a = ang[j];
3904
24e73ad62e40 Original Commit: r105 | ods15 | 2006-10-01 18:09:55 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3903
diff changeset
964 ang[j] -= mag[j];
24e73ad62e40 Original Commit: r105 | ods15 | 2006-10-01 18:09:55 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3903
diff changeset
965 if (mag[j] > 0) ang[j] = -ang[j];
24e73ad62e40 Original Commit: r105 | ods15 | 2006-10-01 18:09:55 +0200 (Sun, 01 Oct 2006) | 2 lines
ods15
parents: 3903
diff changeset
966 if (ang[j] < 0) mag[j] = a;
3870
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
967 }
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
968 }
986fb3b8fe60 Original Commit: r70 | ods15 | 2006-09-28 19:07:36 +0300 (Thu, 28 Sep 2006) | 2 lines
ods15
parents: 3869
diff changeset
969
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
970 residue_encode(venc, &venc->residues[mapping->residue[mapping->mux[0]]], &pb, venc->coeffs, samples, venc->channels);
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
971
7838
88f4153caa21 vorbis_enc : set coded_frame->pts value to running sample count.
jai_menon
parents: 7546
diff changeset
972 avccontext->coded_frame->pts = venc->sample_count;
88f4153caa21 vorbis_enc : set coded_frame->pts value to running sample count.
jai_menon
parents: 7546
diff changeset
973 venc->sample_count += avccontext->frame_size;
3895
a9d7e965d24f Original Commit: r96 | ods15 | 2006-09-30 23:25:18 +0300 (Sat, 30 Sep 2006) | 2 lines
ods15
parents: 3894
diff changeset
974 flush_put_bits(&pb);
3844
bffe869bc19c Original Commit: r41 | ods15 | 2006-09-23 10:52:34 +0300 (Sat, 23 Sep 2006) | 4 lines
ods15
parents: 3843
diff changeset
975 return (put_bits_count(&pb) + 7) / 8;
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
976 }
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
977
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
978
6517
48759bfbd073 Apply 'cold' attribute to init/uninit functions in libavcodec
zuxy
parents: 5215
diff changeset
979 static av_cold int vorbis_encode_close(AVCodecContext * avccontext)
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
980 {
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
981 vorbis_enc_context * venc = avccontext->priv_data;
3831
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
982 int i;
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
983
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
984 if (venc->codebooks)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
985 for (i = 0; i < venc->ncodebooks; i++) {
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
986 av_freep(&venc->codebooks[i].lens);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
987 av_freep(&venc->codebooks[i].codewords);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
988 av_freep(&venc->codebooks[i].quantlist);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
989 av_freep(&venc->codebooks[i].dimentions);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
990 av_freep(&venc->codebooks[i].pow2);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
991 }
3831
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
992 av_freep(&venc->codebooks);
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
993
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
994 if (venc->floors)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
995 for (i = 0; i < venc->nfloors; i++) {
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
996 int j;
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
997 if (venc->floors[i].classes)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
998 for (j = 0; j < venc->floors[i].nclasses; j++)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
999 av_freep(&venc->floors[i].classes[j].books);
3918
56c8e3ab7fe0 10l, wrong order in freeing
ods15
parents: 3917
diff changeset
1000 av_freep(&venc->floors[i].classes);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1001 av_freep(&venc->floors[i].partition_to_class);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1002 av_freep(&venc->floors[i].list);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1003 }
3831
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
1004 av_freep(&venc->floors);
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
1005
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1006 if (venc->residues)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1007 for (i = 0; i < venc->nresidues; i++) {
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1008 av_freep(&venc->residues[i].books);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1009 av_freep(&venc->residues[i].maxes);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1010 }
3831
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
1011 av_freep(&venc->residues);
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
1012
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1013 if (venc->mappings)
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1014 for (i = 0; i < venc->nmappings; i++) {
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1015 av_freep(&venc->mappings[i].mux);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1016 av_freep(&venc->mappings[i].floor);
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1017 av_freep(&venc->mappings[i].residue);
3919
b0b88fc01b7c more forgotten free's.
ods15
parents: 3918
diff changeset
1018 av_freep(&venc->mappings[i].magnitude);
b0b88fc01b7c more forgotten free's.
ods15
parents: 3918
diff changeset
1019 av_freep(&venc->mappings[i].angle);
3917
62849ae93c2b slightly saner indention
michael
parents: 3915
diff changeset
1020 }
3831
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
1021 av_freep(&venc->mappings);
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
1022
7d27ba61600e Original Commit: r25 | ods15 | 2006-09-22 14:06:04 +0300 (Fri, 22 Sep 2006) | 2 lines
ods15
parents: 3830
diff changeset
1023 av_freep(&venc->modes);
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1024
3841
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
1025 av_freep(&venc->saved);
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
1026 av_freep(&venc->samples);
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
1027 av_freep(&venc->floor);
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
1028 av_freep(&venc->coeffs);
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
1029
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
1030 ff_mdct_end(&venc->mdct[0]);
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
1031 ff_mdct_end(&venc->mdct[1]);
6591b55f6482 Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines
ods15
parents: 3840
diff changeset
1032
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1033 av_freep(&avccontext->coded_frame);
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1034 av_freep(&avccontext->extradata);
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1035
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1036 return 0 ;
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1037 }
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1038
7131
7b8fba44fe9d revert accidental const slipping in
stefang
parents: 7129
diff changeset
1039 AVCodec vorbis_encoder = {
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1040 "vorbis",
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1041 CODEC_TYPE_AUDIO,
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1042 CODEC_ID_VORBIS,
8306
ddecbc18fe94 Rename all vorbis encoder related typedefs to not use _t for POSIX compatibility
ods15
parents: 8042
diff changeset
1043 sizeof(vorbis_enc_context),
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1044 vorbis_encode_init,
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1045 vorbis_encode_frame,
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1046 vorbis_encode_close,
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1047 .capabilities= CODEC_CAP_DELAY,
7451
85ab7655ad4d Modify all codecs to report their supported input and output sample format(s).
pross
parents: 7131
diff changeset
1048 .sample_fmts = (enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
7040
e943e1409077 Make AVCodec long_names definition conditional depending on CONFIG_SMALL.
stefano
parents: 6710
diff changeset
1049 .long_name = NULL_IF_CONFIG_SMALL("Vorbis"),
3808
5551768b5a4f skeleton for vorbis_enc.c
ods15
parents:
diff changeset
1050 };