From e5605b4bb4d981fc88bbe0c19d803724e196de66 Mon Sep 17 00:00:00 2001 From: James Almer Date: Mon, 19 Oct 2026 11:19:57 -0300 Subject: [PATCH] avformat: add an split Color and Alpha channel Stream Group Signed-off-by: James Almer --- doc/APIchanges | 3 +++ libavformat/avformat.c | 2 ++ libavformat/avformat.h | 5 +++-- libavformat/options.c | 3 +++ libavformat/version.h | 2 +- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 6fdb77deaa..748e7d938f 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,9 @@ The last version increases of all libraries were on 2026-06-23. API changes, most recent first: +2026-10-23 - xxxxxxxxxxx - lavf 63.14.100 - avformat.h + Add AV_STREAM_GROUP_PARAMS_ALPHA. + 2026-10-21 - b8249f73a7c - lavu 61.16.100 - hwcontext.h Add av_hwframe_get_transfer_buffer(). diff --git a/libavformat/avformat.c b/libavformat/avformat.c index e8ebb89097..aca8c4834f 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -123,6 +123,7 @@ FF_ENABLE_DEPRECATION_WARNINGS case AV_STREAM_GROUP_PARAMS_LCEVC: case AV_STREAM_GROUP_PARAMS_DOLBY_VISION: case AV_STREAM_GROUP_PARAMS_GAIN_MAP: + case AV_STREAM_GROUP_PARAMS_ALPHA: av_opt_free(stg->params.layered_video); av_freep(&stg->params.layered_video); break; @@ -290,6 +291,7 @@ const char *avformat_stream_group_name(enum AVStreamGroupParamsType type) case AV_STREAM_GROUP_PARAMS_TREF: return "Track Reference"; case AV_STREAM_GROUP_PARAMS_DOLBY_VISION: return "Dolby Vision (Split base and enhancement layer)"; case AV_STREAM_GROUP_PARAMS_GAIN_MAP: return "Gain Map (Split base rendition and gain map)"; + case AV_STREAM_GROUP_PARAMS_ALPHA: return "Alpha (Split color and alpha channels)"; } return NULL; } diff --git a/libavformat/avformat.h b/libavformat/avformat.h index fc46ae6b8d..664a291ea4 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1098,8 +1098,8 @@ typedef struct AVStreamGroupTileGrid { * layer video stream and a separate enhancement layer stream that together * form a single layered video presentation (for example a video stream and a * data stream containing LCEVC enhancement layer NALUs, Dolby Vision - * Profile 7 dual-layer encoding, or a base rendition accompanied by an - * ISO 21496-1 gain map). + * Profile 7 dual-layer encoding, an Alpha plane being a separate stream, or + * a base rendition accompanied by an ISO 21496-1 gain map). * * The enhancement layer stream is identified by @ref el_index. */ @@ -1165,6 +1165,7 @@ enum AVStreamGroupParamsType { AV_STREAM_GROUP_PARAMS_TREF, AV_STREAM_GROUP_PARAMS_DOLBY_VISION, AV_STREAM_GROUP_PARAMS_GAIN_MAP, + AV_STREAM_GROUP_PARAMS_ALPHA, }; struct AVIAMFAudioElement; diff --git a/libavformat/options.c b/libavformat/options.c index df7b6434d8..e6ab0a7e38 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -404,6 +404,7 @@ static void *stream_group_child_next(void *obj, void *prev) case AV_STREAM_GROUP_PARAMS_LCEVC: case AV_STREAM_GROUP_PARAMS_DOLBY_VISION: case AV_STREAM_GROUP_PARAMS_GAIN_MAP: + case AV_STREAM_GROUP_PARAMS_ALPHA: return stg->params.layered_video; default: break; @@ -438,6 +439,7 @@ static const AVClass *stream_group_child_iterate(void **opaque) case AV_STREAM_GROUP_PARAMS_LCEVC: case AV_STREAM_GROUP_PARAMS_DOLBY_VISION: case AV_STREAM_GROUP_PARAMS_GAIN_MAP: + case AV_STREAM_GROUP_PARAMS_ALPHA: ret = &layered_video_class; break; default: @@ -518,6 +520,7 @@ AVStreamGroup *avformat_stream_group_create(AVFormatContext *s, case AV_STREAM_GROUP_PARAMS_LCEVC: case AV_STREAM_GROUP_PARAMS_DOLBY_VISION: case AV_STREAM_GROUP_PARAMS_GAIN_MAP: + case AV_STREAM_GROUP_PARAMS_ALPHA: stg->params.layered_video = av_mallocz(sizeof(*stg->params.layered_video)); if (!stg->params.layered_video) goto fail; diff --git a/libavformat/version.h b/libavformat/version.h index e8fad25023..14bf700274 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -31,7 +31,7 @@ #include "version_major.h" -#define LIBAVFORMAT_VERSION_MINOR 13 +#define LIBAVFORMAT_VERSION_MINOR 14 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \