/*
-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
erase();
const ui16_t* p = (ui16_t*)Reader->CurrentData();
ui32_t length = Reader->Remainder() / 2;
- char mb_buf[MB_LEN_MAX+1];
+ char mb_buf[MB_LEN_MAX];
+
+ mbstate_t ps;
+ memset(&ps, 0, sizeof(mbstate_t));
for ( ui32_t i = 0; i < length; i++ )
{
- int count = wctomb(mb_buf, KM_i16_BE(p[i]));
+ int count = wcrtomb(mb_buf, KM_i16_BE(p[i]), &ps);
if ( count == -1 )
{
ui32_t length = size();
ui32_t i = 0;
+ mbstate_t ps;
+ memset(&ps, 0, sizeof(mbstate_t));
+
while ( i < length )
{
- int count = mbtowc(&wcp, mbp+i, remainder);
+ int count = mbrtowc(&wcp, mbp+i, remainder, &ps);
if ( count == -1 )
{
{
if ( m_Lookup == 0 )
{
- DefaultLogSink().Error("No Primer object available\n");
+ DefaultLogSink().Error("No Primer object available.\n");
return RESULT_FAIL;
}
return str_buf;
}
+
+//
+bool
+ASDCP::MXF::J2KExtendedCapabilitiesType::Archive(Kumu::MemIOWriter* Writer) const {
+ if ( ! Writer->WriteUi32BE(Pcap) )
+ {
+ return false;
+ }
+
+ if ( ! Ccap.Archive(Writer) )
+ {
+ return false;
+ }
+
+ return true;
+}
+
+//
+bool
+ASDCP::MXF::J2KExtendedCapabilitiesType::Unarchive(Kumu::MemIOReader* Reader) {
+ if ( ! Reader->ReadUi32BE(&Pcap) )
+ {
+ return false;
+ }
+
+ if ( ! Ccap.Unarchive(Reader) )
+ {
+ return false;
+ }
+
+ return true;
+}
+
+//
+const char*
+ASDCP::MXF::J2KExtendedCapabilitiesType::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 < Ccap.size(); ++i )
+ {
+ snprintf(str_buf+(i*3), 4, "%02hx.", Ccap[i].value);
+ }
+
+ str_buf[str_len-1] = 0;
+ }
+ else
+ {
+ str_buf[0] = 0;
+ }
+
+ return str_buf;
+}
+
+
//
// end MXFTypes.cpp
//