[FFmpeg-soc] [soc]: r2719 - nellyenc/nellymoserenc.c

Reimar Döffinger Reimar.Doeffinger at stud.uni-karlsruhe.de
Mon Jul 7 22:55:16 CEST 2008


Hello,
On Mon, Jul 07, 2008 at 10:21:38PM +0200, Bartlomiej Wolowiec wrote:
> On poniedziałek, 7 lipca 2008, Robert Swain wrote:
> > 2008/7/7 bwolowiec <subversion at mplayerhq.hu>:
> > > Author: bwolowiec
> > > Date: Mon Jul  7 16:41:50 2008
> > > New Revision: 2719
> > >
> > > Log:
> > > use ff_sine_window_init
> > >
> > >
> > > Modified:
> > >   nellyenc/nellymoserenc.c
> > >
> > > Modified: nellyenc/nellymoserenc.c
> > > =========================================================================
> > >===== --- nellyenc/nellymoserenc.c    (original)
> > > +++ nellyenc/nellymoserenc.c    Mon Jul  7 16:41:50 2008
> > > @@ -116,10 +116,13 @@ static av_cold int encode_init(AVCodecCo
> > >     dsputil_init(&s->dsp, avctx);
> > >
> > >     /* Generate overlap window */
> > > -    if (!sine_window[0])
> > > -        for (i=0 ; i<256; i++) {
> > > -            sine_window[i] = sin((i + 0.5) / 256.0 * M_PI) /8;
> > > +    if (!sine_window[0]){
> > > +        ff_sine_window_init(sine_window, 128);
> > > +        for (i=0; i<128; i++) {
> > > +            sine_window[i] /= 8.0;
> >
> > This isn't thread safe. You must merge the /8 into some other calculation.
> 
> Hmm.. yes, you're right. Unfortunately, I don't see now where it can be 
> calculated. If I don't calculate it in init I will have to calculate it 
> additionally in every encode_tag, it isn't a good idea.  Maybe it's better to 
> use previous version and don't use ff_sine_window_init...? or maybe (in my 
> opinion a bit unnatural) such a solution: 
> ff_sine_window_init(tmp_sine_window, 128);
> for (i=0; i<128; i++) {
>   sine_window[i] = tmp_sine_window[i] / 8.0;
>   sine_window[255-i] = sine_window[i];
> }

Just use your original code on some per-thread buffer (stack or heap
depending on size) and then memcpy it over.

Greetings,
Reimar Döffinger



More information about the FFmpeg-soc mailing list