No issue - relax ctts flag checking in media/libstagefright

Some encoders will set ctts flags incorrectly (similar to version) resulting in
libstagefright aborting playback of media based on the media header.
(Looking at you, Twitter)
This change relaxes libstagefright's checking to pass ctts flags 0 or 1 and
falls through to actually trying to decoding the file.
This commit is contained in:
Moonchild 2022-05-26 21:23:06 +00:00 committed by roytam1
commit 2f81312755

View file

@ -385,6 +385,7 @@ status_t SampleTable::setTimeToSampleParams(
// contains signed values, however some software creates version 0 files that
// contain signed values, so we're always treating the values as signed,
// regardless of version.
// We do the same with ctts flags to work around encoder software issues.
status_t SampleTable::setCompositionTimeToSampleParams(
off64_t data_offset, size_t data_size) {
ALOGV("There are reordered frames present.");
@ -406,8 +407,8 @@ status_t SampleTable::setCompositionTimeToSampleParams(
uint32_t version = flags >> 24;
flags &= 0xffffff;
if ((version != 0 && version != 1) || flags != 0) {
// Expected version = 0 or 1, flags = 0.
if ((version != 0 && version != 1) || (flags != 0 && flags != 1)) {
// Expected version = 0 or 1, flags = 0 or 1.
return ERROR_MALFORMED;
}