summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcah <cah@ableton.com>2022-12-16 23:17:51 +0100
committercah <cah@ableton.com>2022-12-16 23:17:51 +0100
commit30b1a7cb4983a0e95056969ed64bddc8f3494a2d (patch)
tree814e91060746766ce4b88723ce804809d46a0bc9
parent3f9fd2c3c3fffcccd53016619475b32642ed6aa5 (diff)
Hack to make DoM/libdcp build.dom-hack-upstream-master
-rwxr-xr-xsrc/AS_DCP.h11
-rwxr-xr-xsrc/AS_DCP_JP2K.cpp33
-rwxr-xr-xsrc/JP2K_Codestream_Parser.cpp37
3 files changed, 64 insertions, 17 deletions
diff --git a/src/AS_DCP.h b/src/AS_DCP.h
index aab7f77..ec2064d 100755
--- a/src/AS_DCP.h
+++ b/src/AS_DCP.h
@@ -204,7 +204,7 @@ namespace ASDCP {
enum EssenceType_t {
ESS_UNKNOWN, // the file is not a supported AS-DCP or AS-02 essence container
- //
+ //
ESS_MPEG2_VES, // the file contains an MPEG-2 video elementary stream
// d-cinema essence types (AS-DCP)
@@ -1106,7 +1106,7 @@ namespace ASDCP {
{
ui32_t Pcap; // Pcap = 0 means that no extended capabilities are required
i8_t N; // Number of Ccap elements, or NoExtendedCapabilitiesSignaled if no Extended Capabilities are signaled
- ui16_t Ccap[MaxCapabilities];
+ ui16_t Ccap[MaxCapabilities];
};
struct Profile_t // ISO 15444-1
@@ -1146,7 +1146,7 @@ namespace ASDCP {
QuantizationDefault_t QuantizationDefault;
ExtendedCapabilities_t ExtendedCapabilities;
Profile_t Profile;
- CorrespondingProfile_t CorrespondingProfile;
+ CorrespondingProfile_t CorrespondingProfile;
};
// Print debugging information to std::ostream
@@ -1186,6 +1186,7 @@ namespace ASDCP {
// byte of the data segment. Set this value to zero if you want
// encrypted headers.
Result_t OpenReadFrame(const std::string& filename, FrameBuffer&) const;
+ Result_t OpenReadFrame(const unsigned char* data, int size, FrameBuffer&) const;
// Fill a PictureDescriptor struct with the values from the file's codestream.
// Returns RESULT_INIT if the file is not open.
@@ -1274,6 +1275,8 @@ namespace ASDCP {
// Closes the MXF file, writing the index and revised header.
Result_t Finalize();
+
+ ui64_t Tell() const;
};
//
@@ -1389,6 +1392,8 @@ namespace ASDCP {
// Closes the MXF file, writing the index and revised header. Returns
// RESULT_SPHASE if WriteFrame was called an odd number of times.
Result_t Finalize();
+
+ ui64_t Tell() const;
};
//
diff --git a/src/AS_DCP_JP2K.cpp b/src/AS_DCP_JP2K.cpp
index 06f86cd..6744c09 100755
--- a/src/AS_DCP_JP2K.cpp
+++ b/src/AS_DCP_JP2K.cpp
@@ -203,7 +203,7 @@ ASDCP::JP2K::PictureDescriptorDump(const PictureDescriptor& PDesc, FILE* stream)
PDesc.ImageComponents[i].YRsize
);
}
-
+
fprintf(stream, " Scod: %hhu\n", PDesc.CodingStyleDefault.Scod);
fprintf(stream, " ProgressionOrder: %hhu\n", PDesc.CodingStyleDefault.SGcod.ProgressionOrder);
fprintf(stream, " NumberOfLayers: %hd\n",
@@ -273,7 +273,7 @@ ASDCP::JP2K::PictureDescriptorDump(const PictureDescriptor& PDesc, FILE* stream)
}
}
-
+
}
@@ -349,9 +349,9 @@ ASDCP::JP2K_PDesc_to_MD(const JP2K::PictureDescriptor& PDesc,
// Corresponding profile
if (PDesc.CorrespondingProfile.N == 0) {
-
+
EssenceSubDescriptor.J2KCorrespondingProfile.set_has_value(false);
-
+
} else {
EssenceSubDescriptor.J2KCorrespondingProfile.get().resize(PDesc.CorrespondingProfile.N);
@@ -442,7 +442,7 @@ ASDCP::MD_to_JP2K_PDesc(const ASDCP::MXF::GenericPictureEssenceDescriptor& Esse
memcpy(&PDesc.QuantizationDefault,
EssenceSubDescriptor.QuantizationDefault.const_get().RoData(),
EssenceSubDescriptor.QuantizationDefault.const_get().Length());
-
+
PDesc.QuantizationDefault.SPqcdLength = EssenceSubDescriptor.QuantizationDefault.const_get().Length() - 1;
// Profile
@@ -589,7 +589,7 @@ lh__Reader::OpenRead(const std::string& filename, EssenceType_t type)
{
DefaultLogSink().Warn("EditRate and SampleRate do not match (%.03f, %.03f).\n",
m_EditRate.Quotient(), m_SampleRate.Quotient());
-
+
if ( ( m_EditRate == EditRate_24 && m_SampleRate == EditRate_48 )
|| ( m_EditRate == EditRate_25 && m_SampleRate == EditRate_50 )
|| ( m_EditRate == EditRate_30 && m_SampleRate == EditRate_60 )
@@ -737,7 +737,7 @@ ASDCP::JP2K::FrameBuffer::Dump(FILE* stream, ui32_t dump_len) const
stream = stderr;
fprintf(stream, "Frame: %06u, %7u bytes", m_FrameNumber, m_Size);
-
+
fputc('\n', stream);
if ( dump_len > 0 )
@@ -917,7 +917,7 @@ public:
Result_t result = RESULT_OK;
if ( phase == SP_LEFT )
- {
+ {
if ( FilePosition != m_LastPosition )
{
m_LastPosition = FilePosition;
@@ -1264,14 +1264,14 @@ lh__Writer::WriteFrame(const JP2K::FrameBuffer& FrameBuf, bool add_index,
if ( m_State.Test_READY() )
result = m_State.Goto_RUNNING(); // first time through
-
+
ui64_t StreamOffset = m_StreamOffset;
if ( ASDCP_SUCCESS(result) )
result = WriteEKLVPacket(FrameBuf, m_EssenceUL, MXF_BER_LENGTH, Ctx, HMAC);
if ( ASDCP_SUCCESS(result) && add_index )
- {
+ {
IndexTableSegment::IndexEntry Entry;
Entry.StreamOffset = StreamOffset;
m_FooterPart.PushIndexEntry(Entry);
@@ -1413,6 +1413,13 @@ ASDCP::JP2K::MXFWriter::Finalize()
}
+ui64_t
+ASDCP::JP2K::MXFWriter::Tell() const
+{
+ return m_Writer->m_File.TellPosition();
+}
+
+
//------------------------------------------------------------------------------------------
//
@@ -1617,6 +1624,12 @@ ASDCP::JP2K::MXFSWriter::Finalize()
return m_Writer->Finalize();
}
+ui64_t
+ASDCP::JP2K::MXFSWriter::Tell() const
+{
+ return m_Writer->m_File.TellPosition();
+}
+
//
// end AS_DCP_JP2K.cpp
//
diff --git a/src/JP2K_Codestream_Parser.cpp b/src/JP2K_Codestream_Parser.cpp
index d68b52a..878f6a1 100755
--- a/src/JP2K_Codestream_Parser.cpp
+++ b/src/JP2K_Codestream_Parser.cpp
@@ -90,6 +90,28 @@ public:
return result;
}
+
+ Result_t OpenReadFrame(const unsigned char* data, unsigned int size, FrameBuffer& FB)
+ {
+ if ( FB.Capacity() < size )
+ {
+ DefaultLogSink().Error("FrameBuf.Capacity: %u frame length: %u\n", FB.Capacity(), (ui32_t)size);
+ return RESULT_SMALLBUF;
+ }
+
+ ui32_t read_count;
+
+ memcpy(FB.Data(), data, size);
+ FB.Size(size);
+
+ byte_t start_of_data = 0; // out param
+ const Result_t result = ParseMetadataIntoDesc(FB, m_PDesc, &start_of_data);
+
+ if ( ASDCP_SUCCESS(result) )
+ FB.PlaintextOffset(start_of_data);
+
+ return result;
+ }
};
ASDCP::Result_t
@@ -148,7 +170,7 @@ ASDCP::JP2K::ParseMetadataIntoDesc(const FrameBuffer& FB, PictureDescriptor& PDe
DefaultLogSink().Error("Unexpected number of components: %u\n", PDesc.Csize);
return RESULT_RAW_FORMAT;
}
-
+
for ( i = 0; i < PDesc.Csize; i++ )
SIZ_.ReadComponent(i, PDesc.ImageComponents[i]);
}
@@ -162,7 +184,7 @@ ASDCP::JP2K::ParseMetadataIntoDesc(const FrameBuffer& FB, PictureDescriptor& PDe
DefaultLogSink().Error("Unexpectedly large CodingStyle data: %u\n", NextMarker.m_DataSize);
return RESULT_RAW_FORMAT;
}
-
+
memcpy(&PDesc.CodingStyleDefault, NextMarker.m_Data, NextMarker.m_DataSize);
break;
@@ -174,7 +196,7 @@ ASDCP::JP2K::ParseMetadataIntoDesc(const FrameBuffer& FB, PictureDescriptor& PDe
DefaultLogSink().Error("No quantization signaled. QCD size=%s.\n", NextMarker.m_DataSize);
return RESULT_RAW_FORMAT;
}
-
+
if ( NextMarker.m_DataSize > MaxDefaults )
{
DefaultLogSink().Error("Quantization Default length exceeds maximum %d\n", NextMarker.m_DataSize);
@@ -188,7 +210,7 @@ ASDCP::JP2K::ParseMetadataIntoDesc(const FrameBuffer& FB, PictureDescriptor& PDe
case MRK_CAP:
{
Accessor::CAP CAP_(NextMarker);
-
+
PDesc.ExtendedCapabilities.Pcap = CAP_.pcap();
PDesc.ExtendedCapabilities.N = CAP_.N();
@@ -271,6 +293,13 @@ ASDCP::JP2K::CodestreamParser::OpenReadFrame(const std::string& filename, FrameB
return m_Parser->OpenReadFrame(filename, FB);
}
+ASDCP::Result_t
+ASDCP::JP2K::CodestreamParser::OpenReadFrame(const unsigned char* data, int size, FrameBuffer& FB) const
+{
+ const_cast<ASDCP::JP2K::CodestreamParser*>(this)->m_Parser = new h__CodestreamParser;
+ return m_Parser->OpenReadFrame(data, size, FB);
+}
+
//
ASDCP::Result_t
ASDCP::JP2K::CodestreamParser::FillPictureDescriptor(PictureDescriptor& PDesc) const