webrtc/common_video/jpeg/main/test/test_buffer.cc

162 lines
3.1 KiB
C++

/*
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
// system includes
#include <assert.h>
#include <string.h> // memcpy
#include "test_buffer.h"
#include "vplib.h"
TestBuffer::TestBuffer():
_buffer(0),
_bufferSize(0),
_bufferLength(0),
_width(0),
_height(0)
{
//
}
TestBuffer::~TestBuffer()
{
_bufferLength = 0;
_bufferSize = 0;
if(_buffer)
{
delete [] _buffer;
_buffer = 0;
}
}
TestBuffer::TestBuffer(const TestBuffer& rhs)
:
_bufferLength(rhs._bufferLength),
_bufferSize(rhs._bufferSize),
_height(rhs._height),
_width(rhs._width),
_buffer(0)
{
// make sure that our buffer is big enough
_buffer = new WebRtc_UWord8[_bufferSize];
// only copy required length
memcpy(_buffer, rhs._buffer, _bufferLength);
}
WebRtc_UWord32
TestBuffer::GetWidth() const
{
return _width;
}
WebRtc_UWord32
TestBuffer::GetHeight() const
{
return _height;
}
void
TestBuffer::SetWidth(WebRtc_UWord32 width)
{
_width = width;
}
void
TestBuffer::SetHeight(WebRtc_UWord32 height)
{
_height = height;
}
void
TestBuffer::Free()
{
_bufferLength = 0;
_bufferSize = 0;
_height = 0;
_width = 0;
if(_buffer)
{
delete [] _buffer;
_buffer = 0;
}
}
void
TestBuffer::VerifyAndAllocate(WebRtc_UWord32 minimumSize)
{
if(minimumSize > _bufferSize)
{
// make sure that our buffer is big enough
WebRtc_UWord8 * newBufferBuffer = new WebRtc_UWord8[minimumSize];
if(_buffer)
{
// copy the old data
memcpy(newBufferBuffer, _buffer, _bufferSize);
delete [] _buffer;
}
_buffer = newBufferBuffer;
_bufferSize = minimumSize;
}
}
void
TestBuffer::UpdateLength(WebRtc_UWord32 newLength)
{
assert(newLength <= _bufferSize);
_bufferLength = newLength;
}
void
TestBuffer::CopyBuffer(WebRtc_UWord32 length, const WebRtc_UWord8* buffer)
{
assert(length <= _bufferSize);
memcpy(_buffer, buffer, length);
_bufferLength = length;
}
void
TestBuffer::CopyBuffer(TestBuffer& fromVideoBuffer)
{
assert(fromVideoBuffer.GetLength() <= _bufferSize);
assert(fromVideoBuffer.GetSize() <= _bufferSize);
_bufferLength = fromVideoBuffer.GetLength();
_height = fromVideoBuffer.GetHeight();
_width = fromVideoBuffer.GetWidth();
memcpy(_buffer, fromVideoBuffer.GetBuffer(), fromVideoBuffer.GetLength());
}
void
TestBuffer::Set(WebRtc_UWord8* tempBuffer,WebRtc_UWord32 tempSize, WebRtc_UWord32 tempLength)
{
_buffer = tempBuffer;
_bufferSize = tempSize;
_bufferLength = tempLength;
}
WebRtc_UWord8*
TestBuffer::GetBuffer() const
{
return _buffer;
}
WebRtc_UWord32
TestBuffer::GetSize() const
{
return _bufferSize;
}
WebRtc_UWord32
TestBuffer::GetLength() const
{
return _bufferLength;
}