Skip to content

Commit 0c01186

Browse files
committed
codec_avm.c: Removed unneeded code for options
All versions of AVM that we need to support have the aom_codec_set_option() function. Remove the code that assumes aom_codec_set_option() is not present. This also fixes a bug in avifProcessAOMOptionsPostInit() that incorrectly concatenates the two conditionally-compiled pieces of code when the file was copied from codec_aom.c and the HAVE_AOM_CODEC_SET_OPTION macro was removed.
1 parent e3604a7 commit 0c01186

File tree

1 file changed

+0
-110
lines changed

1 file changed

+0
-110
lines changed

src/codec_avm.c

Lines changed: 0 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -271,32 +271,6 @@ static aom_img_fmt_t avifImageCalcAOMFmt(const avifImage * image, avifBool alpha
271271
return fmt;
272272
}
273273

274-
static avifBool aomOptionParseInt(const char * str, int * val)
275-
{
276-
char * endptr;
277-
const long rawval = strtol(str, &endptr, 10);
278-
279-
if (str[0] != '\0' && endptr[0] == '\0' && rawval >= INT_MIN && rawval <= INT_MAX) {
280-
*val = (int)rawval;
281-
return AVIF_TRUE;
282-
}
283-
284-
return AVIF_FALSE;
285-
}
286-
287-
static avifBool aomOptionParseUInt(const char * str, unsigned int * val)
288-
{
289-
char * endptr;
290-
const unsigned long rawval = strtoul(str, &endptr, 10);
291-
292-
if (str[0] != '\0' && endptr[0] == '\0' && rawval <= UINT_MAX) {
293-
*val = (unsigned int)rawval;
294-
return AVIF_TRUE;
295-
}
296-
297-
return AVIF_FALSE;
298-
}
299-
300274
struct aomOptionEnumList
301275
{
302276
const char * name;
@@ -367,50 +341,6 @@ static avifBool avifProcessAOMOptionsPreInit(avifCodec * codec, avifBool alpha,
367341
return AVIF_TRUE;
368342
}
369343

370-
typedef enum
371-
{
372-
AVIF_AOM_OPTION_NUL = 0,
373-
AVIF_AOM_OPTION_STR,
374-
AVIF_AOM_OPTION_INT,
375-
AVIF_AOM_OPTION_UINT,
376-
AVIF_AOM_OPTION_ENUM,
377-
} aomOptionType;
378-
379-
struct aomOptionDef
380-
{
381-
const char * name;
382-
int controlId;
383-
aomOptionType type;
384-
// If type is AVIF_AOM_OPTION_ENUM, this must be set. Otherwise should be NULL.
385-
const struct aomOptionEnumList * enums;
386-
};
387-
388-
static const struct aomOptionEnumList tuningEnum[] = { //
389-
{ "psnr", AOM_TUNE_PSNR }, //
390-
{ "ssim", AOM_TUNE_SSIM }, //
391-
{ NULL, 0 }
392-
};
393-
394-
static const struct aomOptionDef aomOptionDefs[] = {
395-
// Adaptive quantization mode
396-
{ "aq-mode", AV1E_SET_AQ_MODE, AVIF_AOM_OPTION_UINT, NULL },
397-
// Constant/Constrained Quality level
398-
{ "qp-level", AOME_SET_QP, AVIF_AOM_OPTION_UINT, NULL },
399-
// Enable delta quantization in chroma planes
400-
{ "enable-chroma-deltaq", AV1E_SET_ENABLE_CHROMA_DELTAQ, AVIF_AOM_OPTION_INT, NULL },
401-
// Bias towards block sharpness in rate-distortion optimization of transform coefficients
402-
{ "sharpness", AOME_SET_SHARPNESS, AVIF_AOM_OPTION_UINT, NULL },
403-
// Tune distortion metric
404-
{ "tune", AOME_SET_TUNING, AVIF_AOM_OPTION_ENUM, tuningEnum },
405-
// Film grain test vector
406-
{ "film-grain-test", AV1E_SET_FILM_GRAIN_TEST_VECTOR, AVIF_AOM_OPTION_INT, NULL },
407-
// Film grain table file
408-
{ "film-grain-table", AV1E_SET_FILM_GRAIN_TABLE, AVIF_AOM_OPTION_STR, NULL },
409-
410-
// Sentinel
411-
{ NULL, 0, AVIF_AOM_OPTION_NUL, NULL }
412-
};
413-
414344
static avifBool avifProcessAOMOptionsPostInit(avifCodec * codec, avifBool alpha)
415345
{
416346
for (uint32_t i = 0; i < codec->csOptions->count; ++i) {
@@ -451,46 +381,6 @@ static avifBool avifProcessAOMOptionsPostInit(avifCodec * codec, avifBool alpha)
451381
if (!strcmp(key, "tune")) {
452382
codec->internal->tuningSet = AVIF_TRUE;
453383
}
454-
455-
avifBool match = AVIF_FALSE;
456-
for (int j = 0; aomOptionDefs[j].name; ++j) {
457-
if (avifKeyEqualsName(entry->key, aomOptionDefs[j].name, alpha)) {
458-
match = AVIF_TRUE;
459-
avifBool success = AVIF_FALSE;
460-
int valInt;
461-
unsigned int valUInt;
462-
switch (aomOptionDefs[j].type) {
463-
case AVIF_AOM_OPTION_NUL:
464-
success = AVIF_FALSE;
465-
break;
466-
case AVIF_AOM_OPTION_STR:
467-
success = aom_codec_control(&codec->internal->encoder, aomOptionDefs[j].controlId, entry->value) == AOM_CODEC_OK;
468-
break;
469-
case AVIF_AOM_OPTION_INT:
470-
success = aomOptionParseInt(entry->value, &valInt) &&
471-
aom_codec_control(&codec->internal->encoder, aomOptionDefs[j].controlId, valInt) == AOM_CODEC_OK;
472-
break;
473-
case AVIF_AOM_OPTION_UINT:
474-
success = aomOptionParseUInt(entry->value, &valUInt) &&
475-
aom_codec_control(&codec->internal->encoder, aomOptionDefs[j].controlId, valUInt) == AOM_CODEC_OK;
476-
break;
477-
case AVIF_AOM_OPTION_ENUM:
478-
success = aomOptionParseEnum(entry->value, aomOptionDefs[j].enums, &valInt) &&
479-
aom_codec_control(&codec->internal->encoder, aomOptionDefs[j].controlId, valInt) == AOM_CODEC_OK;
480-
break;
481-
}
482-
if (!success) {
483-
return AVIF_FALSE;
484-
}
485-
if (aomOptionDefs[j].controlId == AOME_SET_TUNING) {
486-
codec->internal->tuningSet = AVIF_TRUE;
487-
}
488-
break;
489-
}
490-
}
491-
if (!match) {
492-
return AVIF_FALSE;
493-
}
494384
}
495385
return AVIF_TRUE;
496386
}

0 commit comments

Comments
 (0)