[Ffmpeg-devel] [PATCH] Vorbis Encoder

Michael Niedermayer michaelni
Sun Oct 1 21:19:56 CEST 2006


Hi

On Sun, Oct 01, 2006 at 07:42:39PM +0200, Oded Shimon wrote:
> On Sun, Oct 01, 2006 at 05:43:47PM +0200, Michael Niedermayer wrote:
> > On Sun, Oct 01, 2006 at 02:04:59PM +0200, Oded Shimon wrote:
> > >     lx = 0;
> > >     ly = posts[0] * fc->multiplier; // sorted 0 is still 0
> > >     for (i = 1; i < fc->values; i++) {
> > >         int pos = fc->list[i].sort;
> > >         if (coded[pos]) {
> > >             render_line(lx, ly, fc->list[pos].x, posts[pos] * fc->multiplier, floor, samples);
> > >             lx = fc->list[pos].x;
> > >             ly = posts[pos] * fc->multiplier;
> > >         }
> > >         if (lx >= samples) break;
> > >     }
> > >     if (lx < samples) render_line(lx, ly, samples, ly, floor, samples);
> > 
> > this looks duplicated from the end of vorbis_floor1_decode()
> 
> fixed
> 
> ...
> 
> anything else? :)

regression tests, rate distortion optimal encoding, suport for making coffee


[...]
> typedef struct {
>     int channels;
>     int sample_rate;
>     int blocksize[2]; // in (1<<n) format

doxgen incompatible use ///< or another compatible one
id also change the name to log2_blocksize or change what is stored in it


[...]
>         for (j = 0; j < cb->nentries; j++) {
>             float a;
>             if (!cb->lens[j]) continue;
>             a = fabs(cb->dimentions[j * cb->ndimentions]);
>             if (a > rc->maxes[i][0]) rc->maxes[i][0] = a;
>             a = fabs(cb->dimentions[j * cb->ndimentions + 1]);
>             if (a > rc->maxes[i][1]) rc->maxes[i][1] = a;
>         }

maybe use FFMAX() but it still is unreadable then ...


[...]
>         cb->ndimentions = cvectors[book].dim;
>         cb->nentries = cvectors[book].real_len;
>         cb->min = cvectors[book].min;
>         cb->delta = cvectors[book].delta;
>         cb->lookup = cvectors[book].lookup;

following looks better IMHO (just a suggestion)
         cb->ndimentions = cvectors[book].dim;
         cb->nentries    = cvectors[book].real_len;
         cb->min         = cvectors[book].min;
         cb->delta       = cvectors[book].delta;
         cb->lookup      = cvectors[book].lookup;

btw, would you mind if i or someone else does such cosmetic changes after
the code is in ffmpeg-svn?
what about indenting it sanely like
for()
    if()
        statement;

instead of
for() if() statement;
?


[...]
>     // just 1 floor
>     fc = &venc->floors[0];
>     fc->partitions = 8;
>     fc->partition_to_class = av_malloc(sizeof(int) * fc->partitions);
>     fc->nclasses = 0;
>     for (i = 0; i < fc->partitions; i++) {
>         int a[] = {0,1,2,2,3,3,4,4};

static const


>         fc->partition_to_class[i] = a[i];
>         fc->nclasses = FFMAX(fc->nclasses, fc->partition_to_class[i]);
>     }
>     fc->nclasses++;
>     fc->classes = av_malloc(sizeof(floor_class_t) * fc->nclasses);
>     for (i = 0; i < fc->nclasses; i++) {
>         floor_class_t * c = &fc->classes[i];
>         int j, books;
>         int dim[] = {3,4,3,4,3};
>         int subclass[] = {0,1,1,2,2};
>         int masterbook[] = {0/*none*/,0,1,2,3};
>         int * nbooks[] = {
>             (int[]){ 4 },
>             (int[]){ 5, 6 },
>             (int[]){ 7, 8 },
>             (int[]){ -1, 9, 10, 11 },
>             (int[]){ -1, 12, 13, 14 },
>         };

static const


except these iam ok with seeing this applied to svn, it still needs
some cleanup work but that can be done in ffmpeg-svn

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

In the past you could go to a library and read, borrow or copy any book
Today you'd get arrested for mere telling someone where the library is




More information about the ffmpeg-devel mailing list