avformat/iamf_writer: ensure the stream groups are not empty
authorJames Almer <[email protected]>
Fri, 27 Dec 2024 19:17:51 +0000 (16:17 -0300)
committerJames Almer <[email protected]>
Fri, 28 Feb 2025 19:24:33 +0000 (16:24 -0300)
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit cedd9151f863e3db9c325aff2f9375c39adbbec2)

libavformat/iamf_writer.c

index b4874806e4306eaac045a78d1fad8559e84d61ea..7dfe658bf9b179950cbca2d7c9260fbf57bdcec4 100644 (file)
@@ -217,6 +217,10 @@ int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void
 
     if (stg->type != AV_STREAM_GROUP_PARAMS_IAMF_AUDIO_ELEMENT)
         return AVERROR(EINVAL);
+    if (!stg->nb_streams) {
+        av_log(log_ctx, AV_LOG_ERROR, "Audio Element id %"PRId64" has no streams\n", stg->id);
+        return AVERROR(EINVAL);
+    }
 
     iamf_audio_element = stg->params.iamf_audio_element;
     if (iamf_audio_element->audio_element_type == AV_IAMF_AUDIO_ELEMENT_TYPE_SCENE) {
@@ -381,6 +385,10 @@ int ff_iamf_add_mix_presentation(IAMFContext *iamf, const AVStreamGroup *stg, vo
 
     if (stg->type != AV_STREAM_GROUP_PARAMS_IAMF_MIX_PRESENTATION)
         return AVERROR(EINVAL);
+    if (!stg->nb_streams) {
+        av_log(log_ctx, AV_LOG_ERROR, "Mix Presentation id %"PRId64" has no streams\n", stg->id);
+        return AVERROR(EINVAL);
+    }
 
     for (int i = 0; i < iamf->nb_mix_presentations; i++) {
         if (stg->id == iamf->mix_presentations[i]->mix_presentation_id) {