History

avformat/argo_cvg: Avoid relocations for ArgoCVGOverride

The average length of the strings used here does not differ much from the length of the longest string; therefore it makes sense to use an array big enough for the longest string and not a pointer to a string. This also moves this array into .rodata (from .data.rel.ro).

Andreas Rheinhardt committed 2 years ago

Commit aa8c7dc1 parent 69b85a61 file · +26 −12Browse files

Unified · Split

libavformat/argo_cvg.c+26−12
@@ -47,13 +47,6 @@ typedef struct ArgoCVGHeader { · 46 unmodified lines
4747 uint32_t reverb; /*< Reverb flag. */
4848 } ArgoCVGHeader;
4949
50−typedef struct ArgoCVGOverride {
51− const char *name;
52− ArgoCVGHeader header;
53− uint32_t checksum;
54− int sample_rate;
55−} ArgoCVGOverride;
56−
5750 typedef struct ArgoCVGDemuxContext {
5851 ArgoCVGHeader header;
5952 uint32_t checksum;
@@ -72,12 +65,33 @@ typedef struct ArgoCVGMuxContext { · 12 unmodified lines
7265
7366 #if CONFIG_ARGO_CVG_DEMUXER
7467 /* "Special" files that are played at a different rate. */
68+// FILE(NAME, SIZE, LOOP, REVERB, CHECKSUM, SAMPLE_RATE)
69+#define OVERRIDE_FILES(FILE) \
70+ FILE(CRYS, 23592, 0, 1, 2495499, 88200) /* Beta */ \
71+ FILE(REDCRY88, 38280, 0, 1, 4134848, 88200) /* Beta */ \
72+ FILE(DANLOOP1, 54744, 1, 0, 5684641, 37800) /* Beta */ \
73+ FILE(PICKUP88, 12904, 0, 1, 1348091, 48000) /* Beta */ \
74+ FILE(SELECT1, 5080, 0, 1, 549987, 44100) /* Beta */ \
75+
76+#define MAX_FILENAME_SIZE(NAME, SIZE, LOOP, REVERB, CHECKSUM, SAMPLE_RATE) \
77+ MAX_SIZE_BEFORE_ ## NAME, \
78+ MAX_SIZE_UNTIL_ ## NAME ## _MINUS1 = FFMAX(sizeof(#NAME ".CVG"), MAX_SIZE_BEFORE_ ## NAME) - 1,
79+enum {
80+ OVERRIDE_FILES(MAX_FILENAME_SIZE)
81+ MAX_OVERRIDE_FILENAME_SIZE
82+};
83+
84+typedef struct ArgoCVGOverride {
85+ const char name[MAX_OVERRIDE_FILENAME_SIZE];
86+ ArgoCVGHeader header;
87+ uint32_t checksum;
88+ int sample_rate;
89+} ArgoCVGOverride;
90+
91+#define FILE(NAME, SIZE, LOOP, REVERB, CHECKSUM, SAMPLE_RATE) \
92+ { #NAME ".CVG", { SIZE, LOOP, REVERB }, CHECKSUM, SAMPLE_RATE },
7593 static const ArgoCVGOverride overrides[] = {
76− { "CRYS.CVG", { 23592, 0, 1 }, 2495499, 88200 }, /* Beta */
77− { "REDCRY88.CVG", { 38280, 0, 1 }, 4134848, 88200 }, /* Beta */
78− { "DANLOOP1.CVG", { 54744, 1, 0 }, 5684641, 37800 }, /* Beta */
79− { "PICKUP88.CVG", { 12904, 0, 1 }, 1348091, 48000 }, /* Beta */
80− { "SELECT1.CVG", { 5080, 0, 1 }, 549987, 44100 }, /* Beta */
94+ OVERRIDE_FILES(FILE)
8195 };
8296
8397 static int argo_cvg_probe(const AVProbeData *p)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t