[FFmpeg-devel] [PATCH] AAC Encoder, Round 2
Michael Niedermayer
michaelni
Sun Aug 24 18:45:58 CEST 2008
On Sun, Aug 24, 2008 at 06:44:07PM +0300, Kostya wrote:
> On Sun, Aug 24, 2008 at 04:10:12PM +0200, Michael Niedermayer wrote:
[...]
>
> > >
> > > > except that, i think the previous reviews have not been dealt with yet.
> > > > That is the various suggestions for quality improvment should be tried
> > > > what is better should be adopted
> > > > Also everything that Gabriel Bouvign suggested should be tried.
> > >
> > > Err, when I find a way to download them. $20 for three-page paper is a bit
> > > high to me.
> >
> > forget the papers, implement what does not depend on pay per view paper
> > IIRC he said something about scalefactors and 3gpp as well.
>
> He did, but that also influences psy model interface (see below).
Anyway i suggest that you read some of the RD papers about video coding
(even if you read the audio related ones)
>
> > >
> > > > I do not mind if we leave some of the harder things like viterbi based window
> > > > decission to after svn ci, but the majority of the things suggested should
> > > > be tried before the code is commited.
> > >
> > > Comment on interface then or propose your own.
> > > It will be needed to plug any psychoacoustic model.
> > > Also it would allow to finish encoder faster and then concentrate on
> > > model(s).
> >
> > The split between psy and encoder is odd to say at least.
> >
> > things psy can provide IMHO
> > * find perceptual weights per band or per coefficient used for RD
> > * find the perceptual distortion between 2 time domain signals
> > * find the perceptual distortion between 2 freq domain signals, possibly
> > just a single band or coeff
>
> Since Gabriel recommended exactly that model, I've tried to implement it in least
> intrusive way. As you demand highest possible quality, let's discuss how it should
> be done.
>
> My proposition (everybody uses slightly different terms, so I may get something wrong):
> 0. Initialize everything
of course ...
> 1. Perform some input filtering (lowpass, highpass, stereo attenuation, whatever)
Its debateable in how far this should be here or seperate and outside of the
encoder.
> 2. Model decides window type (well, in distant future it can be 'undecided' and encoder
> will try both)
> 3. Encoder performs windowing and MDCT (and grouping?)
i dont think grouping can be done at this point, at least not optimally.
> 4. Model calculates perceptual entropy and thresholds
> 5. Ratecontrol module in encoder uses them to produce final thresholds
> 5.1 maybe it will call psy model to calculate perceptual distortion for the band
> 6. Encoder quantizes input with scalefactors
> 7. Encoder determines and encodes band info and coefficients
> 8. Fetch next frame and goto step 1 unless it was the last frame
>
> Any ideas/suggestions/patches?
Iam not sure, this is quite vague
A few points that are IMO important
* decissions must NOT be bundled into psy models, that is when we implement
3 differnt heuristics to choose the MDCT/window size they must be choosable
independant of the remaining unrelated psy model, this also applies to
things like stereo attenution coeffs, the way low/highpass cutoff is
choosen and so on ...
* The primary goal is highest quality encoding, anything that would make
achiving this goal harder will be rejected.
* coeff quantization and scalefactors must be decided based on RD.
Its perfectly fine to support faster alternatives in addition ...
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Observe your enemies, for they first find out your faults. -- Antisthenes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080824/af7245cd/attachment.pgp>
More information about the ffmpeg-devel
mailing list