56 lines
1.6 KiB
C++
56 lines
1.6 KiB
C++
/**
|
|
* @file
|
|
* Implementation of the ADTF default media description.
|
|
* @copyright
|
|
* @verbatim
|
|
Copyright @ 2017 Audi Electronics Venture GmbH. All rights reserved.
|
|
|
|
This Source Code Form is subject to the terms of the Mozilla
|
|
Public License, v. 2.0. If a copy of the MPL was not distributed
|
|
with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
If it is not possible or desirable to put the notice in a particular file, then
|
|
You may include the notice in a location (such as a LICENSE file in a
|
|
relevant directory) where a recipient would be likely to look for such a notice.
|
|
|
|
You may add additional accurate notices of copyright ownership.
|
|
@endverbatim
|
|
*/
|
|
|
|
#include "serialization.h"
|
|
#include "a_util/result/error_def.h"
|
|
|
|
namespace ddl
|
|
{
|
|
|
|
namespace serialization
|
|
{
|
|
//define all needed error types and values locally
|
|
_MAKE_RESULT(-12, ERR_MEMORY)
|
|
|
|
a_util::result::Result transform_to_buffer(const Decoder& decoder, a_util::memory::MemoryBuffer& buffer, bool zero)
|
|
{
|
|
DataRepresentation target_rep = decoder.getRepresentation() == deserialized ?
|
|
serialized :
|
|
deserialized;
|
|
size_t needed_size = decoder.getBufferSize(target_rep);
|
|
if (buffer.getSize() < needed_size)
|
|
{
|
|
if (!buffer.allocate(needed_size))
|
|
{
|
|
return ERR_MEMORY;
|
|
}
|
|
}
|
|
|
|
if (zero)
|
|
{
|
|
a_util::memory::set(buffer.getPtr(), buffer.getSize(), 0, buffer.getSize());
|
|
}
|
|
Codec codec = decoder.makeCodecFor(buffer.getPtr(), buffer.getSize(), target_rep);
|
|
return transform(decoder, codec);
|
|
}
|
|
|
|
}
|
|
|
|
}
|