Commit 10a1b37e authored by Steve Lhomme's avatar Steve Lhomme Committed by Hugo Beauzée-Luyssen
Browse files

hxxx_sei: add HDR10 metadata parsing


Signed-off-by: Hugo Beauzée-Luyssen's avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
parent 8cadb9c9
...@@ -145,6 +145,30 @@ void HxxxParseSEI(const uint8_t *p_buf, size_t i_buf, ...@@ -145,6 +145,30 @@ void HxxxParseSEI(const uint8_t *p_buf, size_t i_buf,
b_continue = pf_callback( &sei_data, cbdata ); b_continue = pf_callback( &sei_data, cbdata );
} break; } break;
case HXXX_SEI_MASTERING_DISPLAY_COLOUR_VOLUME:
{
if ( bs_remain( &s ) < (16*6+16*2+32+32) )
/* not enough data */
break;
for ( size_t i = 0; i < 6 ; ++i)
sei_data.colour_volume.primaries[i] = bs_read( &s, 16 );
for ( size_t i = 0; i < 2 ; ++i)
sei_data.colour_volume.white_point[i] = bs_read( &s, 16 );
sei_data.colour_volume.max_luminance = bs_read( &s, 32 );
sei_data.colour_volume.min_luminance = bs_read( &s, 32 );
b_continue = pf_callback( &sei_data, cbdata );
} break;
case HXXX_SEI_CONTENT_LIGHT_LEVEL:
{
if ( bs_remain( &s ) < (16+16) )
/* not enough data */
break;
sei_data.content_light_lvl.MaxCLL = bs_read( &s, 16 );
sei_data.content_light_lvl.MaxFALL = bs_read( &s, 16 );
b_continue = pf_callback( &sei_data, cbdata );
} break;
default: default:
/* Will skip */ /* Will skip */
break; break;
......
...@@ -25,7 +25,9 @@ enum hxxx_sei_type_e ...@@ -25,7 +25,9 @@ enum hxxx_sei_type_e
{ {
HXXX_SEI_PIC_TIMING = 1, HXXX_SEI_PIC_TIMING = 1,
HXXX_SEI_USER_DATA_REGISTERED_ITU_T_T35 = 4, 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_CONTENT_LIGHT_LEVEL = 144,
}; };
enum hxxx_sei_t35_type_e enum hxxx_sei_t35_type_e
...@@ -55,6 +57,18 @@ typedef struct ...@@ -55,6 +57,18 @@ typedef struct
{ {
int i_frames; int i_frames;
} recovery; } 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;
} colour_volume; /* SMPTE ST 2086 */
struct
{
uint16_t MaxCLL;
uint16_t MaxFALL;
} content_light_lvl; /* CTA-861.3 */
}; };
} hxxx_sei_data_t; } hxxx_sei_data_t;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment