Skip to content

Commit

Permalink
Merge branch 'UHD_Support' of https://github.com/stanionascu/BDInfo i…
Browse files Browse the repository at this point in the history
…nto UHD_Support
  • Loading branch information
UniqProject committed Dec 4, 2020
2 parents 1671707 + b51c602 commit 0dac221
Showing 1 changed file with 38 additions and 4 deletions.
42 changes: 38 additions & 4 deletions BDInfo/BDROM/TSCodecHEVC.cs
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,8 @@ public class ExtendedDataSet

public byte PreferredTransferCharacteristics;

public bool IsHdr10Plus;

public ExtendedDataSet()
{
VideoParamSets = new List<VideoParamSetStruct>();
Expand All @@ -323,6 +325,8 @@ public ExtendedDataSet()
ExtendedFormatInfo = new List<string>();

PreferredTransferCharacteristics = 2;

IsHdr10Plus = false;
}
}

Expand Down Expand Up @@ -418,6 +422,8 @@ private static string MatrixCoefficients(byte matrixCoefficients)

public static byte PreferredTransferCharacteristics;

public static bool IsHdr10Plus;

public static void Scan(TSVideoStream stream, TSStreamBuffer buffer, ref string tag)
{
if (stream.IsInitialized) return;
Expand Down Expand Up @@ -513,6 +519,8 @@ public static void Scan(TSVideoStream stream, TSStreamBuffer buffer, ref string
ExtendedData.SeqParameterSets = SeqParameterSets;
ExtendedData.PicParameterSets = PicParameterSets;

ExtendedData.IsHdr10Plus = IsHdr10Plus;

stream.ExtendedData = ExtendedData;

// TODO: profile to string
Expand Down Expand Up @@ -588,7 +596,7 @@ public static void Scan(TSVideoStream stream, TSStreamBuffer buffer, ref string
seqParameterSet.VUIParameters.MatrixCoefficients == 10) && //MatrixCoefficients BT.2020 constant
!string.IsNullOrEmpty(MasteringDisplayColorPrimaries))
{
ExtendedFormatInfo.Add(stream.PID >= 4117 ? "Dolby Vision" : "HDR10");
ExtendedFormatInfo.Add(stream.PID >= 4117 ? "Dolby Vision" : IsHdr10Plus ? "HDR10+" : "HDR10");
}

if (seqParameterSet.VUIParameters.VideoSignalTypePresentFlag)
Expand Down Expand Up @@ -952,16 +960,42 @@ private static void Sei(TSStreamBuffer buffer)
case 147:
SeiAlternativeTransferCharacteristics(buffer);
break;
case 4: // SEI_USER_DATA_REGISTERED_ITU_T_T35
SeiUserDataRegisteredItuTT35(buffer, payloadSize);
break;
default:
buffer.BSSkipBytes((int) payloadSize);
break;
}
if (SavedPos > (ulong) buffer.Position)
buffer.BSSkipBytes((int) (SavedPos - (ulong) buffer.Position));
} while (buffer.Position < elementStart + elementSize);
}

// SEI - 0
}

// SEI - 4 SEI_USER_DATA_REGISTERED_ITU_T_T35
private static void SeiUserDataRegisteredItuTT35(TSStreamBuffer buffer, uint payloadSize)
{
ushort country_code = buffer.ReadBits2(8); // itu_t_t35_country_code
ushort terminal_provider_code = buffer.ReadBits2(16); // itu_t_t35_terminal_provider_code
ushort terminal_provider_oriented_code = buffer.ReadBits2(16); // itu_t_t35_terminal_provider_oriented_code
uint application_id = buffer.ReadBits4(8); // application_identifier
uint application_version = buffer.ReadBits4(8); // application_version
uint num_windows = buffer.ReadBits4(2); // num_windows
buffer.BSSkipBits(6);
// ST 2094-40 page 4
if (country_code == 0xB5 && terminal_provider_code == 0x003C && terminal_provider_oriented_code == 0x0001)
{
// ST 2094-40 application #4 page 4
if (application_id == 4 && (application_version == 0 || application_version == 1) && num_windows == 1)
{
IsHdr10Plus = true;
}
}
payloadSize -= 8;
buffer.BSSkipBytes((int)payloadSize);
}

// SEI - 0
private static void SeiMessageBufferingPeriod(TSStreamBuffer buffer, ref uint seqParameterSetID, uint payloadSize)
{
seqParameterSetID = buffer.ReadExp();
Expand Down

0 comments on commit 0dac221

Please sign in to comment.