blob: 6401cd1536fb9dd817d7d9d00dfd4bf7eac73aff [file] [log] [blame]
/*
* 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.
*/
#ifndef WEBRTC_VOICE_ENGINE_VOE_STANDARD_TEST_H
#define WEBRTC_VOICE_ENGINE_VOE_STANDARD_TEST_H
#include <stdio.h>
#include <string>
#include "gflags/gflags.h"
#include "webrtc/voice_engine/include/voe_audio_processing.h"
#include "webrtc/voice_engine/include/voe_base.h"
#include "webrtc/voice_engine/include/voe_errors.h"
#include "webrtc/voice_engine/include/voe_file.h"
#include "webrtc/voice_engine/include/voe_rtp_rtcp.h"
#include "webrtc/voice_engine/test/auto_test/resource_manager.h"
#include "webrtc/voice_engine/test/auto_test/voe_test_common.h"
#include "webrtc/voice_engine/test/auto_test/voe_test_interface.h"
#ifdef WEBRTC_VOICE_ENGINE_CODEC_API
#include "webrtc/voice_engine/include/voe_codec.h"
#endif
#ifdef WEBRTC_VOICE_ENGINE_EXTERNAL_MEDIA_API
#include "webrtc/voice_engine/include/voe_external_media.h"
#endif
#ifdef WEBRTC_VOICE_ENGINE_HARDWARE_API
#include "webrtc/voice_engine/include/voe_hardware.h"
#endif
#include "webrtc/voice_engine/include/voe_network.h"
#ifdef WEBRTC_VOICE_ENGINE_VIDEO_SYNC_API
#include "webrtc/voice_engine/include/voe_video_sync.h"
#endif
#ifdef WEBRTC_VOICE_ENGINE_VOLUME_CONTROL_API
#include "webrtc/voice_engine/include/voe_volume_control.h"
#endif
#ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
namespace webrtc {
class VoENetEqStats;
}
#endif
#if defined(WEBRTC_ANDROID)
extern char mobileLogMsg[640];
#endif
DECLARE_bool(include_timing_dependent_tests);
namespace voetest {
class SubAPIManager {
public:
SubAPIManager()
: _base(true),
_codec(false),
_externalMedia(false),
_file(false),
_hardware(false),
_netEqStats(false),
_network(false),
_rtp_rtcp(false),
_videoSync(false),
_volumeControl(false),
_apm(false) {
#ifdef WEBRTC_VOICE_ENGINE_CODEC_API
_codec = true;
#endif
#ifdef WEBRTC_VOICE_ENGINE_EXTERNAL_MEDIA_API
_externalMedia = true;
#endif
#ifdef WEBRTC_VOICE_ENGINE_FILE_API
_file = true;
#endif
#ifdef WEBRTC_VOICE_ENGINE_HARDWARE_API
_hardware = true;
#endif
#ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
_netEqStats = true;
#endif
_network = true;
#ifdef WEBRTC_VOICE_ENGINE_RTP_RTCP_API
_rtp_rtcp = true;
#endif
#ifdef WEBRTC_VOICE_ENGINE_VIDEO_SYNC_API
_videoSync = true;
#endif
#ifdef WEBRTC_VOICE_ENGINE_VOLUME_CONTROL_API
_volumeControl = true;
#endif
#ifdef WEBRTC_VOICE_ENGINE_AUDIO_PROCESSING_API
_apm = true;
#endif
}
void DisplayStatus() const;
private:
bool _base, _codec;
bool _externalMedia, _file, _hardware;
bool _netEqStats, _network, _rtp_rtcp, _videoSync, _volumeControl, _apm;
};
class VoETestManager {
public:
VoETestManager();
~VoETestManager();
// Must be called after construction.
bool Init();
void GetInterfaces();
int ReleaseInterfaces();
const char* AudioFilename() const {
const std::string& result = resource_manager_.long_audio_file_path();
if (result.length() == 0) {
TEST_LOG("ERROR: Failed to open input file!");
}
return result.c_str();
}
VoiceEngine* VoiceEnginePtr() const {
return voice_engine_;
}
VoEBase* BasePtr() const {
return voe_base_;
}
VoECodec* CodecPtr() const {
return voe_codec_;
}
VoEVolumeControl* VolumeControlPtr() const {
return voe_volume_control_;
}
VoERTP_RTCP* RTP_RTCPPtr() const {
return voe_rtp_rtcp_;
}
VoEAudioProcessing* APMPtr() const {
return voe_apm_;
}
VoENetwork* NetworkPtr() const {
return voe_network_;
}
VoEFile* FilePtr() const {
return voe_file_;
}
VoEHardware* HardwarePtr() const {
return voe_hardware_;
}
VoEVideoSync* VideoSyncPtr() const {
return voe_vsync_;
}
VoEExternalMedia* ExternalMediaPtr() const {
return voe_xmedia_;
}
#ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
VoENetEqStats* NetEqStatsPtr() const {
return voe_neteq_stats_;
}
#endif
private:
bool initialized_;
VoiceEngine* voice_engine_;
VoEBase* voe_base_;
VoECodec* voe_codec_;
VoEExternalMedia* voe_xmedia_;
VoEFile* voe_file_;
VoEHardware* voe_hardware_;
VoENetwork* voe_network_;
#ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
VoENetEqStats* voe_neteq_stats_;
#endif
VoERTP_RTCP* voe_rtp_rtcp_;
VoEVideoSync* voe_vsync_;
VoEVolumeControl* voe_volume_control_;
VoEAudioProcessing* voe_apm_;
ResourceManager resource_manager_;
};
} // namespace voetest
#endif // WEBRTC_VOICE_ENGINE_VOE_STANDARD_TEST_H