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
47 uint32_t reverb; /*< Reverb flag. */47 uint32_t reverb; /*< Reverb flag. */
48} ArgoCVGHeader;48} ArgoCVGHeader;
49 49
50typedef struct ArgoCVGOverride {
51 const char *name;
52 ArgoCVGHeader header;
53 uint32_t checksum;
54 int sample_rate;
55} ArgoCVGOverride;
56
57typedef struct ArgoCVGDemuxContext {50typedef struct ArgoCVGDemuxContext {
58 ArgoCVGHeader header;51 ArgoCVGHeader header;
59 uint32_t checksum;52 uint32_t checksum;
@@ -72,12 +65,33 @@ typedef struct ArgoCVGMuxContext { · 12 unmodified lines
72 65
73#if CONFIG_ARGO_CVG_DEMUXER66#if CONFIG_ARGO_CVG_DEMUXER
74/* "Special" files that are played at a different rate. */67/* "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,
79enum {
80 OVERRIDE_FILES(MAX_FILENAME_SIZE)
81 MAX_OVERRIDE_FILENAME_SIZE
82};
83
84typedef 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 },
75static const ArgoCVGOverride overrides[] = {93static const ArgoCVGOverride overrides[] = {
76 { "CRYS.CVG", { 23592, 0, 1 }, 2495499, 88200 }, /* Beta */94 OVERRIDE_FILES(FILE)
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 */
81};95};
82 96
83static int argo_cvg_probe(const AVProbeData *p)97static 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