Converted old jpeg_test tool to gtest unit test.
Restructured paths to new directory layout. Stefan: common_video/* Magnus: video_engine/* Niklas: Android.mk BUG= TEST=jpeg_unittests on Debug+Release on Linux, Mac, Windows. Valgrind on Linux passes without warnings. Review URL: https://webrtc-codereview.appspot.com/388007 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1691 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
38a0d28d35
commit
0a57aae75b
@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||||
#
|
#
|
||||||
# Use of this source code is governed by a BSD-style license
|
# 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
|
# that can be found in the LICENSE file in the root of the source
|
||||||
@ -37,7 +37,7 @@ include $(MY_WEBRTC_ROOT_PATH)/src/system_wrappers/source/Android.mk
|
|||||||
include $(MY_WEBRTC_ROOT_PATH)/src/voice_engine/main/source/Android.mk
|
include $(MY_WEBRTC_ROOT_PATH)/src/voice_engine/main/source/Android.mk
|
||||||
|
|
||||||
# video
|
# video
|
||||||
include $(MY_WEBRTC_ROOT_PATH)/src/common_video/jpeg/main/source/Android.mk
|
include $(MY_WEBRTC_ROOT_PATH)/src/common_video/jpeg/Android.mk
|
||||||
include $(MY_WEBRTC_ROOT_PATH)/src/common_video/libyuv/Android.mk
|
include $(MY_WEBRTC_ROOT_PATH)/src/common_video/libyuv/Android.mk
|
||||||
include $(MY_WEBRTC_ROOT_PATH)/src/modules/video_capture/main/source/Android.mk
|
include $(MY_WEBRTC_ROOT_PATH)/src/modules/video_capture/main/source/Android.mk
|
||||||
include $(MY_WEBRTC_ROOT_PATH)/src/modules/video_coding/codecs/i420/main/source/Android.mk
|
include $(MY_WEBRTC_ROOT_PATH)/src/modules/video_coding/codecs/i420/main/source/Android.mk
|
||||||
|
@ -10,6 +10,6 @@
|
|||||||
'includes': [
|
'includes': [
|
||||||
'../common_settings.gypi', # Common settings
|
'../common_settings.gypi', # Common settings
|
||||||
'libyuv/libyuv.gypi',
|
'libyuv/libyuv.gypi',
|
||||||
'jpeg/main/source/jpeg.gypi',
|
'jpeg/jpeg.gypi',
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||||
#
|
#
|
||||||
# Use of this source code is governed by a BSD-style license
|
# 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
|
# that can be found in the LICENSE file in the root of the source
|
||||||
@ -10,7 +10,7 @@ LOCAL_PATH := $(call my-dir)
|
|||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
include $(LOCAL_PATH)/../../../../../android-webrtc.mk
|
include $(LOCAL_PATH)/../../../android-webrtc.mk
|
||||||
|
|
||||||
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
||||||
LOCAL_MODULE := libwebrtc_jpeg
|
LOCAL_MODULE := libwebrtc_jpeg
|
||||||
@ -25,11 +25,9 @@ LOCAL_CFLAGS := \
|
|||||||
$(MY_WEBRTC_COMMON_DEFS)
|
$(MY_WEBRTC_COMMON_DEFS)
|
||||||
|
|
||||||
LOCAL_C_INCLUDES := \
|
LOCAL_C_INCLUDES := \
|
||||||
|
$(LOCAL_PATH)/include \
|
||||||
$(LOCAL_PATH)/../interface \
|
$(LOCAL_PATH)/../interface \
|
||||||
$(LOCAL_PATH)/../../../.. \
|
$(LOCAL_PATH)/../../../../ \
|
||||||
$(LOCAL_PATH)/../../../vplib/main/interface \
|
|
||||||
$(LOCAL_PATH)/../../../interface \
|
|
||||||
$(LOCAL_PATH)/../../../../../../ \
|
|
||||||
external/jpeg
|
external/jpeg
|
||||||
|
|
||||||
LOCAL_SHARED_LIBRARIES := \
|
LOCAL_SHARED_LIBRARIES := \
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Use of this source code is governed by a BSD-style license
|
* 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
|
* that can be found in the LICENSE file in the root of the source
|
||||||
@ -8,11 +8,7 @@
|
|||||||
* be found in the AUTHORS file in the root of the source tree.
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
#include "common_video/jpeg/data_manager.h"
|
||||||
* data_manager.cc
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "data_manager.h"
|
|
||||||
|
|
||||||
namespace webrtc
|
namespace webrtc
|
||||||
{
|
{
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Use of this source code is governed by a BSD-style license
|
* 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
|
* that can be found in the LICENSE file in the root of the source
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Use of this source code is governed by a BSD-style license
|
* 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
|
* that can be found in the LICENSE file in the root of the source
|
||||||
@ -8,10 +8,6 @@
|
|||||||
* be found in the AUTHORS file in the root of the source tree.
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* JPEG wrapper
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef WEBRTC_COMMON_VIDEO_JPEG
|
#ifndef WEBRTC_COMMON_VIDEO_JPEG
|
||||||
#define WEBRTC_COMMON_VIDEO_JPEG
|
#define WEBRTC_COMMON_VIDEO_JPEG
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Use of this source code is governed by a BSD-style license
|
* 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
|
* that can be found in the LICENSE file in the root of the source
|
||||||
@ -8,11 +8,6 @@
|
|||||||
* be found in the AUTHORS file in the root of the source tree.
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* jpeg.cc
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(WIN32)
|
#if defined(WIN32)
|
||||||
#include <basetsd.h>
|
#include <basetsd.h>
|
||||||
#endif
|
#endif
|
||||||
@ -20,8 +15,9 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "jpeg.h"
|
#include "common_video/jpeg/include/jpeg.h"
|
||||||
#include "data_manager.h"
|
#include "common_video/jpeg/data_manager.h"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#if defined(USE_SYSTEM_LIBJPEG)
|
#if defined(USE_SYSTEM_LIBJPEG)
|
||||||
#include <jpeglib.h>
|
#include <jpeglib.h>
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||||
#
|
#
|
||||||
# Use of this source code is governed by a BSD-style license
|
# 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
|
# that can be found in the LICENSE file in the root of the source
|
||||||
@ -18,14 +18,14 @@
|
|||||||
'webrtc_libyuv',
|
'webrtc_libyuv',
|
||||||
],
|
],
|
||||||
'include_dirs': [
|
'include_dirs': [
|
||||||
'../../../interface',
|
'include',
|
||||||
'../interface',
|
'<(webrtc_root)',
|
||||||
'../../../../../../',
|
'<(webrtc_root)/common_video/interface',
|
||||||
],
|
],
|
||||||
'direct_dependent_settings': {
|
'direct_dependent_settings': {
|
||||||
'include_dirs': [
|
'include_dirs': [
|
||||||
'../interface',
|
'include',
|
||||||
'../../../interface',
|
'<(webrtc_root)/common_video/interface',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
'conditions': [
|
'conditions': [
|
||||||
@ -55,7 +55,7 @@
|
|||||||
}],
|
}],
|
||||||
],
|
],
|
||||||
'sources': [
|
'sources': [
|
||||||
'../interface/jpeg.h',
|
'include/jpeg.h',
|
||||||
'data_manager.cc',
|
'data_manager.cc',
|
||||||
'data_manager.h',
|
'data_manager.h',
|
||||||
'jpeg.cc',
|
'jpeg.cc',
|
||||||
@ -67,17 +67,15 @@
|
|||||||
['build_with_chromium==0', {
|
['build_with_chromium==0', {
|
||||||
'targets': [
|
'targets': [
|
||||||
{
|
{
|
||||||
'target_name': 'jpeg_test',
|
'target_name': 'jpeg_unittests',
|
||||||
'type': 'executable',
|
'type': 'executable',
|
||||||
'dependencies': [
|
'dependencies': [
|
||||||
'webrtc_jpeg',
|
'webrtc_jpeg',
|
||||||
],
|
'<(webrtc_root)/../testing/gtest.gyp:gtest',
|
||||||
'include_dirs': [
|
'<(webrtc_root)/../test/test.gyp:test_support_main',
|
||||||
'../interface',
|
|
||||||
'../source',
|
|
||||||
],
|
],
|
||||||
'sources': [
|
'sources': [
|
||||||
'../test/test_jpeg.cc',
|
'jpeg_unittest.cc',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
] # targets
|
] # targets
|
123
src/common_video/jpeg/jpeg_unittest.cc
Normal file
123
src/common_video/jpeg/jpeg_unittest.cc
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2012 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "common_video/jpeg/include/jpeg.h"
|
||||||
|
#include "common_video/interface/video_image.h"
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
#include "testsupport/fileutils.h"
|
||||||
|
|
||||||
|
namespace webrtc {
|
||||||
|
|
||||||
|
const unsigned int kImageWidth = 640;
|
||||||
|
const unsigned int kImageHeight = 480;
|
||||||
|
|
||||||
|
class JpegTest: public testing::Test {
|
||||||
|
protected:
|
||||||
|
JpegTest()
|
||||||
|
: input_filename_(webrtc::test::ProjectRootPath() +
|
||||||
|
"test/data/common_video/jpeg/webrtc_logo.jpg"),
|
||||||
|
decoded_filename_(webrtc::test::OutputPath() + "TestJpegDec.yuv"),
|
||||||
|
encoded_filename_(webrtc::test::OutputPath() + "TestJpegEnc.jpg"),
|
||||||
|
encoded_buffer_(NULL) {}
|
||||||
|
virtual ~JpegTest() {}
|
||||||
|
|
||||||
|
void SetUp() {
|
||||||
|
encoder_ = new JpegEncoder();
|
||||||
|
decoder_ = new JpegDecoder();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TearDown() {
|
||||||
|
if (encoded_buffer_ != NULL) {
|
||||||
|
if (encoded_buffer_->_buffer != NULL) {
|
||||||
|
delete [] encoded_buffer_->_buffer;
|
||||||
|
}
|
||||||
|
delete encoded_buffer_;
|
||||||
|
}
|
||||||
|
delete encoder_;
|
||||||
|
delete decoder_;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reads an encoded image. Caller will have to deallocate the memory of this
|
||||||
|
// object and it's _buffer byte array.
|
||||||
|
EncodedImage* ReadEncodedImage(std::string input_filename) {
|
||||||
|
FILE* open_file = fopen(input_filename.c_str(), "rb");
|
||||||
|
assert(open_file != NULL);
|
||||||
|
size_t length = webrtc::test::GetFileSize(input_filename);
|
||||||
|
EncodedImage* encoded_buffer = new EncodedImage();
|
||||||
|
encoded_buffer->_buffer = new WebRtc_UWord8[length];
|
||||||
|
encoded_buffer->_size = length;
|
||||||
|
encoded_buffer->_length = length;
|
||||||
|
if (fread(encoded_buffer->_buffer, 1, length, open_file) != length) {
|
||||||
|
ADD_FAILURE() << "Error reading file:" << input_filename;
|
||||||
|
}
|
||||||
|
fclose(open_file);
|
||||||
|
return encoded_buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string input_filename_;
|
||||||
|
std::string decoded_filename_;
|
||||||
|
std::string encoded_filename_;
|
||||||
|
EncodedImage* encoded_buffer_;
|
||||||
|
JpegEncoder* encoder_;
|
||||||
|
JpegDecoder* decoder_;
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(JpegTest, Decode) {
|
||||||
|
encoded_buffer_ = ReadEncodedImage(input_filename_);
|
||||||
|
RawImage image_buffer;
|
||||||
|
EXPECT_EQ(0, decoder_->Decode(*encoded_buffer_, image_buffer));
|
||||||
|
EXPECT_GT(image_buffer._length, 0u);
|
||||||
|
EXPECT_EQ(kImageWidth, image_buffer._width);
|
||||||
|
EXPECT_EQ(kImageHeight, image_buffer._height);
|
||||||
|
delete [] image_buffer._buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(JpegTest, EncodeInvalidInputs) {
|
||||||
|
RawImage empty;
|
||||||
|
empty._width = 164;
|
||||||
|
empty._height = 164;
|
||||||
|
EXPECT_EQ(-1, encoder_->SetFileName(0));
|
||||||
|
EXPECT_EQ(-1, encoder_->Encode(empty));
|
||||||
|
|
||||||
|
empty._buffer = new WebRtc_UWord8[10];
|
||||||
|
empty._size = 0;
|
||||||
|
EXPECT_EQ(-1, encoder_->Encode(empty));
|
||||||
|
|
||||||
|
empty._size = 10;
|
||||||
|
empty._height = 0;
|
||||||
|
EXPECT_EQ(-1, encoder_->Encode(empty));
|
||||||
|
|
||||||
|
empty._height = 164;
|
||||||
|
empty._width = 0;
|
||||||
|
EXPECT_EQ(-1, encoder_->Encode(empty));
|
||||||
|
delete[] empty._buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(JpegTest, Encode) {
|
||||||
|
// Decode our input image then encode it again to a new file:
|
||||||
|
encoded_buffer_ = ReadEncodedImage(input_filename_);
|
||||||
|
RawImage image_buffer;
|
||||||
|
EXPECT_EQ(0, decoder_->Decode(*encoded_buffer_, image_buffer));
|
||||||
|
|
||||||
|
EXPECT_EQ(0, encoder_->SetFileName(encoded_filename_.c_str()));
|
||||||
|
EXPECT_EQ(0, encoder_->Encode(image_buffer));
|
||||||
|
|
||||||
|
// Save decoded image to file.
|
||||||
|
FILE* save_file = fopen(decoded_filename_.c_str(), "wb");
|
||||||
|
fwrite(image_buffer._buffer, 1, image_buffer._length, save_file);
|
||||||
|
fclose(save_file);
|
||||||
|
|
||||||
|
delete[] image_buffer._buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace webrtc
|
@ -1,161 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 "common_video/libyuv/include/libyuv.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;
|
|
||||||
}
|
|
||||||
|
|
@ -1,77 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef WEBRTC_COMMON_VIDEO_JPEG_TEST_BUFFER_H
|
|
||||||
#define WEBRTC_COMMON_VIDEO_JPEG_TEST_BUFFER_H
|
|
||||||
|
|
||||||
#include "typedefs.h"
|
|
||||||
|
|
||||||
class TestBuffer
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
TestBuffer();
|
|
||||||
|
|
||||||
virtual ~TestBuffer();
|
|
||||||
|
|
||||||
TestBuffer(const TestBuffer& rhs);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verifies that current allocated buffer size is larger than or equal to the input size.
|
|
||||||
* If the current buffer size is smaller, a new allocation is made and the old buffer data is copied to the new buffer.
|
|
||||||
*/
|
|
||||||
void VerifyAndAllocate(WebRtc_UWord32 minimumSize);
|
|
||||||
|
|
||||||
void UpdateLength(WebRtc_UWord32 newLength);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CopyBuffer(WebRtc_UWord32 length, const WebRtc_UWord8* fromBuffer);
|
|
||||||
|
|
||||||
void CopyBuffer(TestBuffer& fromBuffer);
|
|
||||||
|
|
||||||
void Free(); // Deletes frame buffer and resets members to zero
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets pointer to frame buffer
|
|
||||||
*/
|
|
||||||
WebRtc_UWord8* GetBuffer() const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets allocated buffer size
|
|
||||||
*/
|
|
||||||
WebRtc_UWord32 GetSize() const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets length of frame
|
|
||||||
*/
|
|
||||||
WebRtc_UWord32 GetLength() const;
|
|
||||||
|
|
||||||
|
|
||||||
WebRtc_UWord32 GetWidth() const;
|
|
||||||
WebRtc_UWord32 GetHeight() const;
|
|
||||||
|
|
||||||
void SetWidth(WebRtc_UWord32 width);
|
|
||||||
void SetHeight(WebRtc_UWord32 height);
|
|
||||||
|
|
||||||
private:
|
|
||||||
// TestBuffer& operator=(const TestBuffer& inBuffer);
|
|
||||||
|
|
||||||
private:
|
|
||||||
void Set(WebRtc_UWord8* buffer,WebRtc_UWord32 size,WebRtc_UWord32 length);
|
|
||||||
|
|
||||||
WebRtc_UWord8* _buffer; // Pointer to frame buffer
|
|
||||||
WebRtc_UWord32 _bufferSize; // Allocated buffer size
|
|
||||||
WebRtc_UWord32 _bufferLength; // Length (in bytes) of frame
|
|
||||||
WebRtc_UWord32 _width;
|
|
||||||
WebRtc_UWord32 _height;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,136 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* test_jpeg.cc
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <cassert>
|
|
||||||
#include <iostream>
|
|
||||||
#include <cmath>
|
|
||||||
#include <string>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
#include "video_image.h"
|
|
||||||
#include "jpeg.h"
|
|
||||||
|
|
||||||
using namespace webrtc;
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
if (argc < 1)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
std::string fileName = argv[1];
|
|
||||||
const char* fileNameDec = "TestJpegDec.yuv";
|
|
||||||
const char* fileNameEnc = "TestJpegEnc.jpg";
|
|
||||||
|
|
||||||
std::string str;
|
|
||||||
std::cout << "---------------------" << std::endl;
|
|
||||||
std::cout << "----- Test JPEG -----" << std::endl;
|
|
||||||
std::cout << "---------------------" << std::endl;
|
|
||||||
std::cout << " " << std::endl;
|
|
||||||
|
|
||||||
JpegDecoder* JpgDecPtr = new JpegDecoder( );
|
|
||||||
|
|
||||||
// Open input file
|
|
||||||
FILE* openFile = fopen(fileName.c_str(), "rb");
|
|
||||||
assert(openFile != NULL);
|
|
||||||
|
|
||||||
// Get file length
|
|
||||||
fseek(openFile, 0, SEEK_END);
|
|
||||||
size_t length = ftell(openFile);
|
|
||||||
fseek(openFile, 0, SEEK_SET);
|
|
||||||
|
|
||||||
|
|
||||||
// Read input file to buffer
|
|
||||||
EncodedImage encodedBuffer;
|
|
||||||
encodedBuffer._buffer = new WebRtc_UWord8[length];
|
|
||||||
encodedBuffer._size = length;
|
|
||||||
encodedBuffer._length = length;
|
|
||||||
if (fread(encodedBuffer._buffer, 1, length, openFile) != length)
|
|
||||||
{
|
|
||||||
printf("Error reading file %s\n", fileName.c_str());
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
fclose(openFile);
|
|
||||||
|
|
||||||
// ------------------
|
|
||||||
// Decode
|
|
||||||
// ------------------
|
|
||||||
|
|
||||||
RawImage imageBuffer;
|
|
||||||
int error = JpgDecPtr->Decode(encodedBuffer, imageBuffer);
|
|
||||||
|
|
||||||
std::cout << error << " = Decode(" << fileName.c_str() << ", "
|
|
||||||
"(" << imageBuffer._width <<
|
|
||||||
"x" << imageBuffer._height << "))" << std::endl;
|
|
||||||
|
|
||||||
if (error == 0)
|
|
||||||
{
|
|
||||||
// Save decoded image to file
|
|
||||||
FILE* saveFile = fopen(fileNameDec, "wb");
|
|
||||||
fwrite(imageBuffer._buffer, 1, imageBuffer._length, saveFile);
|
|
||||||
fclose(saveFile);
|
|
||||||
|
|
||||||
// ------------------
|
|
||||||
// Encode
|
|
||||||
// ------------------
|
|
||||||
|
|
||||||
JpegEncoder* JpegEncoderPtr = new JpegEncoder();
|
|
||||||
|
|
||||||
// Test invalid inputs
|
|
||||||
RawImage empty;
|
|
||||||
empty._width = 164;
|
|
||||||
empty._height = 164;
|
|
||||||
int error = JpegEncoderPtr->SetFileName(0);
|
|
||||||
assert(error == -1);
|
|
||||||
error = JpegEncoderPtr->Encode(empty);
|
|
||||||
assert(error == -1);
|
|
||||||
empty._buffer = new WebRtc_UWord8[10];
|
|
||||||
empty._size = 0;
|
|
||||||
error = JpegEncoderPtr->Encode(empty);
|
|
||||||
assert(error == -1);
|
|
||||||
empty._size = 10;
|
|
||||||
empty._height = 0;
|
|
||||||
error = JpegEncoderPtr->Encode(empty);
|
|
||||||
assert(error == -1);
|
|
||||||
empty._height = 164;
|
|
||||||
empty._width = 0;
|
|
||||||
error = JpegEncoderPtr->Encode(empty);
|
|
||||||
assert(error == -1);
|
|
||||||
|
|
||||||
error = JpegEncoderPtr->SetFileName(fileNameEnc);
|
|
||||||
assert(error == 0);
|
|
||||||
|
|
||||||
delete [] empty._buffer;
|
|
||||||
|
|
||||||
// Actual Encode
|
|
||||||
error = JpegEncoderPtr->Encode(imageBuffer);
|
|
||||||
assert(error == 0);
|
|
||||||
std::cout << error << " = Encode(" << fileNameDec << ")" << std::endl;
|
|
||||||
delete JpegEncoderPtr;
|
|
||||||
}
|
|
||||||
|
|
||||||
delete [] imageBuffer._buffer;
|
|
||||||
delete [] encodedBuffer._buffer;
|
|
||||||
delete JpgDecPtr;
|
|
||||||
|
|
||||||
std::cout << "Verify that the encoded and decoded images look correct."
|
|
||||||
<< std::endl;
|
|
||||||
std::cout << "Press enter to quit test...";
|
|
||||||
std::getline(std::cin, str);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Use of this source code is governed by a BSD-style license
|
* 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
|
* that can be found in the LICENSE file in the root of the source
|
||||||
@ -18,7 +18,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "common_video/interface/video_image.h"
|
#include "common_video/interface/video_image.h"
|
||||||
#include "common_video/jpeg/main/interface/jpeg.h"
|
#include "common_video/jpeg/include/jpeg.h"
|
||||||
#include "system_wrappers/interface/trace.h"
|
#include "system_wrappers/interface/trace.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#include "video_engine/vie_file_impl.h"
|
#include "video_engine/vie_file_impl.h"
|
||||||
|
|
||||||
#ifdef WEBRTC_VIDEO_ENGINE_FILE_API
|
#ifdef WEBRTC_VIDEO_ENGINE_FILE_API
|
||||||
#include "common_video/jpeg/main/interface/jpeg.h"
|
#include "common_video/jpeg/include/jpeg.h"
|
||||||
#include "system_wrappers/interface/condition_variable_wrapper.h"
|
#include "system_wrappers/interface/condition_variable_wrapper.h"
|
||||||
#include "system_wrappers/interface/critical_section_wrapper.h"
|
#include "system_wrappers/interface/critical_section_wrapper.h"
|
||||||
#include "system_wrappers/interface/trace.h"
|
#include "system_wrappers/interface/trace.h"
|
||||||
|
BIN
test/data/common_video/jpeg/webrtc_logo.jpg
Normal file
BIN
test/data/common_video/jpeg/webrtc_logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.9 KiB |
Loading…
x
Reference in New Issue
Block a user