Skip to content

Commit c668e4f

Browse files
committed
[TEMP TESTING / To replace with proper filling]
1 parent 83ac657 commit c668e4f

File tree

2 files changed

+94
-1
lines changed

2 files changed

+94
-1
lines changed

Source/MediaInfo/Video/File_Av1.cpp

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ extern const char* Mpegv_matrix_coefficients(int8u matrix_coefficients);
3939
extern const char* Mpegv_matrix_coefficients_ColorSpace(int8u matrix_coefficients);
4040
extern const char* Avc_video_full_range[];
4141

42+
const char* DV_content_type(int8u content_type);
43+
const char* DV_white_point(int8u white_point);
44+
const char* DV_intended_setting(int8u setting, bool off);
45+
4246
//---------------------------------------------------------------------------
4347
const char* Av1_obu_type(int8u obu_type)
4448
{
@@ -801,7 +805,51 @@ void File_Av1::metadata_itu_t_t35_B5_003B_00000800()
801805
Element_Begin1("emdf_payload_bytes");
802806
switch (emdf_payload_id)
803807
{
804-
case 256: Get_DolbyVision_ReferenceProcessingUnit(DV_RPU_data); break;
808+
case 256: Get_DolbyVision_ReferenceProcessingUnit(DV_RPU_data);
809+
//Filling
810+
FILLING_BEGIN();
811+
if (DV_RPU_data.active_area_left_offset || DV_RPU_data.active_area_right_offset || DV_RPU_data.active_area_top_offset || DV_RPU_data.active_area_bottom_offset) {
812+
auto width = Retrieve(StreamKind_Last, StreamPos_Last, Video_Width).To_int16u();
813+
auto height = Retrieve(StreamKind_Last, StreamPos_Last, Video_Height).To_int16u();
814+
auto active_width = width - DV_RPU_data.active_area_left_offset - DV_RPU_data.active_area_right_offset;
815+
auto active_height = height - DV_RPU_data.active_area_top_offset - DV_RPU_data.active_area_bottom_offset;
816+
Fill(StreamKind_Last, StreamPos_Last, Video_Active_Width, active_width);
817+
Fill(StreamKind_Last, StreamPos_Last, Video_Active_Height, active_height);
818+
float32 PAR = Retrieve_Const(StreamKind_Last, StreamPos_Last, "PixelAspectRatio").To_float32();
819+
if (PAR)
820+
Fill(StreamKind_Last, StreamPos_Last, Video_Active_DisplayAspectRatio, ((float32)active_width) / active_height * PAR, 2);
821+
}
822+
if (DV_RPU_data.max_display_mastering_luminance && DV_RPU_data.min_display_mastering_luminance) {
823+
Ztring display_mastering_luminance = __T("min: ") + Ztring::ToZtring((float64)DV_RPU_data.min_display_mastering_luminance / 10000, 4)
824+
+ __T(" cd/m2, max: ") + Ztring::ToZtring(DV_RPU_data.max_display_mastering_luminance, 0)
825+
+ __T(" cd/m2");
826+
Fill(StreamKind_Last, StreamPos_Last, "MasteringDisplay_Luminance", display_mastering_luminance); // crash at later calls if filled with enum
827+
}
828+
if (DV_RPU_data.max_content_light_level && DV_RPU_data.max_frame_average_light_level) {
829+
// TODO
830+
}
831+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision", "RPU Present");
832+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision RPU_Profile", DV_RPU_data.vdr_rpu_profile);
833+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Base_Layer", (std::to_string(DV_RPU_data.bl_bit_depth) + " bits").c_str());
834+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Enhancement_Layer", (std::to_string(DV_RPU_data.el_bit_depth) + " bits").c_str());
835+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision VDR", (std::to_string(DV_RPU_data.vdr_bit_depth) + " bits").c_str());
836+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Base_Layer_Video_Range", DV_RPU_data.BL_video_full_range_flag ? "Full" : "Limited");
837+
if (DV_RPU_data.isMEL != (int8u)-1) Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Enhancement_Layer_Type", DV_RPU_data.isMEL == 0 ? "Full (FEL)" : "Minimal (MEL)");
838+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Mapping_version", DV_RPU_data.CMv, 1);
839+
if (DV_RPU_data.L11_present) {
840+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata", "Present");
841+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Content_Type", DV_content_type(DV_RPU_data.content_type));
842+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata White_Point", DV_white_point(DV_RPU_data.white_point));
843+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Sharpness", DV_intended_setting(DV_RPU_data.sharpness, true));
844+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Noise_Reduction", DV_intended_setting(DV_RPU_data.noise_reduction, true));
845+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata MPEG_Noise_Reduction", DV_intended_setting(DV_RPU_data.mpeg_noise_reduction, true));
846+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Frame_Rate_Conversion", DV_intended_setting(DV_RPU_data.frame_rate_conversion, true));
847+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Brightness", DV_intended_setting(DV_RPU_data.brightness, false));
848+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Color", DV_intended_setting(DV_RPU_data.color, false));
849+
}
850+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Deduced_Profile", DV_RPU_data.profile_deduced);
851+
FILLING_END();
852+
break;
805853
default : Skip_BS(static_cast<size_t>(emdf_payload_size) * 8, "(Unknown)"); break;
806854
}
807855
size_t RemainginBits=Data_BS_Remain();

Source/MediaInfo/Video/File_Hevc.cpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ using namespace ZenLib;
3030
namespace MediaInfoLib
3131
{
3232

33+
const char* DV_content_type(int8u content_type);
34+
const char* DV_white_point(int8u white_point);
35+
const char* DV_intended_setting(int8u setting, bool off);
36+
3337
//---------------------------------------------------------------------------
3438
extern const char* Hevc_tier_flag(bool tier_flag)
3539
{
@@ -3782,6 +3786,47 @@ void File_Hevc::Dolby_Vision_reference_processing_unit()
37823786
BS_Begin();
37833787
Get_DolbyVision_ReferenceProcessingUnit(DV_RPU_data);
37843788
BS_End();
3789+
3790+
//Filling
3791+
FILLING_BEGIN();
3792+
if (DV_RPU_data.active_area_left_offset || DV_RPU_data.active_area_right_offset || DV_RPU_data.active_area_top_offset || DV_RPU_data.active_area_bottom_offset) {
3793+
auto width = Retrieve(StreamKind_Last, StreamPos_Last, Video_Width).To_int16u();
3794+
auto height = Retrieve(StreamKind_Last, StreamPos_Last, Video_Height).To_int16u();
3795+
auto active_width = width - DV_RPU_data.active_area_left_offset - DV_RPU_data.active_area_right_offset;
3796+
auto active_height = height - DV_RPU_data.active_area_top_offset - DV_RPU_data.active_area_bottom_offset;
3797+
Fill(StreamKind_Last, StreamPos_Last, Video_Active_Width, active_width);
3798+
Fill(StreamKind_Last, StreamPos_Last, Video_Active_Height, active_height);
3799+
float32 PAR = Retrieve_Const(StreamKind_Last, StreamPos_Last, "PixelAspectRatio").To_float32();
3800+
if (PAR)
3801+
Fill(StreamKind_Last, StreamPos_Last, Video_Active_DisplayAspectRatio, ((float32)active_width) / active_height * PAR, 2);
3802+
}
3803+
if (DV_RPU_data.max_display_mastering_luminance && DV_RPU_data.min_display_mastering_luminance) {
3804+
Ztring display_mastering_luminance = __T("min: ") + Ztring::ToZtring((float64)DV_RPU_data.min_display_mastering_luminance/10000, 4)
3805+
+ __T(" cd/m2, max: ") + Ztring::ToZtring(DV_RPU_data.max_display_mastering_luminance, 0)
3806+
+ __T(" cd/m2");
3807+
Fill(StreamKind_Last, StreamPos_Last, "MasteringDisplay_Luminance", display_mastering_luminance);
3808+
}
3809+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision", "RPU Present");
3810+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision RPU_Profile", DV_RPU_data.vdr_rpu_profile);
3811+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Base_Layer", (to_string(DV_RPU_data.bl_bit_depth) + " bits").c_str());
3812+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Enhancement_Layer", (to_string(DV_RPU_data.el_bit_depth) + " bits").c_str());
3813+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision VDR", (to_string(DV_RPU_data.vdr_bit_depth) + " bits").c_str());
3814+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Base_Layer_Video_Range", DV_RPU_data.BL_video_full_range_flag ? "Full" : "Limited");
3815+
if (DV_RPU_data.isMEL != (int8u)-1) Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Enhancement_Layer_Type", DV_RPU_data.isMEL == 0 ? "Full (FEL)" : "Minimal (MEL)");
3816+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Mapping_version", DV_RPU_data.CMv, 1);
3817+
if (DV_RPU_data.L11_present) {
3818+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata", "Present");
3819+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Content_Type", DV_content_type(DV_RPU_data.content_type));
3820+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata White_Point", DV_white_point(DV_RPU_data.white_point));
3821+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Sharpness", DV_intended_setting(DV_RPU_data.sharpness, true));
3822+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Noise_Reduction", DV_intended_setting(DV_RPU_data.noise_reduction, true));
3823+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata MPEG_Noise_Reduction", DV_intended_setting(DV_RPU_data.mpeg_noise_reduction, true));
3824+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Frame_Rate_Conversion", DV_intended_setting(DV_RPU_data.frame_rate_conversion, true));
3825+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Brightness", DV_intended_setting(DV_RPU_data.brightness, false));
3826+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Content_Type_Metadata Color", DV_intended_setting(DV_RPU_data.color, false));
3827+
}
3828+
Fill(StreamKind_Last, StreamPos_Last, "Dolby_Vision Deduced_Profile", DV_RPU_data.profile_deduced);
3829+
FILLING_END();
37853830
}
37863831

37873832
//---------------------------------------------------------------------------

0 commit comments

Comments
 (0)