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/asdcp-info.cpp | |
| parent | 7a085ad0d445ffc63ec42a2faa69a82138931575 (diff) | |
FileReader pluggable at runtime
Diffstat (limited to 'src/asdcp-info.cpp')
| -rwxr-xr-x | src/asdcp-info.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/asdcp-info.cpp b/src/asdcp-info.cpp index b8876fe..f8a301c 100755 --- a/src/asdcp-info.cpp +++ b/src/asdcp-info.cpp @@ -309,7 +309,7 @@ class FileInfoWrapper KM_NO_COPY_CONSTRUCT(FileInfoWrapper); public: - FileInfoWrapper() : m_MaxBitrate(0.0), m_AvgBitrate(0.0) {} + FileInfoWrapper(const Kumu::IFileReaderFactory& fileReaderFactory) : m_MaxBitrate(0.0), m_AvgBitrate(0.0), m_Reader(fileReaderFactory) {} virtual ~FileInfoWrapper() {} Result_t @@ -532,17 +532,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_MPEG2_VES ) { - FileInfoWrapper<ASDCP::MPEG2::MXFReader, MyVideoDescriptor> wrapper; + FileInfoWrapper<ASDCP::MPEG2::MXFReader, MyVideoDescriptor> wrapper(fileReaderFactory); result = wrapper.file_info(Options, "MPEG2 video"); if ( ASDCP_SUCCESS(result) && Options.showrate_flag ) @@ -550,7 +550,7 @@ show_file_info(CommandOptions& Options) } else if ( EssenceType == ESS_PCM_24b_48k || EssenceType == ESS_PCM_24b_96k ) { - FileInfoWrapper<ASDCP::PCM::MXFReader, MyAudioDescriptor> wrapper; + FileInfoWrapper<ASDCP::PCM::MXFReader, MyAudioDescriptor> wrapper(fileReaderFactory); result = wrapper.file_info(Options, "PCM audio"); if ( ASDCP_SUCCESS(result) && Options.showcoding_flag ) @@ -560,7 +560,7 @@ show_file_info(CommandOptions& Options) { if ( Options.stereo_image_flag ) { - FileInfoWrapper<ASDCP::JP2K::MXFSReader, MyStereoPictureDescriptor> wrapper; + FileInfoWrapper<ASDCP::JP2K::MXFSReader, MyStereoPictureDescriptor> wrapper(fileReaderFactory); result = wrapper.file_info(Options, "JPEG 2000 stereoscopic pictures"); if ( KM_SUCCESS(result) ) @@ -579,7 +579,7 @@ show_file_info(CommandOptions& Options) } else { - FileInfoWrapper<ASDCP::JP2K::MXFReader, MyPictureDescriptor>wrapper; + FileInfoWrapper<ASDCP::JP2K::MXFReader, MyPictureDescriptor>wrapper(fileReaderFactory); result = wrapper.file_info(Options, "JPEG 2000 pictures"); if ( KM_SUCCESS(result) ) @@ -599,7 +599,7 @@ show_file_info(CommandOptions& Options) } else if ( EssenceType == ESS_JPEG_2000_S ) { - FileInfoWrapper<ASDCP::JP2K::MXFSReader, MyStereoPictureDescriptor>wrapper; + FileInfoWrapper<ASDCP::JP2K::MXFSReader, MyStereoPictureDescriptor>wrapper(fileReaderFactory); result = wrapper.file_info(Options, "JPEG 2000 stereoscopic pictures"); if ( KM_SUCCESS(result) ) @@ -618,17 +618,17 @@ show_file_info(CommandOptions& Options) } else if ( EssenceType == ESS_TIMED_TEXT ) { - FileInfoWrapper<ASDCP::TimedText::MXFReader, MyTextDescriptor>wrapper; + FileInfoWrapper<ASDCP::TimedText::MXFReader, MyTextDescriptor>wrapper(fileReaderFactory); result = wrapper.file_info(Options, "Timed Text"); } else if ( EssenceType == ESS_DCDATA_UNKNOWN ) { - FileInfoWrapper<ASDCP::DCData::MXFReader, MyDCDataDescriptor> wrapper; + FileInfoWrapper<ASDCP::DCData::MXFReader, MyDCDataDescriptor> wrapper(fileReaderFactory); result = wrapper.file_info(Options, "D-Cinema Generic Data"); } else if ( EssenceType == ESS_DCDATA_DOLBY_ATMOS ) { - FileInfoWrapper<ASDCP::ATMOS::MXFReader, MyAtmosDescriptor> wrapper; + FileInfoWrapper<ASDCP::ATMOS::MXFReader, MyAtmosDescriptor> wrapper(fileReaderFactory); result = wrapper.file_info(Options, "Dolby ATMOS"); } else if ( EssenceType == ESS_AS02_PCM_24b_48k @@ -641,14 +641,14 @@ show_file_info(CommandOptions& Options) else { fprintf(stderr, "File is not AS-DCP: %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) ) { @@ -668,6 +668,7 @@ show_file_info(CommandOptions& Options) { fputs("File is not MXF.\n", stdout); } + delete Reader; } return result; @@ -696,9 +697,10 @@ main(int argc, const char** argv) return 3; } + 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(); } |
