[FFmpeg-devel] [PATCH] reduce global data in lavc

Stefan Gehrer stefan.gehrer
Tue Jun 24 20:27:50 CEST 2008


Hi,

attached patch marks tables as const if they are. It contains
changes which I think are obvious like e.g.

-static uint8_t last_coeff[3] = {
+static const uint8_t last_coeff[3] = {

but some which change tables of pointers to declare that
the pointed to value also is constant, e.g.

-static const int16_t *coeff_tables[32] = {
+static const int16_t *const coeff_tables[32] = {

I found that only if the pointers and the places
they point to are declared as const will the table
be placed into the .rodata section instead of the
.data section, tested with gcc 4.3.2.
Is such a change desired?

After this patch, there are still global variables around
which I would categorize as the following:

1. run-length tables that I think can be avoided by using
   INIT_VLC_STATIC, but I haven't looked closely.
   These can be found in the following files:

   msmpeg4data.o (rl_table, mv_tables, wmv2_inter_table)
   mpeg12data.o  (ff_rl_mpeg1, ff_rl_mpeg2)
   h263.o        (rl_inter, rl_intra_aic, rl_intra,
                  rvlc_rl_inter, rvlc_rl_intra)
   h261dec.o     (h261_rl_tcoeff)

2. temporary space for compound literals in many files

3. ModeAlphabet in vp3.c, which is written to and thus
   should be moved to the context

4. The global *_encoder/_decoder/_parser/_bsf structures.
   I guess they could also be read-only?

If janitorial work on any of those four categories is desired,
please let me know.

Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: moreconst.diff
Type: text/x-diff
Size: 20483 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080624/9ed750f6/attachment.diff>



More information about the ffmpeg-devel mailing list