ffmpeg | branch: release/7.0 | James Almer <jamr...@gmail.com> | Wed Dec 11 
23:34:32 2024 -0300| [70ae846c71f4daaf8f89927ba24845773edcce1f] | committer: 
James Almer

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 <jamr...@gmail.com>
(cherry picked from commit fb5e8ea9719c8afcd0d9e3a51e370c06c361d9ba)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=70ae846c71f4daaf8f89927ba24845773edcce1f
---

 libavformat/iamf_parse.c  | 3 ++-
 libavformat/iamf_reader.c | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavformat/iamf_parse.c b/libavformat/iamf_parse.c
index 8d952cf203..2497061d7a 100644
--- a/libavformat/iamf_parse.c
+++ b/libavformat/iamf_parse.c
@@ -536,7 +536,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: {
diff --git a/libavformat/iamf_reader.c b/libavformat/iamf_reader.c
index b43ed76df4..02e8b694d7 100644
--- a/libavformat/iamf_reader.c
+++ b/libavformat/iamf_reader.c
@@ -177,7 +177,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: {

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to