summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2021-11-10 12:47:34 -0800
committerjhurst <jhurst@cinecert.com>2021-11-10 12:47:34 -0800
commitee09ede57c1469d6b926a33e166add3855aedee4 (patch)
treeb7695e07ef719f659452e2cd4a19e17ddcbdd865 /src
parent03aebe66dcfaa1142a095bccc2c618fd922a0cb9 (diff)
Added recognition of IAB files
Diffstat (limited to 'src')
-rw-r--r--src/as-02-info.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/as-02-info.cpp b/src/as-02-info.cpp
index 79fe41b..b9b281c 100644
--- a/src/as-02-info.cpp
+++ b/src/as-02-info.cpp
@@ -553,6 +553,33 @@ class MyAudioDescriptor : public PCM::AudioDescriptor
}
};
+struct IabDescriptor
+{
+ int ContainerDuration;
+ IabDescriptor() : ContainerDuration(0) {}
+};
+
+class MyIabDescriptor : public IabDescriptor
+{
+ public:
+ void FillDescriptor(AS_02::IAB::MXFReader& reader) {
+ const Dictionary& Dict = DefaultCompositeDict();
+ IABEssenceDescriptor *essence_descriptor_mxf = 0;
+
+ std::list<MXF::InterchangeObject*> object_list;
+ reader.OP1aHeader().GetMDObjectsByType(DefaultSMPTEDict().ul(MDD_IABEssenceDescriptor), object_list);
+
+ if ( ! object_list.empty() )
+ {
+ essence_descriptor_mxf = dynamic_cast<MXF::IABEssenceDescriptor*>(object_list.back());
+ assert(essence_descriptor_mxf);
+ ContainerDuration = (int)essence_descriptor_mxf->ContainerDuration.get();
+ }
+ }
+ void Dump(FILE* stream) {}
+ void MyDump(FILE* stream) {}
+};
+
class MyTextDescriptor : public TimedText::TimedTextDescriptor
{
public:
@@ -927,6 +954,11 @@ show_file_info(CommandOptions& Options, const Kumu::IFileReaderFactory& fileRead
if ( ASDCP_SUCCESS(result) && Options.showcoding_flag )
wrapper.dump_WaveAudioDescriptor(stdout);
}
+ else if ( EssenceType == ESS_AS02_IAB )
+ {
+ FileInfoWrapper<AS_02::IAB::MXFReader, MyIabDescriptor> wrapper(fileReaderFactory);
+ result = wrapper.file_info(Options, "IAB audio");
+ }
else
{
fprintf(stderr, "Unknown/unsupported essence type: %s\n", Options.filenames.front().c_str());