diff options
| author | milla <marc.illa@dolby.com> | 2021-05-26 13:32:55 +0200 |
|---|---|---|
| committer | milla <marc.illa@dolby.com> | 2021-06-03 13:50:11 +0200 |
| commit | facf4f4c7a8ed65d59baed9020d5fa061b952874 (patch) | |
| tree | 8c718f4b7690db47315ebf70b6443f3fba540cf7 /src/as-02-info.cpp | |
| parent | 7a085ad0d445ffc63ec42a2faa69a82138931575 (diff) | |
FileReader pluggable at runtime
Diffstat (limited to 'src/as-02-info.cpp')
| -rw-r--r-- | src/as-02-info.cpp | 27 |
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(); } |
