summaryrefslogtreecommitdiff
path: root/src/as-02-info.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/as-02-info.cpp
parent7a085ad0d445ffc63ec42a2faa69a82138931575 (diff)
FileReader pluggable at runtime
Diffstat (limited to 'src/as-02-info.cpp')
-rw-r--r--src/as-02-info.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/as-02-info.cpp b/src/as-02-info.cpp
index 2ac42fe..d1b823c 100644
--- a/src/as-02-info.cpp
+++ b/src/as-02-info.cpp
@@ -39,6 +39,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <KM_log.h>
#include <AS_DCP.h>
#include <AS_02.h>
+#include <AS_02_IAB.h>
#include <JP2K.h>
#include <AS_02_ACES.h>
#include <ACES.h>
@@ -646,7 +647,7 @@ class FileInfoWrapper
}
public:
- FileInfoWrapper() : m_MaxBitrate(0.0), m_AvgBitrate(0.0) {}
+ FileInfoWrapper(const IFileReaderFactory& fileReaderFactory) : m_MaxBitrate(0.0), m_AvgBitrate(0.0), m_Reader(fileReaderFactory) {}
virtual ~FileInfoWrapper() {}
Result_t
@@ -862,17 +863,17 @@ public:
// Read header metadata from an ASDCP file
//
Result_t
-show_file_info(CommandOptions& Options)
+show_file_info(CommandOptions& Options, const Kumu::IFileReaderFactory& fileReaderFactory)
{
EssenceType_t EssenceType;
- Result_t result = ASDCP::EssenceType(Options.filenames.front().c_str(), EssenceType);
+ Result_t result = ASDCP::EssenceType(Options.filenames.front().c_str(), EssenceType, fileReaderFactory);
if ( ASDCP_FAILURE(result) )
return result;
if ( EssenceType == ESS_AS02_JPEG_2000 )
{
- FileInfoWrapper<AS_02::JP2K::MXFReader, MyPictureDescriptor> wrapper;
+ FileInfoWrapper<AS_02::JP2K::MXFReader, MyPictureDescriptor> wrapper(fileReaderFactory);
result = wrapper.file_info(Options, "JPEG 2000 pictures");
if ( KM_SUCCESS(result) )
@@ -896,7 +897,7 @@ show_file_info(CommandOptions& Options)
else if ( EssenceType == ESS_AS02_ACES )
{
- FileInfoWrapper<AS_02::ACES::MXFReader, MyACESPictureDescriptor> wrapper;
+ FileInfoWrapper<AS_02::ACES::MXFReader, MyACESPictureDescriptor> wrapper(fileReaderFactory);
result = wrapper.file_info(Options, "ACES pictures");
if ( KM_SUCCESS(result) )
@@ -920,7 +921,7 @@ show_file_info(CommandOptions& Options)
else if ( EssenceType == ESS_AS02_PCM_24b_48k || EssenceType == ESS_AS02_PCM_24b_96k )
{
- FileInfoWrapper<AS_02::PCM::MXFReader, MyAudioDescriptor> wrapper;
+ FileInfoWrapper<AS_02::PCM::MXFReader, MyAudioDescriptor> wrapper(fileReaderFactory);
result = wrapper.file_info(Options, "PCM audio");
if ( ASDCP_SUCCESS(result) && Options.showcoding_flag )
@@ -929,14 +930,14 @@ show_file_info(CommandOptions& Options)
else
{
fprintf(stderr, "Unknown/unsupported essence type: %s\n", Options.filenames.front().c_str());
- Kumu::FileReader Reader;
+ Kumu::IFileReader* Reader = fileReaderFactory.CreateFileReader();
const Dictionary* Dict = &DefaultCompositeDict();
MXF::OP1aHeader TestHeader(Dict);
- result = Reader.OpenRead(Options.filenames.front().c_str());
+ result = Reader->OpenRead(Options.filenames.front().c_str());
if ( ASDCP_SUCCESS(result) )
- result = TestHeader.InitFromFile(Reader); // test UL and OP
+ result = TestHeader.InitFromFile(*Reader); // test UL and OP
if ( ASDCP_SUCCESS(result) )
{
@@ -956,8 +957,8 @@ show_file_info(CommandOptions& Options)
{
fputs("File is not MXF.\n", stdout);
}
- }
-
+ delete Reader;
+ }
return result;
}
@@ -984,10 +985,10 @@ main(int argc, const char** argv)
}
init_rate_info();
-
+ Kumu::FileReaderFactory defaultFactory;
while ( ! Options.filenames.empty() && ASDCP_SUCCESS(result) )
{
- result = show_file_info(Options);
+ result = show_file_info(Options, defaultFactory);
Options.filenames.pop_front();
}