summaryrefslogtreecommitdiff
path: root/src/h__Reader.cpp
diff options
context:
space:
mode:
authormilla <marc.illa@dolby.com>2021-05-26 13:32:55 +0200
committermilla <marc.illa@dolby.com>2021-06-03 13:50:11 +0200
commitfacf4f4c7a8ed65d59baed9020d5fa061b952874 (patch)
tree8c718f4b7690db47315ebf70b6443f3fba540cf7 /src/h__Reader.cpp
parent7a085ad0d445ffc63ec42a2faa69a82138931575 (diff)
FileReader pluggable at runtime
Diffstat (limited to 'src/h__Reader.cpp')
-rwxr-xr-xsrc/h__Reader.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/h__Reader.cpp b/src/h__Reader.cpp
index ce2abf6..c24f656 100755
--- a/src/h__Reader.cpp
+++ b/src/h__Reader.cpp
@@ -64,8 +64,7 @@ ASDCP::default_md_object_init()
//
//
-ASDCP::h__ASDCPReader::h__ASDCPReader(const Dictionary *d) :
- MXF::TrackFileReader<OP1aHeader, OPAtomIndexFooter>(d), m_BodyPart(d) {}
+ASDCP::h__ASDCPReader::h__ASDCPReader(const Dictionary *d, const Kumu::IFileReaderFactory& fileReaderFactory) : MXF::TrackFileReader<OP1aHeader, OPAtomIndexFooter>(d, fileReaderFactory), m_BodyPart(m_Dict) {}
ASDCP::h__ASDCPReader::~h__ASDCPReader() {}
@@ -127,8 +126,8 @@ ASDCP::h__ASDCPReader::OpenMXFRead(const std::string& filename)
// partition and read the partition pack
RIP::const_pair_iterator r_i = m_RIP.PairArray.begin();
r_i++;
- m_File.Seek((*r_i).ByteOffset);
- result = m_BodyPart.InitFromFile(m_File);
+ m_File->Seek((*r_i).ByteOffset);
+ result = m_BodyPart.InitFromFile(*m_File);
if( ASDCP_FAILURE(result) )
{
@@ -142,18 +141,18 @@ ASDCP::h__ASDCPReader::OpenMXFRead(const std::string& filename)
// this position will be at either
// a) the spot in the header partition where essence units appear, or
// b) right after the body partition header (where essence units appear)
- m_HeaderPart.BodyOffset = m_File.Tell();
+ m_HeaderPart.BodyOffset = m_File->TellPosition();
- result = m_File.Seek(m_HeaderPart.FooterPartition);
+ result = m_File->Seek(m_HeaderPart.FooterPartition);
if ( ASDCP_SUCCESS(result) )
{
m_IndexAccess.m_Lookup = &m_HeaderPart.m_Primer;
- result = m_IndexAccess.InitFromFile(m_File);
+ result = m_IndexAccess.InitFromFile(*m_File);
}
}
- m_File.Seek(m_HeaderPart.BodyOffset);
+ m_File->Seek(m_HeaderPart.BodyOffset);
return result;
}
@@ -181,7 +180,7 @@ ASDCP::h__ASDCPReader::LocateFrame(ui32_t FrameNum, Kumu::fpos_t& streamOffset,
//
Result_t
-ASDCP::KLReader::ReadKLFromFile(Kumu::FileReader& Reader)
+ASDCP::KLReader::ReadKLFromFile(Kumu::IFileReader& Reader)
{
ui32_t read_count;
ui32_t header_length = SMPTE_UL_LENGTH + MXF_BER_LENGTH;
@@ -241,7 +240,7 @@ ASDCP::KLReader::ReadKLFromFile(Kumu::FileReader& Reader)
// base subroutine for reading a KLV packet, assumes file position is at the first byte of the packet
Result_t
-ASDCP::Read_EKLV_Packet(Kumu::FileReader& File, const ASDCP::Dictionary& Dict,
+ASDCP::Read_EKLV_Packet(Kumu::IFileReader& File, const ASDCP::Dictionary& Dict,
const ASDCP::WriterInfo& Info, Kumu::fpos_t& LastPosition, ASDCP::FrameBuffer& CtFrameBuf,
ui32_t FrameNum, ui32_t SequenceNum, ASDCP::FrameBuffer& FrameBuf,
const byte_t* EssenceUL, AESDecContext* Ctx, HMACContext* HMAC)