video coding test: deleting unused file(resampler_test.cc)
Review URL: http://webrtc-codereview.appspot.com/137008 git-svn-id: http://webrtc.googlecode.com/svn/trunk@469 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
2c3b1fb4f3
commit
d24a97fae1
@ -1,241 +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.
|
||||
*/
|
||||
|
||||
#include "ResamplerTest.h"
|
||||
#include "video_coding.h"
|
||||
#include "tick_time.h"
|
||||
#include "../source/event.h"
|
||||
#include "VCMSpatialResampler.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
using namespace webrtc;
|
||||
|
||||
int ResamplerTest()
|
||||
{
|
||||
VideoCodingModule* vcm = VideoCodingModule::Create(1);
|
||||
class ResamplerTest test(vcm);
|
||||
int ret = test.Perform();
|
||||
VideoCodingModule::Destroy(vcm);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ResamplerTest::ResamplerTest(VideoCodingModule* vcm):
|
||||
_width(0),
|
||||
_height(0),
|
||||
_timeStamp(0),
|
||||
_lengthSourceFrame(0),
|
||||
_vcmMacrosTests(0),
|
||||
_vcmMacrosErrors(0),
|
||||
_vcm(vcm)
|
||||
{
|
||||
//
|
||||
}
|
||||
ResamplerTest::~ResamplerTest()
|
||||
{
|
||||
//
|
||||
}
|
||||
void
|
||||
ResamplerTest::Setup()
|
||||
{
|
||||
_inname= "../../../../../codecs_video/testFiles/foreman.yuv";
|
||||
_width = 352;
|
||||
_height = 288;
|
||||
_frameRate = 30;
|
||||
_lengthSourceFrame = 3*_width*_height/2;
|
||||
_encodedName = "../ResamplerTest_encoded.yuv";
|
||||
|
||||
if ((_sourceFile = fopen(_inname.c_str(), "rb")) == NULL)
|
||||
{
|
||||
printf("Cannot read file %s.\n", _inname.c_str());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ((_encodedFile = fopen(_encodedName.c_str(), "wb")) == NULL)
|
||||
{
|
||||
printf("Cannot write encoded file.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
WebRtc_Word32 ResamplerTest::Perform()
|
||||
{
|
||||
// Make sure this test isn't executed without simulated clocks
|
||||
#if !defined(TICK_TIME_DEBUG) || !defined(EVENT_DEBUG)
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
// Setup test
|
||||
Setup();
|
||||
|
||||
ResamplerStandAloneTest();
|
||||
|
||||
ResamplerVCMTest();
|
||||
|
||||
TearDown();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
ResamplerTest::ResamplerVCMTest()
|
||||
{
|
||||
// Create the input frame and read a frame from file
|
||||
VideoFrame sourceFrame;
|
||||
sourceFrame.VerifyAndAllocate(_lengthSourceFrame);
|
||||
fread(sourceFrame.Buffer(), 1, _lengthSourceFrame, _sourceFile);
|
||||
sourceFrame.SetLength(_lengthSourceFrame);
|
||||
sourceFrame.SetHeight(_height);
|
||||
sourceFrame.SetWidth(_width);
|
||||
|
||||
TEST_EXIT_ON_FAIL(_vcm->InitializeReceiver() == VCM_OK);
|
||||
TEST_EXIT_ON_FAIL(_vcm->InitializeSender() == VCM_OK);
|
||||
|
||||
TEST_EXIT_ON_FAIL(_vcm->EnableInputFrameInterpolation(true) == VCM_OK);
|
||||
|
||||
TestSizeVCM(sourceFrame, 128, 80); // Cut, decimation 1x, interpolate
|
||||
TestSizeVCM(sourceFrame, 352/2, 288/2); // Even decimation
|
||||
TestSizeVCM(sourceFrame, 352, 288); // No resampling
|
||||
TestSizeVCM(sourceFrame, 2*352, 2*288); // Upsampling 2x
|
||||
TestSizeVCM(sourceFrame, 400, 256); // Upsampling 1.5x and cut
|
||||
TestSizeVCM(sourceFrame, 960, 720); // Upsampling 3.5x and cut
|
||||
|
||||
TEST_EXIT_ON_FAIL(_vcm->EnableInputFrameInterpolation(false) == VCM_OK);
|
||||
|
||||
TestSizeVCM(sourceFrame, 320, 240); // Cropped
|
||||
TestSizeVCM(sourceFrame, 1280, 720); // Padded
|
||||
}
|
||||
|
||||
void
|
||||
ResamplerTest::TestSizeVCM(VideoFrame& sourceFrame, WebRtc_UWord32 targetWidth, WebRtc_UWord32 targetHeight)
|
||||
{
|
||||
assert(false);
|
||||
/*
|
||||
std::ostringstream filename;
|
||||
filename << "../VCM_Resampler_" << targetWidth << "x" << targetHeight << "_30Hz_P420.yuv";
|
||||
std::cout << "Watch " << filename.str() << " and verify that it is okay." << std::endl;
|
||||
FILE* decodedFile = fopen(filename.str().c_str(), "wb");
|
||||
|
||||
_timeStamp += (WebRtc_UWord32)(9e4 / _frameRate);
|
||||
sourceFrame.SetTimeStamp(_timeStamp);
|
||||
|
||||
VCMDecodeCompleteCallback decodeCallback(decodedFile);
|
||||
VCMEncodeCompleteCallback encodeCompleteCallback(_encodedFile);
|
||||
TEST_EXIT_ON_FAIL(_vcm->RegisterReceiveCallback(&decodeCallback) == VCM_OK);
|
||||
TEST_EXIT_ON_FAIL(_vcm->RegisterTransportCallback(&encodeCompleteCallback) == VCM_OK);
|
||||
encodeCompleteCallback.RegisterReceiverVCM(_vcm);
|
||||
encodeCompleteCallback.SetCodecType(webrtc::VideoCodecVP8);
|
||||
|
||||
RegisterCodec(targetWidth, targetHeight);
|
||||
encodeCompleteCallback.SetFrameDimensions(targetWidth, targetHeight);
|
||||
TEST(_vcm->AddVideoFrame(sourceFrame) == VCM_OK);
|
||||
TEST(_vcm->Decode() == VCM_OK);
|
||||
|
||||
fclose(decodedFile);
|
||||
*/
|
||||
}
|
||||
|
||||
void
|
||||
ResamplerTest::RegisterCodec(WebRtc_UWord32 width, WebRtc_UWord32 height)
|
||||
{
|
||||
// Register codecs
|
||||
assert(false);
|
||||
/*
|
||||
VideoCodec codec;
|
||||
VideoCodingModule::Codec(webrtc::kVideoCodecVP8, &codec);
|
||||
codec.width = static_cast<WebRtc_Word16>(width);
|
||||
codec.height = static_cast<WebRtc_Word16>(height);
|
||||
TEST(_vcm->RegisterSendCodec(&codec, 1, 1440) == VCM_OK);
|
||||
TEST(_vcm->RegisterReceiveCodec(&codec, 1) == VCM_OK);
|
||||
TEST(_vcm->SetChannelParameters(2000, 0, 0) == VCM_OK);
|
||||
*/
|
||||
}
|
||||
|
||||
WebRtc_Word32
|
||||
ResamplerTest::ResamplerStandAloneTest()
|
||||
{
|
||||
// Create the input frame and read a frame from file
|
||||
VideoFrame sourceFrame;
|
||||
sourceFrame.VerifyAndAllocate(_lengthSourceFrame);
|
||||
fread(sourceFrame.Buffer(), 1, _lengthSourceFrame, _sourceFile);
|
||||
sourceFrame.SetLength(_lengthSourceFrame);
|
||||
sourceFrame.SetHeight(_height);
|
||||
sourceFrame.SetWidth(_width);
|
||||
|
||||
TestSize(sourceFrame, 100, 50); // Cut, decimation 1x, interpolate
|
||||
TestSize(sourceFrame, 352/2, 288/2); // Even decimation
|
||||
TestSize(sourceFrame, 352, 288); // No resampling
|
||||
TestSize(sourceFrame, 2*352, 2*288); // Even upsampling
|
||||
TestSize(sourceFrame, 400, 256); // Upsampling 1.5x and cut
|
||||
TestSize(sourceFrame, 960, 720); // Upsampling 3.5x and cut
|
||||
TestSize(sourceFrame, 1280, 720); // Upsampling 4x and cut
|
||||
|
||||
sourceFrame.Free();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
ResamplerTest::TestSize(VideoFrame& sourceFrame, WebRtc_UWord32 targetWidth, WebRtc_UWord32 targetHeight)
|
||||
{
|
||||
VCMSimpleSpatialResampler resampler;
|
||||
VideoFrame outFrame;
|
||||
std::ostringstream filename;
|
||||
filename << "../Resampler_" << targetWidth << "x" << targetHeight << "_30Hz_P420.yuv";
|
||||
std::cout << "Watch " << filename.str() << " and verify that it is okay." << std::endl;
|
||||
FILE* standAloneFile = fopen(filename.str().c_str(), "wb");
|
||||
//resampler.EnableUpSampling(true);
|
||||
resampler.EnableInterpolation(true);
|
||||
TEST(resampler.SetTargetFrameSize(targetWidth, targetHeight) == VCM_OK);
|
||||
TEST(resampler.ResampleFrame(sourceFrame, outFrame) == VCM_OK);
|
||||
TEST(outFrame.Buffer() != NULL);
|
||||
TEST(outFrame.Length() == (targetWidth * targetHeight * 3 / 2));
|
||||
|
||||
// Write to file for visual inspection
|
||||
fwrite(outFrame.Buffer(), 1, outFrame.Length(), standAloneFile);
|
||||
|
||||
outFrame.Free();
|
||||
fclose(standAloneFile);
|
||||
}
|
||||
|
||||
void
|
||||
ResamplerTest::Print()
|
||||
{
|
||||
printf("\nVCM Resampler Test: \n\n%i tests completed\n", _vcmMacrosTests);
|
||||
if (_vcmMacrosErrors > 0)
|
||||
{
|
||||
printf("%i FAILED\n\n", _vcmMacrosErrors);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("ALL PASSED\n\n");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ResamplerTest::TearDown()
|
||||
{
|
||||
fclose(_sourceFile);
|
||||
fclose(_encodedFile);
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
ResamplerTest::IncrementDebugClock(float frameRate)
|
||||
{
|
||||
for (int t= 0; t < 1000/frameRate; t++)
|
||||
{
|
||||
VCMTickTime::IncrementDebugClock();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user