diff options
| author | jhurst <jhurst@cinecert.com> | 2019-11-30 08:27:39 -0800 |
|---|---|---|
| committer | jhurst <jhurst@cinecert.com> | 2019-11-30 08:27:39 -0800 |
| commit | ea1f0d2be28bf833d792a8dd66c94e1d0b0525bd (patch) | |
| tree | b41e7ad78cec1869ac22da3eb83e76fe44a89883 /src | |
| parent | fbb01f302c8fda1f58d27715d4e5e90815d83725 (diff) | |
Finished implementation of J2KExtendedCapabilities
Diffstat (limited to 'src')
| -rwxr-xr-x | src/MXFTypes.cpp | 65 | ||||
| -rwxr-xr-x | src/MXFTypes.h | 25 |
2 files changed, 72 insertions, 18 deletions
diff --git a/src/MXFTypes.cpp b/src/MXFTypes.cpp index a98a4d2..30e36b9 100755 --- a/src/MXFTypes.cpp +++ b/src/MXFTypes.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2016, John Hurst +Copyright (c) 2005-2019, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -774,6 +774,69 @@ ASDCP::MXF::Raw::EncodeString(char* str_buf, ui32_t buf_len) const return str_buf; } + +// +bool +ASDCP::MXF::J2KExtendedCapabilities::Archive(Kumu::MemIOWriter* Writer) const { + if ( ! Writer->WriteUi8(Pcap) ) + { + return false; + } + + for ( int i = 0; i < JP2K::MaxCapabilities; ++i ) + { + if ( ! Writer->WriteUi16BE(Ccapi[i]) ) + { + return false; + } + } + + return true; +} + +// +bool +ASDCP::MXF::J2KExtendedCapabilities::Unarchive(Kumu::MemIOReader* Reader) { + if ( ! Reader->ReadUi8(&Pcap) ) + { + return false; + } + + for ( int i = 0; i < JP2K::MaxCapabilities; ++i ) + { + if ( ! Reader->ReadUi16BE(&Ccapi[i]) ) + { + return false; + } + } + + return true; +} + +// +const char* +ASDCP::MXF::J2KExtendedCapabilities::EncodeString(char* str_buf, ui32_t buf_len) const +{ + const int str_len = ( sizeof(ui16_t) + 1 ) * JP2K::MaxCapabilities; + + if ( Pcap != 0 && buf_len > str_len ) + { + for ( int i = 0; i < JP2K::MaxCapabilities; ++i ) + { + snprintf(str_buf+(i*3), 4, "%02hx.", Ccapi[i]); + } + + str_buf[str_len-1] = 0; + } + else + { + str_buf[0] = 0; + } + + return str_buf; +} + + // // end MXFTypes.cpp // diff --git a/src/MXFTypes.h b/src/MXFTypes.h index 0c79e8c..3220108 100755 --- a/src/MXFTypes.h +++ b/src/MXFTypes.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2005-2016, John Hurst +Copyright (c) 2005-2019, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -33,6 +33,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define _MXFTYPES_H_ #include "KLV.h" +#include "AS_DCP.h" #include <list> #include <vector> #include <set> @@ -688,29 +689,19 @@ namespace ASDCP const char* EncodeString(char* str_buf, ui32_t buf_len) const; }; + // class J2KExtendedCapabilities : public Kumu::IArchive { public: - i8_t Pcap; - i8_t Ccapi[16]; // this is certainly wrong, need the spec + ui8_t Pcap; // TODO: is this the right type? + ui16_t Ccapi[JP2K::MaxCapabilities]; bool HasValue() const { return true; } ui32_t ArchiveLength() const { return 0; } - bool Archive(Kumu::MemIOWriter* Writer) const { - return true; - } - - bool Unarchive(Kumu::MemIOReader* Reader) { - return true; - } - - const char* EncodeString(char* str_buf, ui32_t buf_len) const - { - str_buf[0] = 0; - return str_buf; - } - + bool Archive(Kumu::MemIOWriter* Writer) const; + bool Unarchive(Kumu::MemIOReader* Reader); + const char* EncodeString(char* str_buf, ui32_t buf_len) const; }; } // namespace MXF |
