summaryrefslogtreecommitdiffstats
path: root/libavcodec/cbs_h265_syntax_template.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2019-06-20 22:21:26 -0300
committerJames Almer <jamrial@gmail.com>2019-07-20 11:28:09 -0300
commite460dcc832e911982e5cf143ce7ff52c95547ab0 (patch)
tree04344d091f8b492c129f338b5b8b8946b93904a7 /libavcodec/cbs_h265_syntax_template.c
parentd4035ca849bdb90e95c87e2737a99ea657be0716 (diff)
downloadffmpeg-streaming-e460dcc832e911982e5cf143ce7ff52c95547ab0.zip
ffmpeg-streaming-e460dcc832e911982e5cf143ce7ff52c95547ab0.tar.gz
avcodec/cbs_h265: add support for Alpha Channel Info SEI messages
As defined in sections F.14.2.8 and F.14.3.8 Reviewed-by: Mark Thompson <sw@jkqxz.net> Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/cbs_h265_syntax_template.c')
-rw-r--r--libavcodec/cbs_h265_syntax_template.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/libavcodec/cbs_h265_syntax_template.c b/libavcodec/cbs_h265_syntax_template.c
index f279d28..5457092 100644
--- a/libavcodec/cbs_h265_syntax_template.c
+++ b/libavcodec/cbs_h265_syntax_template.c
@@ -2028,6 +2028,34 @@ static int FUNC(sei_alternative_transfer_characteristics)(CodedBitstreamContext
return 0;
}
+static int FUNC(sei_alpha_channel_info)(CodedBitstreamContext *ctx,
+ RWContext *rw,
+ H265RawSEIAlphaChannelInfo *current)
+{
+ int err, length;
+
+ HEADER("Alpha Channel Information");
+
+ flag(alpha_channel_cancel_flag);
+ if (!current->alpha_channel_cancel_flag) {
+ ub(3, alpha_channel_use_idc);
+ ub(3, alpha_channel_bit_depth_minus8);
+ length = current->alpha_channel_bit_depth_minus8 + 9;
+ ub(length, alpha_transparent_value);
+ ub(length, alpha_opaque_value);
+ flag(alpha_channel_incr_flag);
+ flag(alpha_channel_clip_flag);
+ if (current->alpha_channel_clip_flag)
+ flag(alpha_channel_clip_type_flag);
+ } else {
+ infer(alpha_channel_use_idc, 2);
+ infer(alpha_channel_incr_flag, 0);
+ infer(alpha_channel_clip_flag, 0);
+ }
+
+ return 0;
+}
+
static int FUNC(sei_payload)(CodedBitstreamContext *ctx, RWContext *rw,
H265RawSEIPayload *current, int prefix)
{
@@ -2080,6 +2108,7 @@ static int FUNC(sei_payload)(CodedBitstreamContext *ctx, RWContext *rw,
SEI_TYPE_N(CONTENT_LIGHT_LEVEL_INFO, 1, 0, content_light_level);
SEI_TYPE_N(ALTERNATIVE_TRANSFER_CHARACTERISTICS,
1, 0, alternative_transfer_characteristics);
+ SEI_TYPE_N(ALPHA_CHANNEL_INFO, 1, 0, alpha_channel_info);
#undef SEI_TYPE
default:
OpenPOWER on IntegriCloud