diff options
| author | jhurst <jhurst@cinecert.com> | 2010-06-09 21:27:32 +0000 |
|---|---|---|
| committer | jhurst <> | 2010-06-09 21:27:32 +0000 |
| commit | a3900f7b93b5f405a3c6a414aafb7099f2a5c6da (patch) | |
| tree | 6f22cfeacd69ccd45b7dd044968a0f6f6d5fc8cb /src/h__Writer.cpp | |
| parent | fab4dcb49724dc9cdade3857a3f438c22c1df0f9 (diff) | |
buggy less
Diffstat (limited to 'src/h__Writer.cpp')
| -rwxr-xr-x | src/h__Writer.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/h__Writer.cpp b/src/h__Writer.cpp index 6152a35..2882e33 100755 --- a/src/h__Writer.cpp +++ b/src/h__Writer.cpp @@ -605,9 +605,21 @@ ASDCP::h__Writer::WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf, const byte } else { + ui32_t BER_length = MXF_BER_LENGTH; + + if ( FrameBuf.Size() > 0x00ffffff ) // Need BER integer longer than MXF_BER_LENGTH bytes + { + BER_length = Kumu::get_BER_length_for_value(FrameBuf.Size()); + + if ( BER_length == 0 ) + result = RESULT_KLV_CODING; + } + Overhead.WriteRaw((byte_t*)EssenceUL, SMPTE_UL_LENGTH); - Overhead.WriteBER(FrameBuf.Size(), MXF_BER_LENGTH); - result = m_File.Writev(Overhead.Data(), Overhead.Length()); + Overhead.WriteBER(FrameBuf.Size(), BER_length); + + if ( ASDCP_SUCCESS(result) ) + result = m_File.Writev(Overhead.Data(), Overhead.Length()); if ( ASDCP_SUCCESS(result) ) result = m_File.Writev((byte_t*)FrameBuf.RoData(), FrameBuf.Size()); |
