From: Zhao Zhili <quinkblack@foxmail.com>
To: ffmpeg-devel@ffmpeg.org
Cc: Zhao Zhili <quinkblack@foxmail.com>
Subject: [FFmpeg-devel] [PATCH 09/10] avformat/hls: do error check in add_renditions_to_variant
Date: Tue, 12 Apr 2022 16:15:21 +0800
Message-ID: <tencent_15DD29024EA1A54E13048842B3ED336A7505@qq.com> (raw)
In-Reply-To: <20220412081522.43246-1-quinkblack@foxmail.com>
---
libavformat/hls.c | 49 +++++++++++++++++++++++++++++++++--------------
1 file changed, 35 insertions(+), 14 deletions(-)
diff --git a/libavformat/hls.c b/libavformat/hls.c
index b9e2e8a04d..c102e36f52 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -1666,9 +1666,10 @@ reload:
goto restart;
}
-static void add_renditions_to_variant(HLSContext *c, struct variant *var,
- enum AVMediaType type, const char *group_id)
+static int add_renditions_to_variant(HLSContext *c, struct variant *var,
+ enum AVMediaType type, const char *group_id)
{
+ int ret;
int i;
for (i = 0; i < c->n_renditions; i++) {
@@ -1676,18 +1677,26 @@ static void add_renditions_to_variant(HLSContext *c, struct variant *var,
if (rend->type == type && !strcmp(rend->group_id, group_id)) {
- if (rend->playlist)
+ if (rend->playlist) {
/* rendition is an external playlist
* => add the playlist to the variant */
- dynarray_add(&var->playlists, &var->n_playlists, rend->playlist);
- else
+ ret = av_dynarray_add_nofree(&var->playlists, &var->n_playlists,
+ rend->playlist);
+ if (ret < 0)
+ return ret;
+ } else {
/* rendition is part of the variant main Media Playlist
* => add the rendition to the main Media Playlist */
- dynarray_add(&var->playlists[0]->renditions,
- &var->playlists[0]->n_renditions,
- rend);
+ ret = av_dynarray_add_nofree(&var->playlists[0]->renditions,
+ &var->playlists[0]->n_renditions,
+ rend);
+ if (ret < 0)
+ return ret;
+ }
}
}
+
+ return 0;
}
static void add_metadata_from_renditions(AVFormatContext *s, struct playlist *pls,
@@ -1987,12 +1996,24 @@ static int hls_read_header(AVFormatContext *s)
for (i = 0; i < c->n_variants; i++) {
struct variant *var = c->variants[i];
- if (var->audio_group[0])
- add_renditions_to_variant(c, var, AVMEDIA_TYPE_AUDIO, var->audio_group);
- if (var->video_group[0])
- add_renditions_to_variant(c, var, AVMEDIA_TYPE_VIDEO, var->video_group);
- if (var->subtitles_group[0])
- add_renditions_to_variant(c, var, AVMEDIA_TYPE_SUBTITLE, var->subtitles_group);
+ if (var->audio_group[0]) {
+ ret = add_renditions_to_variant(c, var, AVMEDIA_TYPE_AUDIO,
+ var->audio_group);
+ if (ret < 0)
+ return ret;
+ }
+ if (var->video_group[0]) {
+ ret = add_renditions_to_variant(c, var, AVMEDIA_TYPE_VIDEO,
+ var->video_group);
+ if (ret < 0)
+ return ret;
+ }
+ if (var->subtitles_group[0]) {
+ ret = add_renditions_to_variant(c, var, AVMEDIA_TYPE_SUBTITLE,
+ var->subtitles_group);
+ if (ret < 0)
+ return ret;
+ }
}
/* Create a program for each variant */
--
2.31.1
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-04-12 8:17 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20220412081522.43246-1-quinkblack@foxmail.com>
2022-04-12 8:15 ` [FFmpeg-devel] [PATCH 02/10] avformat/hls: fix leak of init section when dynarray_add fail Zhao Zhili
2022-04-12 8:15 ` [FFmpeg-devel] [PATCH 03/10] avformat/hls: extract free_playlist method Zhao Zhili
2022-04-12 8:15 ` [FFmpeg-devel] [PATCH 04/10] avformat/hls: fix leak of playlist when dynarray_add fail Zhao Zhili
2022-04-12 8:15 ` [FFmpeg-devel] [PATCH 05/10] avformat/hls: fix leak of variant " Zhao Zhili
2022-04-12 8:42 ` Steven Liu
2022-04-12 8:56 ` "zhilizhao(赵志立)"
2022-04-12 8:15 ` [FFmpeg-devel] [PATCH 06/10] avformat/hls: fix leak of rendition " Zhao Zhili
2022-04-12 8:15 ` [FFmpeg-devel] [PATCH 07/10] avformat/hls: extract free_segment method Zhao Zhili
2022-04-12 8:15 ` [FFmpeg-devel] [PATCH 08/10] avformat/hls: fix leak of segments when dynarray_add fail Zhao Zhili
2022-04-12 8:15 ` Zhao Zhili [this message]
2022-04-12 8:15 ` [FFmpeg-devel] [PATCH 10/10] avformat/hls: check dynarray_add error when add stream Zhao Zhili
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tencent_15DD29024EA1A54E13048842B3ED336A7505@qq.com \
--to=quinkblack@foxmail.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git