Skip to content

Commit 2b27700

Browse files
authored
Make libaom encoder diagnostics null-safe (AOMediaCodec#3125)
1 parent a33b3ad commit 2b27700

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/codec_aom.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -510,12 +510,13 @@ static avifBool avifProcessAOMOptionsPostInit(avifCodec * codec, avifBool alpha)
510510
key += shortPrefixLen;
511511
}
512512
if (aom_codec_set_option(&codec->internal->encoder, key, entry->value) != AOM_CODEC_OK) {
513+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
513514
avifDiagnosticsPrintf(codec->diag,
514515
"aom_codec_set_option(\"%s\", \"%s\") failed: %s: %s",
515516
key,
516517
entry->value,
517518
aom_codec_error(&codec->internal->encoder),
518-
aom_codec_error_detail(&codec->internal->encoder));
519+
error_detail ? error_detail : "no error detail");
519520
return AVIF_FALSE;
520521
}
521522
#else // !defined(HAVE_AOM_CODEC_SET_OPTION)
@@ -973,10 +974,11 @@ static avifResult aomCodecEncodeImage(avifCodec * codec,
973974
encoderFlags |= AOM_CODEC_USE_HIGHBITDEPTH;
974975
}
975976
if (aom_codec_enc_init(&codec->internal->encoder, encoderInterface, cfg, encoderFlags) != AOM_CODEC_OK) {
977+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
976978
avifDiagnosticsPrintf(codec->diag,
977979
"aom_codec_enc_init() failed: %s: %s",
978980
aom_codec_error(&codec->internal->encoder),
979-
aom_codec_error_detail(&codec->internal->encoder));
981+
error_detail ? error_detail : "no error detail");
980982
return AVIF_RESULT_UNKNOWN_ERROR;
981983
}
982984
codec->internal->encoderInitialized = AVIF_TRUE;
@@ -1127,10 +1129,11 @@ static avifResult aomCodecEncodeImage(avifCodec * codec,
11271129
if (quantizerUpdated || dimensionsChanged) {
11281130
aom_codec_err_t err = aom_codec_enc_config_set(&codec->internal->encoder, cfg);
11291131
if (err != AOM_CODEC_OK) {
1132+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
11301133
avifDiagnosticsPrintf(codec->diag,
11311134
"aom_codec_enc_config_set() failed: %s: %s",
11321135
aom_codec_error(&codec->internal->encoder),
1133-
aom_codec_error_detail(&codec->internal->encoder));
1136+
error_detail ? error_detail : "no error detail");
11341137
return AVIF_RESULT_UNKNOWN_ERROR;
11351138
}
11361139
}
@@ -1302,10 +1305,11 @@ static avifResult aomCodecEncodeImage(avifCodec * codec,
13021305
aom_img_free(&aomImage);
13031306
}
13041307
if (encodeErr != AOM_CODEC_OK) {
1308+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
13051309
avifDiagnosticsPrintf(codec->diag,
13061310
"aom_codec_encode() failed: %s: %s",
13071311
aom_codec_error(&codec->internal->encoder),
1308-
aom_codec_error_detail(&codec->internal->encoder));
1312+
error_detail ? error_detail : "no error detail");
13091313
return AVIF_RESULT_UNKNOWN_ERROR;
13101314
}
13111315

@@ -1346,10 +1350,11 @@ static avifBool aomCodecEncodeFinish(avifCodec * codec, avifCodecEncodeOutput *
13461350
for (;;) {
13471351
// flush encoder
13481352
if (aom_codec_encode(&codec->internal->encoder, NULL, 0, 1, 0) != AOM_CODEC_OK) {
1353+
const char * error_detail = aom_codec_error_detail(&codec->internal->encoder);
13491354
avifDiagnosticsPrintf(codec->diag,
13501355
"aom_codec_encode() with img=NULL failed: %s: %s",
13511356
aom_codec_error(&codec->internal->encoder),
1352-
aom_codec_error_detail(&codec->internal->encoder));
1357+
error_detail ? error_detail : "no error detail");
13531358
return AVIF_FALSE;
13541359
}
13551360

0 commit comments

Comments
 (0)