add UHD Blu-Ray disk type, command line option, enable UHD Blu-Ray files, folders and playlists to be created and enable UHD Blu-Ray in MPLS

master
Dan Bryant 2019-11-26 10:31:44 +00:00
parent 08106ada39
commit 622f41a610
4 changed files with 21 additions and 4 deletions

View File

@ -110,7 +110,7 @@ bool BlurayHelper::open(const string& dst, DiskType dt, int64_t diskSize, int ex
bool BlurayHelper::createBluRayDirs()
{
if (m_dt == DT_BLURAY)
if (m_dt == DT_BLURAY || m_dt == UHD_BLURAY)
{
if (m_isoWriter) {
m_isoWriter->createDir("BDMV/META");
@ -168,7 +168,10 @@ bool BlurayHelper::writeBluRayFiles(bool usedBlackPL, int mplsNum, int blankNum,
if (m_dt == DT_BLURAY) {
bdMovieObjectData[5] = bdIndexData[5] = '2';
bdIndexData[15] = 0;
fileSize = 0x78;
}
else if (m_dt == UHD_BLURAY) {
bdMovieObjectData[5] = bdIndexData[5] = '3';
fileSize = 0x78;
}
else {
@ -226,6 +229,8 @@ bool BlurayHelper::createCLPIFile(TSMuxer* muxer, int clpiNum, bool doLog)
string version_number;
if (m_dt == DT_BLURAY)
memcpy(&clpiParser.version_number, "0200", 5);
else if (m_dt == UHD_BLURAY)
memcpy(&clpiParser.version_number, "0300", 5);
else
memcpy(&clpiParser.version_number, "0100", 5);
clpiParser.clip_stream_type = 1; // AV stream
@ -239,6 +244,9 @@ bool BlurayHelper::createCLPIFile(TSMuxer* muxer, int clpiNum, bool doLog)
if (m_dt == DT_BLURAY) {
LTRACE(LT_INFO, 2, "Creating Blu-ray stream info and seek index");
}
else if (m_dt == UHD_BLURAY) {
LTRACE(LT_INFO, 2, "Creating UHD Blu-ray stream info and seek index");
}
else {
LTRACE(LT_INFO, 2, "Creating AVCHD stream info and seek index");
}
@ -411,6 +419,9 @@ bool BlurayHelper::createMPLSFile(TSMuxer* mainMuxer, TSMuxer* subMuxer,
if (dt == DT_BLURAY) {
LTRACE(LT_INFO, 2, "Creating Blu-ray playlist");
}
else if (dt == UHD_BLURAY) {
LTRACE(LT_INFO, 2, "Creating UHD Blu-ray playlist");
}
else {
LTRACE(LT_INFO, 2, "Creating AVCHD playlist");
}

View File

@ -91,7 +91,9 @@ DiskType checkBluRayMux(const char* metaFileName, int& autoChapterLen, vector<do
}
}
if (str.find("--blu-ray") != string::npos)
if (str.find("--blu-ray v3") != string::npos)
result = UHD_BLURAY;
else if (str.find("--blu-ray") != string::npos)
result = DT_BLURAY;
else if (str.find("--avchd") != string::npos)
result = DT_AVCHD;

View File

@ -1434,6 +1434,8 @@ int MPLSParser::compose(uint8_t* buffer, int bufferSize, DiskType dt)
std::string version_number;
if (dt == DT_BLURAY)
version_number = "0200";
else if (dt == UHD_BLURAY)
version_number = "0300";
else
version_number = "0100";
CLPIStreamInfo::writeString(type_indicator.c_str(), writer, 4);
@ -2853,6 +2855,8 @@ int MovieObject::compose(uint8_t* buffer, int len, DiskType dt)
CLPIStreamInfo::writeString("MOBJ", writer, 4);
if (dt == DT_BLURAY)
CLPIStreamInfo::writeString("0200", writer, 4);
else if (dt == UHD_BLURAY)
CLPIStreamInfo::writeString("0300", writer, 4);
else
CLPIStreamInfo::writeString("0100", writer, 4);
writer.putBits(32,0); //uint32_t ExtensionData_start_address

View File

@ -94,7 +94,7 @@ struct AVRational{
typedef std::vector<std::pair<int, int> > PriorityDataInfo; // mark some data as priority data
enum DiskType {DT_NONE, DT_BLURAY, DT_AVCHD};
enum DiskType {DT_NONE, DT_BLURAY, UHD_BLURAY, DT_AVCHD};
uint16_t AV_RB16(const uint8_t* buffer);
uint32_t AV_RB24(const uint8_t* buffer);