avformat/iamf_parse: fix setting duration for the last subblock in a parameter definition

When subblock durations are constant, the last block may be smaller and the
value needs to be calculated.

Signed-off-by: James Almer <jamrial@gmail.com>
pull/391/head
James Almer 2 months ago
parent d38fc25519
commit fb5e8ea971
  1. 3
      libavformat/iamf_parse.c
  2. 3
      libavformat/iamf_reader.c

@ -539,7 +539,8 @@ static int param_parse(void *s, IAMFContext *c, AVIOContext *pb,
if (constant_subblock_duration == 0) {
subblock_duration = ffio_read_leb(pb);
total_duration += subblock_duration;
}
} else if (i == nb_subblocks - 1)
subblock_duration = duration - i * constant_subblock_duration;
switch (type) {
case AV_IAMF_PARAMETER_DEFINITION_MIX_GAIN: {

@ -178,7 +178,8 @@ static int parameter_block_obu(AVFormatContext *s, IAMFDemuxContext *c,
if (!param_definition->mode && !constant_subblock_duration) {
subblock_duration = ffio_read_leb(pb);
total_duration += subblock_duration;
}
} else if (i == nb_subblocks - 1)
subblock_duration = duration - i * constant_subblock_duration;
switch (param->type) {
case AV_IAMF_PARAMETER_DEFINITION_MIX_GAIN: {

Loading…
Cancel
Save