m4a-dec: return error_code + break on decoding error

This commit is contained in:
Dima 2019-08-01 15:10:21 +03:00 committed by Martin Storsjo
parent baad462a03
commit 7bcf0d3d55
1 changed files with 7 additions and 2 deletions

View File

@ -40,6 +40,7 @@ int main(int argc, char *argv[]) {
AAC_DECODER_ERROR err;
unsigned frame_size = 0, i;
UINT input_length;
int status = 0;
if (argc < 3) {
fprintf(stderr, "%s in.m4a out.wav\n", argv[0]);
return 1;
@ -104,6 +105,7 @@ int main(int argc, char *argv[]) {
err = aacDecoder_Fill(handle, &pkt.data, &input_length, &valid);
if (err != AAC_DEC_OK) {
fprintf(stderr, "Fill failed: %x\n", err);
status = 1;
break;
}
err = aacDecoder_DecodeFrame(handle, decode_buf, output_size / sizeof(INT_PCM), 0);
@ -112,12 +114,14 @@ int main(int argc, char *argv[]) {
continue;
if (err != AAC_DEC_OK) {
fprintf(stderr, "Decode failed: %x\n", err);
continue;
status = 1;
break;
}
if (!wav) {
CStreamInfo *info = aacDecoder_GetStreamInfo(handle);
if (!info || info->sampleRate <= 0) {
fprintf(stderr, "No stream info\n");
status = 1;
break;
}
frame_size = info->frameSize * info->numChannels;
@ -125,6 +129,7 @@ int main(int argc, char *argv[]) {
wav = wav_write_open(outfile, info->sampleRate, 16, info->numChannels);
if (!wav) {
perror(outfile);
status = 1;
break;
}
}
@ -141,6 +146,6 @@ int main(int argc, char *argv[]) {
if (wav)
wav_write_close(wav);
aacDecoder_Close(handle);
return 0;
return status;
}