#7756: add mastering display color volume and content light level information to
hevc_metadata bitstream filter
-------------------------------------+-----------------------------------
             Reporter:  sneaker      |                    Owner:  (none)
                 Type:  enhancement  |                   Status:  new
             Priority:  wish         |                Component:  avcodec
              Version:  git-master   |               Resolution:
             Keywords:  hevc         |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-----------------------------------
Comment (by Miklos Juhasz):

 I've created a patch to add support for Maximum Content Light Level
 (MaxCLL) and Maximum Frame-Average Light Level (MaxFALL) metadata to the
 hevc_metadata bitstream filter. This will allow users to insert or modify
 this HDR metadata in HEVC streams.

 Here's a link to the patch:
 [[https://gist.github.com/mjuhasz/e1f01937c44108dc442f3a4ea2d9b2a5|add-
 hdr-sei.patch]]

 The attached patch adds master_display and max_cll options to the
 hevc_metadata bitstream filter to handle Mastering Display Colour Volume
 and Content Light Level Information SEI messages respectively. It ensures
 the filter is idempotent by replacing any existing SEI messages of the
 same type.

 The syntax is the same as that for x265, see
 [[https://x265.readthedocs.io/en/master/cli.html#cmdoption-master-
 display|documentation]]

 {{{
 ffmpeg -i input.hevc -c copy -bsf:v
 
"hevc_metadata=max_cll='1000,400':master_display='G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,1)’"
 output.hevc
 }}}


 According to the HEVC specification (ITU-T H.265), MaxCLL and MaxFALL
 information is contained within Supplemental Enhancement Information (SEI)
 messages. These SEI messages with static metadata, such as mastering
 display and content light level information, are often repeated within the
 bitstream to ensure that a decoder can begin playback from any random
 access point. Industry best practice is to repeat this information at
 every Intra Random Access Point (IRAP) frame.


 My implementation reflects this understanding of the HEVC specification in
 the following ways:

 • The filter first removes any pre-existing MaxCLL and MaxFALL SEI
 messages to avoid conflicts.
 • If the removal of an SEI message results in an empty NAL unit, that
 empty NAL unit is also removed to prevent bitstream corruption.
 • The new MaxCLL and MaxFALL information is then inserted as a new SEI
 message only at access units containing IRAP frames or parameter sets.
 This ensures that the static metadata is available at every random access
 point without unnecessarily bloating the stream by repeating it in every
 access unit.

 I tested this patch extensively and it works as expected. I also submitted
 it to the FFmpeg developer mailing list in the hope that a developer will
 review it and that it can eventually be merged into the main FFmpeg
 project.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/7756#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to