Made it possible to render custom call output to file.

This is to enable quality tests using the custom call.

BUG=
TESTED=locally

Review URL: https://webrtc-codereview.appspot.com/1093005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3483 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
phoglund@webrtc.org 2013-02-07 08:52:08 +00:00
parent d83b9fdf45
commit 147c73ea60

View File

@ -14,10 +14,13 @@
#include <algorithm>
#include "gflags/gflags.h"
#include "video_engine/test/auto_test/interface/vie_autotest.h"
#include "video_engine/test/auto_test/interface/vie_autotest_defines.h"
#include "video_engine/test/auto_test/primitives/choice_helpers.h"
#include "video_engine/test/auto_test/primitives/general_primitives.h"
#include "video_engine/test/auto_test/primitives/input_helpers.h"
#include "video_engine/test/libvietest/include/vie_to_file_renderer.h"
#define VCM_RED_PAYLOAD_TYPE 96
#define VCM_ULPFEC_PAYLOAD_TYPE 97
@ -37,6 +40,10 @@
#define DEFAULT_VIDEO_PROTECTION_METHOD "None"
#define DEFAULT_TEMPORAL_LAYER "0"
DEFINE_string(render_custom_call_remote_to, "", "Specify to render the remote "
"stream of a custom call to the provided filename instead of showing it in "
"window 2. The file will end up in the default output directory (out/).");
enum StatisticsType {
kSendStatistic,
kReceivedStatistic
@ -442,11 +449,23 @@ int ViEAutoTest::ViECustomCall() {
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);
error = vie_renderer->AddRenderer(video_channel, _window2, 1, 0.0, 0.0, 1.0,
1.0);
number_of_errors += ViETest::TestError(error == 0,
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);
ViEToFileRenderer file_renderer;
if (FLAGS_render_custom_call_remote_to == "") {
error = vie_renderer->AddRenderer(video_channel, _window2, 1, 0.0, 0.0,
1.0, 1.0);
number_of_errors += ViETest::TestError(error == 0,
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);
} else {
std::string output_path = ViETest::GetResultOutputPath();
std::string filename = FLAGS_render_custom_call_remote_to;
ViETest::Log("Rendering remote stream to %s: you will not see any output "
"in the second window.", (output_path + filename).c_str());
file_renderer.PrepareForRendering(output_path, filename);
RenderToFile(vie_renderer, video_channel, &file_renderer);
}
error = vie_network->SetSendDestination(video_channel, ip_address.c_str(),
video_tx_port);
number_of_errors += ViETest::TestError(error == 0,
@ -655,6 +674,11 @@ int ViEAutoTest::ViECustomCall() {
number_of_errors += ViETest::TestError(error == 0,
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);
assert(FLAGS_render_custom_call_remote_to == "" &&
"Not implemented to change video capture device when "
"rendering to file!");
error = vie_capture->StartCapture(capture_id);
number_of_errors += ViETest::TestError(error == 0,
"ERROR: %s at line %d",
@ -850,6 +874,9 @@ int ViEAutoTest::ViECustomCall() {
}
}
if (FLAGS_render_custom_call_remote_to != "")
file_renderer.StopRendering();
// Testing finished. Tear down Voice and Video Engine.
// Tear down the VoE first.
error = voe_base->StopReceive(audio_channel);