A value of zero indicates a corrupt mp4 file or a missing mdhd
atom. This is fatal because we need to divide by the time scale to
compute the duration of the audio track.
This patch modifies mp4_open_read() to check the value at open time
and fail the operation rather than allowing the open to succeed and
checking the value in mp4_get_duration(),
Only regular opens are affected since we don't look at the mdhd atom
for metadata opens.
ret = -E_MP4_BAD_SAMPLE_COUNT;
if (f->track.stsz_sample_count == 0)
goto fail;
+ ret = -E_MP4_CORRUPT;
+ if (f->track.time_scale == 0)
+ goto fail;
*result = f;
return 1;
fail:
{
const struct mp4_track *t = &f->track;
- if (t->time_scale == 0)
- return 0;
return t->duration * 1000 / t->time_scale;
}