summaryrefslogtreecommitdiff
path: root/src/h__Writer.cpp
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2010-06-09 21:27:32 +0000
committerjhurst <>2010-06-09 21:27:32 +0000
commita3900f7b93b5f405a3c6a414aafb7099f2a5c6da (patch)
tree6f22cfeacd69ccd45b7dd044968a0f6f6d5fc8cb /src/h__Writer.cpp
parentfab4dcb49724dc9cdade3857a3f438c22c1df0f9 (diff)
buggy less
Diffstat (limited to 'src/h__Writer.cpp')
-rwxr-xr-xsrc/h__Writer.cpp16
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());