[vlc-devel] [PATCH 2/5] hxxx_sei: add HDR10/SMPTE ST 2086 metadata parsing

Steve Lhomme robux4 at gmail.com
Wed Mar 29 17:02:08 CEST 2017


On Wed, Mar 29, 2017 at 4:56 PM, Filip Roséen <filip at atch.se> wrote:
> Hi Steve,
>
> On 2017-03-29 15:39, Steve Lhomme wrote:
>
>  ---
>   modules/packetizer/hxxx_sei.c | 14 ++++++++++++++
>   modules/packetizer/hxxx_sei.h | 11 ++++++++++-
>   2 files changed, 24 insertions(+), 1 deletion(-)
>
>  diff --git a/modules/packetizer/hxxx_sei.c b/modules/packetizer/hxxx_sei.c
>  index e83528cb7c..636c7178cf 100644
>  --- a/modules/packetizer/hxxx_sei.c
>  +++ b/modules/packetizer/hxxx_sei.c
>  @@ -145,6 +145,20 @@ void HxxxParseSEI(const uint8_t *p_buf, size_t i_buf,
>                   b_continue = pf_callback( &sei_data, cbdata );
>               } break;
>
>  +            case HXXX_SEI_MASTERING_DISPLAY_COLOUR_VOLUME:
>  +            {
>  +                if ( bs_remain( &s ) < (16*4*2+32+32))
>  +                    /* not enough data */
>
> The above check does not seem to match the reading that takes place in this
> block, as the actual reading potentially consumes 16*6 + 16*4 + 32 + 32 =>
> 224, wheras the current check uses 192.

Nope, the second is 16*2, not 16*4.

> If the above is intentional it certainly deserves a comment.
>
>  +                    break;
>  +                for ( size_t i = 0; i < 6 ; ++i)
>  +                    sei_data.color_volume.primaries[i] = bs_read( &s, 16
> );
>  +                for ( size_t i = 0; i < 2 ; ++i)
>  +                    sei_data.color_volume.white_point[i] = bs_read( &s, 16
> );
>  +                sei_data.color_volume.max_luminance = bs_read( &s, 32 );
>  +                sei_data.color_volume.min_luminance = bs_read( &s, 32 );
>  +                b_continue = pf_callback( &sei_data, cbdata );
>  +            } break;
>  +
>               default:
>                   /* Will skip */
>                   break;
>  diff --git a/modules/packetizer/hxxx_sei.h b/modules/packetizer/hxxx_sei.h
>  index 7b53a578d0..58721aefca 100644
>  --- a/modules/packetizer/hxxx_sei.h
>  +++ b/modules/packetizer/hxxx_sei.h
>  @@ -25,7 +25,9 @@ enum hxxx_sei_type_e
>   {
>       HXXX_SEI_PIC_TIMING = 1,
>       HXXX_SEI_USER_DATA_REGISTERED_ITU_T_T35 = 4,
>  -    HXXX_SEI_RECOVERY_POINT = 6
>  +    HXXX_SEI_RECOVERY_POINT = 6,
>  +    HXXX_SEI_MASTERING_DISPLAY_COLOUR_VOLUME = 137, /* SMPTE ST 2086 */
>  +    HXXX_SEI_LIGHT_LEVEL = 144,
>   };
>
>   enum hxxx_sei_t35_type_e
>  @@ -55,6 +57,13 @@ typedef struct
>           {
>               int i_frames;
>           } recovery;
>  +        struct
>  +        {
>  +            uint16_t primaries[3*2]; /* G,B,R / x,y */
>  +            uint16_t white_point[2]; /* x,y */
>  +            uint32_t max_luminance;
>  +            uint32_t min_luminance;
>  +        } color_volume;
>       };
>   } hxxx_sei_data_t;
>
> Best Regards,
> Filip
>
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list