diff options
author | Haihao Xiang <haihao.xiang@intel.com> | 2018-05-10 13:47:46 +0800 |
---|---|---|
committer | Mark Thompson <sw@jkqxz.net> | 2018-05-10 20:55:42 +0100 |
commit | 2943dd35b7591b8e84ee8bf2e8dbc78627f36632 (patch) | |
tree | 7ef6c60f8c81652f77e29972b50bdd796492da22 | |
parent | 345b6962b68b78bd435d1c931935e86008bf309a (diff) |
cbs_h265: read/write content light level information SEI message
Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
-rw-r--r-- | libavcodec/cbs_h2645.c | 1 | ||||
-rw-r--r-- | libavcodec/cbs_h265.h | 6 | ||||
-rw-r--r-- | libavcodec/cbs_h265_syntax_template.c | 17 |
3 files changed, 24 insertions, 0 deletions
diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index dd13d8ab5f..54f7e93755 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -488,6 +488,7 @@ static void cbs_h265_free_sei_payload(H265RawSEIPayload *payload) { switch (payload->payload_type) { case HEVC_SEI_TYPE_MASTERING_DISPLAY_INFO: + case HEVC_SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO: break; default: av_buffer_unref(&payload->payload.other.data_ref); diff --git a/libavcodec/cbs_h265.h b/libavcodec/cbs_h265.h index 983357e383..cca1d7590b 100644 --- a/libavcodec/cbs_h265.h +++ b/libavcodec/cbs_h265.h @@ -533,11 +533,17 @@ typedef struct H265RawSEIMasteringDisplayColourVolume { uint32_t min_display_mastering_luminance; } H265RawSEIMasteringDisplayColourVolume; +typedef struct H265RawSEIContentLightLevelInfo { + uint16_t max_content_light_level; + uint16_t max_pic_average_light_level; +} H265RawSEIContentLightLevelInfo; + typedef struct H265RawSEIPayload { uint32_t payload_type; uint32_t payload_size; union { H265RawSEIMasteringDisplayColourVolume mastering_display; + H265RawSEIContentLightLevelInfo content_light_level; struct { uint8_t *data; size_t data_length; diff --git a/libavcodec/cbs_h265_syntax_template.c b/libavcodec/cbs_h265_syntax_template.c index 1c67271300..d4e4f7b1c2 100644 --- a/libavcodec/cbs_h265_syntax_template.c +++ b/libavcodec/cbs_h265_syntax_template.c @@ -1526,6 +1526,17 @@ static int FUNC(sei_mastering_display)(CodedBitstreamContext *ctx, RWContext *rw return 0; } +static int FUNC(sei_content_light_level)(CodedBitstreamContext *ctx, RWContext *rw, + H265RawSEIContentLightLevelInfo *current) +{ + int err; + + u(16, max_content_light_level, 0, MAX_UINT_BITS(16)); + u(16, max_pic_average_light_level, 0, MAX_UINT_BITS(16)); + + return 0; +} + static int FUNC(sei_payload)(CodedBitstreamContext *ctx, RWContext *rw, H265RawSEIPayload *current) { @@ -1545,6 +1556,12 @@ static int FUNC(sei_payload)(CodedBitstreamContext *ctx, RWContext *rw, break; + case HEVC_SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO: + CHECK(FUNC(sei_content_light_level) + (ctx, rw, ¤t->payload.content_light_level)); + + break; + default: { #ifdef READ |