46 fprintf(stderr,
"amrgen: %s: %s\n",
path, strerror(errno));
54 for (
i = n - 1;
i >= 0;
i--) {
67 for (
i = 0;
i < n;
i++) {
68 if (
value & (1u << (n - 1 -
i)))
76 static const uint8_t lag0[] = { 23, 22, 21, 20, 19, 18, 43, 42 };
77 static const uint8_t gain0[] = { 54, 55, 40, 41, 24, 25, 26, 27 };
78 static const uint8_t gain2[] = { 44, 45, 46, 47, 36, 37, 38, 39 };
79 uint8_t
frame[13] = { 0x04 };
91 uint8_t
frame[6] = { 0x44 };
107 uint8_t toc = q ? 0x7c : 0x78;
109 if (fwrite(&toc, 1, 1,
f) != 1)
118 if (fwrite(&toc, 1, 1,
f) != 1)
124 uint8_t
frame[6] = { 0x4c };
128 for (
i = 0;
i < 3;
i++)
141 FILE *
f = fopen(
path,
"wb");
157 for (
i = 0;
i < 8;
i++)
160 for (
i = 0;
i < 4;
i++)
163 for (
i = 0;
i < 4;
i++)
165 for (
i = 0;
i < 8;
i++)
178 for (
i = 0;
i < 8;
i++)
181 for (
i = 0;
i < 4;
i++)
184 for (
i = 0;
i < 4;
i++)
186 for (
i = 0;
i < 4;
i++)
200 for (
i = 0;
i < 8;
i++)
203 for (
i = 0;
i < 8;
i++)
206 for (
i = 0;
i < 8;
i++)
209 for (
i = 0;
i < 8;
i++)
222 for (
i = 0;
i < 8;
i++)
226 for (
i = 0;
i < 4;
i++)
228 for (
i = 0;
i < 4;
i++)
243 for (
i = 0;
i < 11;
i++)
246 for (
i = 0;
i < 51;
i++)
248 for (
i = 0;
i < 2;
i++)
261 for (
i = 0;
i < 10;
i++)
272 fprintf(stderr,
"usage: amrgen <output.amr>\n");
276 base = strrchr(argv[1],
'/');
279 if (!strcmp(
base,
"amrnb-sid-update.amr"))
281 else if (!strcmp(
base,
"amrnb-state-resume-update.amr"))
283 else if (!strcmp(
base,
"amrnb-nodata-cases.amr"))
285 else if (!strcmp(
base,
"amrnb-nodata-qswap-q0.amr"))
287 else if (!strcmp(
base,
"amrnb-sid-after-nodata.amr"))
289 else if (!strcmp(
base,
"amrnb-dtx-mute-resume.amr"))
291 else if (!strcmp(
base,
"amrwb-dtx.amr"))
294 fprintf(stderr,
"amrgen: unknown stream '%s'\n",
base);
static av_always_inline void update(AVFilterContext *ctx, AVFrame *insamples, int is_silence, int current_sample, int64_t nb_samples_notify, AVRational time_base)
static void write_nb_speech(FILE *f)
static void gen_mute_resume(const char *path)
static void die(const char *path)
static void write_nb_sid(FILE *f, int energy, int update)
static void put_msb(uint8_t *data, int *pos, int n, unsigned value)
static void gen_nodata(const char *path, int q1_at_first)
static void gen_wb(const char *path)
static void write_wb_sid(FILE *f, int energy)
static void gen_sid_update(const char *path)
static void set_lsb_field(uint8_t *data, const uint8_t *bits, int n, unsigned value)
static void write_reserved(FILE *f)
static void gen_state_resume(const char *path)
static void gen_sid_after_nodata(const char *path)
static void write_nodata(FILE *f, int q)
static FILE * open_out(const char *path, const char *header)
#define i(width, name, range_min, range_max)
#define bit(string, value)
static const uint8_t bits[8]
static const uint8_t header[24]