diff options
| author | jhurst <jhurst@cinecert.com> | 2018-08-20 00:15:11 +0000 |
|---|---|---|
| committer | jhurst <> | 2018-08-20 00:15:11 +0000 |
| commit | 30dba88305439d4df852bb5149e134739889dc93 (patch) | |
| tree | 771f8275a5b284985a88c0de8e0203bb2467d84b /src | |
| parent | 79912d9558b67fb75dfad8bca29d2db1fa58a769 (diff) | |
o Fixes wrong MajorVersion in Preface
o Adds VideoLineMap also to RGBA essence descriptor
o Adds VideoLineMap to RGBA and CDCI descriptor only when option -l
is present (disputable - but distinguished value {0, 0} is not
allowed in closed and complete partitions)
o Fixes issue with IndexRate not set in AS-02 J2K files
o Additional fixes to minor version number in AS-02 partition packs
o CMake brought up to date
o Fixed erroneous WAV RF64 header interpretation
Diffstat (limited to 'src')
| -rw-r--r-- | src/AS_02_JP2K.cpp | 1 | ||||
| -rw-r--r-- | src/AS_02_internal.h | 1 | ||||
| -rwxr-xr-x | src/AS_DCP_internal.h | 4 | ||||
| -rw-r--r-- | src/CMakeLists.txt | 8 | ||||
| -rwxr-xr-x | src/Wav.cpp | 17 | ||||
| -rwxr-xr-x | src/as-02-wrap.cpp | 11 | ||||
| -rw-r--r-- | src/h__02_Writer.cpp | 7 |
7 files changed, 32 insertions, 17 deletions
diff --git a/src/AS_02_JP2K.cpp b/src/AS_02_JP2K.cpp index 0379a96..2d8bfa5 100644 --- a/src/AS_02_JP2K.cpp +++ b/src/AS_02_JP2K.cpp @@ -368,6 +368,7 @@ AS_02::JP2K::MXFWriter::h__Writer::SetSourceStream(const std::string& label, con if ( KM_SUCCESS(result) ) { this->m_IndexWriter.SetPrimerLookup(&this->m_HeaderPart.m_Primer); + this->m_IndexWriter.SetEditRate(m_EssenceDescriptor->SampleRate); } } diff --git a/src/AS_02_internal.h b/src/AS_02_internal.h index e068f8d..c4aee7e 100644 --- a/src/AS_02_internal.h +++ b/src/AS_02_internal.h @@ -107,6 +107,7 @@ namespace AS_02 ui32_t GetDuration() const; void PushIndexEntry(const ASDCP::MXF::IndexTableSegment::IndexEntry&); + void SetEditRate(const ASDCP::Rational& edit_rate); }; diff --git a/src/AS_DCP_internal.h b/src/AS_DCP_internal.h index 3c1a9b7..1049a98 100755 --- a/src/AS_DCP_internal.h +++ b/src/AS_DCP_internal.h @@ -630,14 +630,14 @@ namespace ASDCP if ( mxf_ver == MXFVersion_2004 ) { m_HeaderPart.MinorVersion = MXF_2004_MinorVersion; - m_HeaderPart.m_Preface->Version = ((MXF_ObjectModelVersion < 8) | MXF_2004_MinorVersion); + m_HeaderPart.m_Preface->Version = ((MXF_ObjectModelVersion << 8) | MXF_2004_MinorVersion); m_HeaderPart.m_Preface->ObjectModelVersion = MXF_ObjectModelVersion; } else { assert(mxf_ver == MXFVersion_2011); m_HeaderPart.MinorVersion = MXF_2011_MinorVersion; - m_HeaderPart.m_Preface->Version = ((MXF_ObjectModelVersion < 8) | MXF_2011_MinorVersion); + m_HeaderPart.m_Preface->Version = ((MXF_ObjectModelVersion << 8) | MXF_2011_MinorVersion); m_HeaderPart.m_Preface->ObjectModelVersion = MXF_ObjectModelVersion; } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 816d5b5..cf76725 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ find_library(OpenSSLLib_PATH NAMES libeay32 crypto PATHS "${PROJECT_SOURCE_DIR}/../openssl" "${PROJECT_SOURCE_DIR}/../lib/openssl" "$ENV{CMAKE_HINT}/openssl" ENV CMAKE_HINT PATH_SUFFIXES "lib" "openssl" "lib/openssl")
find_path(OpenSSLLib_include_DIR NAMES openssl/rand.h PATHS "${PROJECT_SOURCE_DIR}/../openssl" "${PROJECT_SOURCE_DIR}/../lib/openssl" "$ENV{CMAKE_HINT}/openssl" ENV CMAKE_HINT PATH_SUFFIXES "include" "inc32")
find_library(XercescppLib_PATH NAMES xerces-c xerces-c_3 PATHS "${PROJECT_SOURCE_DIR}/../xercescpp" "${PROJECT_SOURCE_DIR}/../lib/xercescpp" "$ENV{CMAKE_HINT}/xercescpp" ENV CMAKE_HINT PATH_SUFFIXES "lib")
-find_library(XercescppLib_Debug_PATH NAMES xerces-c xerces-c_3D PATHS "${PROJECT_SOURCE_DIR}/../xercescpp" "${PROJECT_SOURCE_DIR}/../lib/xercescpp" "$ENV{CMAKE_HINT}/xercescpp" ENV CMAKE_HINT PATH_SUFFIXES "lib")
+find_library(XercescppLib_Debug_PATH NAMES xerces-cD xerces-c_3D xerces-c PATHS "${PROJECT_SOURCE_DIR}/../xercescpp" "${PROJECT_SOURCE_DIR}/../lib/xercescpp" "$ENV{CMAKE_HINT}/xercescpp" ENV CMAKE_HINT PATH_SUFFIXES "lib")
find_path(XercescppLib_include_DIR NAMES xercesc/dom/DOM.hpp PATHS "${PROJECT_SOURCE_DIR}/../xercescpp" "${PROJECT_SOURCE_DIR}/../lib/xercescpp" "$ENV{CMAKE_HINT}/xercescpp" ENV CMAKE_HINT PATH_SUFFIXES "include")
set(UseRandomUUID OFF CACHE BOOL "")
@@ -27,17 +27,17 @@ set(asdcp_src MPEG2_Parser.cpp MPEG.cpp JP2K_Codestream_Parser.cpp JP2K_Sequence )
# header for deployment (install target)
-set(asdcp_deploy_header AS_DCP.h PCMParserList.h AS_DCP_internal.h KM_error.h KM_fileio.h KM_util.h KM_memio.h KM_tai.h KM_platform.h KM_log.h KM_mutex.h)
+set(asdcp_deploy_header AS_DCP.h PCMParserList.h AS_DCP_internal.h KM_error.h KM_fileio.h KM_util.h KM_memio.h KM_tai.h KM_platform.h KM_log.h KM_mutex.h dirent_win.h)
# header
set(asdcp_src ${asdcp_src} Wav.h WavFileWriter.h MXF.h Metadata.h JP2K.h AS_DCP.h AS_DCP_internal.h KLV.h MPEG.h MXFTypes.h MDD.h
PCMParserList.h S12MTimecode.h AtmosSyncChannel_Generator.h AtmosSyncChannel_Mixer.h PCMDataProviders.h
- SyncEncoder.h SyncCommon.h CRC16.h UUIDInformation.h
+ SyncEncoder.h SyncCommon.h CRC16.h UUIDInformation.h dirent_win.h
)
# ----------as02----------
# source
-set(as02_src h__02_Reader.cpp h__02_Writer.cpp AS_02_JP2K.cpp AS_02_PCM.cpp ST2052_TextParser.cpp AS_02_TimedText.cpp)
+set(as02_src h__02_Reader.cpp h__02_Writer.cpp AS_02_ISXD.cpp AS_02_JP2K.cpp AS_02_PCM.cpp ST2052_TextParser.cpp AS_02_TimedText.cpp)
# header for deployment (install target)
set(as02_deploy_header AS_02.h Metadata.h MXF.h MXFTypes.h KLV.h MDD.h)
diff --git a/src/Wav.cpp b/src/Wav.cpp index aad4b89..2ffadd4 100755 --- a/src/Wav.cpp +++ b/src/Wav.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2015, John Hurst +Copyright (c) 2005-2018, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -548,14 +548,17 @@ ASDCP::RF64::SimpleRF64Header::ReadFromBuffer(const byte_t* buf, ui32_t buf_len, if ( test_fcc == Wav::FCC_data ) { - if ( chunk_size > RIFF_len ) - { - DefaultLogSink().Error("Chunk size %u larger than file: %u\n", chunk_size, RIFF_len); - return RESULT_RAW_FORMAT; - } + if ( chunk_size != MAX_RIFF_LEN ) + { + if ( chunk_size > RIFF_len ) + { + DefaultLogSink().Error("Chunk size %u larger than file: %u\n", chunk_size, RIFF_len); + return RESULT_RAW_FORMAT; + } - if (chunk_size != MAX_RIFF_LEN) data_len = chunk_size; + } + *data_start = p - buf; break; } diff --git a/src/as-02-wrap.cpp b/src/as-02-wrap.cpp index db3d659..e414e9e 100755 --- a/src/as-02-wrap.cpp +++ b/src/as-02-wrap.cpp @@ -151,8 +151,7 @@ Options:\n\ -j <key-id-str> - Write key ID instead of creating a random value\n\ -k <key-string> - Use key for ciphertext operations\n\ -l <first>,<second>\n\ - - Integer values that set the VideoLineMap when creating\n\ - interlaced YCbCr files\n\ + - Integer values that set the VideoLineMap\n\ -m <expr> - Write MCA labels using <expr>. Example:\n\ 51(L,R,C,LFE,Ls,Rs,),HI,VIN\n\ -M - Do not create HMAC values when writing\n\ @@ -293,6 +292,7 @@ public: // MXF::LineMapPair line_map; + bool line_map_flag; std::string out_file, profile_name; // std::string mca_audio_element_kind, mca_audio_content_kind; @@ -445,7 +445,7 @@ public: horizontal_subsampling(2), vertical_subsampling(2), component_depth(10), frame_layout(0), aspect_ratio(ASDCP::Rational(4,3)), field_dominance(0), mxf_header_size(16384), cdci_WhiteRefLevel(940), cdci_BlackRefLevel(64), cdci_ColorRange(897), - md_min_luminance(0), md_max_luminance(0), line_map(0,0) + md_min_luminance(0), md_max_luminance(0), line_map(0,0), line_map_flag(false) { memset(key_value, 0, KeyLen); memset(key_id_value, 0, UUIDlen); @@ -594,6 +594,8 @@ public: if ( ! set_video_line_map(argv[i]) ) { return; + } else { + line_map_flag = true; } break; @@ -879,7 +881,7 @@ write_JP2K_file(CommandOptions& Options) tmp_dscr->WhiteReflevel = Options.cdci_WhiteRefLevel; tmp_dscr->BlackRefLevel = Options.cdci_BlackRefLevel; tmp_dscr->ColorRange = Options.cdci_ColorRange; - tmp_dscr->VideoLineMap = Options.line_map; + if (Options.line_map_flag) tmp_dscr->VideoLineMap = Options.line_map; if ( Options.md_min_luminance || Options.md_max_luminance ) { @@ -914,6 +916,7 @@ write_JP2K_file(CommandOptions& Options) tmp_dscr->PictureEssenceCoding = Options.picture_coding; tmp_dscr->ComponentMaxRef = Options.rgba_MaxRef; tmp_dscr->ComponentMinRef = Options.rgba_MinRef; + if (Options.line_map_flag) tmp_dscr->VideoLineMap = Options.line_map; if ( Options.md_min_luminance || Options.md_max_luminance ) { diff --git a/src/h__02_Writer.cpp b/src/h__02_Writer.cpp index 37393ca..41765de 100644 --- a/src/h__02_Writer.cpp +++ b/src/h__02_Writer.cpp @@ -47,6 +47,7 @@ AS_02::MXF::AS02IndexWriterVBR::AS02IndexWriterVBR(const ASDCP::Dictionary*& d) { BodySID = 0; IndexSID = 129; + MinorVersion = 3; } AS_02::MXF::AS02IndexWriterVBR::~AS02IndexWriterVBR() {} @@ -165,6 +166,11 @@ AS_02::MXF::AS02IndexWriterVBR::PushIndexEntry(const IndexTableSegment::IndexEnt m_CurrentSegment->IndexEntryArray.push_back(Entry); } +void +AS_02::MXF::AS02IndexWriterVBR::SetEditRate(const ASDCP::Rational& edit_rate) +{ + m_EditRate = edit_rate; +} //------------------------------------------------------------------------------------------ // @@ -223,6 +229,7 @@ AS_02::MXF::AS02IndexWriterCBR::AS02IndexWriterCBR(const ASDCP::Dictionary*& d) { BodySID = 0; IndexSID = 129; + MinorVersion = 3; } AS_02::MXF::AS02IndexWriterCBR::~AS02IndexWriterCBR() {} |
