[FFmpeg-cvslog] r18637 - trunk/libavcodec/rv34.c
Kostya
kostya.shishkov
Tue Apr 21 19:28:39 CEST 2009
On Tue, Apr 21, 2009 at 05:15:40PM +0100, M?ns Rullg?rd wrote:
> kostya <subversion at mplayerhq.hu> writes:
>
> > Author: kostya
> > Date: Tue Apr 21 06:42:27 2009
> > New Revision: 18637
> >
> > Log:
> > Make RV3/4 VLC tables use new static initialization method
> >
> > Modified:
> > trunk/libavcodec/rv34.c
> >
> > [...]
> >
> > +static const VLC_TYPE table_data[117592][2];
>
> That is a HUGE array. Is this really good for the cache?
> Furthermore, it's const, and ...
>
> > @@ -92,10 +117,12 @@ static void rv34_gen_vlc(const uint8_t *
> > for(i = 0; i < realsize; i++)
> > cw[i] = codes[bits2[i]]++;
> >
> > + vlc->table = &table_data[table_offs[num]];
>
> ... here pointers into it are assigned to non-const pointers, ...
>
> > + vlc->table_allocated = table_offs[num + 1] - table_offs[num];
> > init_vlc_sparse(vlc, FFMIN(maxbits, 9), realsize,
> > bits2, 1, 1,
> > cw, 2, 2,
> > - syms, 2, 2, INIT_VLC_USE_STATIC);
> > + syms, 2, 2, INIT_VLC_USE_NEW_STATIC);
>
> ... and written to here.
>
> GCC, for some reason, allocates this array in the .bss section. Other
> compilers (armcc and icc) make it read-only, as they should, resulting
> in a crash at runtime.
Oops. Will drop const modifier.
> --
> M?ns Rullg?rd
> mans at mansr.com
More information about the ffmpeg-cvslog
mailing list