diff --git a/webrtc/engine_configurations.h b/webrtc/engine_configurations.h index 8294c9afc..2102cd70a 100644 --- a/webrtc/engine_configurations.h +++ b/webrtc/engine_configurations.h @@ -102,7 +102,6 @@ #define WEBRTC_VIDEO_ENGINE_CAPTURE_API #define WEBRTC_VIDEO_ENGINE_CODEC_API -#define WEBRTC_VIDEO_ENGINE_ENCRYPTION_API #define WEBRTC_VIDEO_ENGINE_IMAGE_PROCESS_API #define WEBRTC_VIDEO_ENGINE_RENDER_API #define WEBRTC_VIDEO_ENGINE_RTP_RTCP_API diff --git a/webrtc/video_engine/Android.mk b/webrtc/video_engine/Android.mk index 10f927889..74866cc2e 100644 --- a/webrtc/video_engine/Android.mk +++ b/webrtc/video_engine/Android.mk @@ -20,7 +20,6 @@ LOCAL_SRC_FILES := \ vie_base_impl.cc \ vie_capture_impl.cc \ vie_codec_impl.cc \ - vie_encryption_impl.cc \ vie_external_codec_impl.cc \ vie_file_impl.cc \ vie_image_process_impl.cc \ diff --git a/webrtc/video_engine/include/vie_encryption.h b/webrtc/video_engine/include/vie_encryption.h deleted file mode 100644 index 6cf721f8f..000000000 --- a/webrtc/video_engine/include/vie_encryption.h +++ /dev/null @@ -1,51 +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. - */ - -// This sub-API supports the following functionalities: -// - External encryption and decryption. - -#ifndef WEBRTC_VIDEO_ENGINE_INCLUDE_VIE_ENCRYPTION_H_ -#define WEBRTC_VIDEO_ENGINE_INCLUDE_VIE_ENCRYPTION_H_ - -#include "webrtc/common_types.h" - -namespace webrtc { -class VideoEngine; - -class WEBRTC_DLLEXPORT ViEEncryption { - public: - // Factory for the ViEEncryption subā€API and increases an internal reference - // counter if successful. Returns NULL if the API is not supported or if - // construction fails. - static ViEEncryption* GetInterface(VideoEngine* video_engine); - - // Releases the ViEEncryption sub-API and decreases an internal reference - // counter. - // Returns the new reference count. This value should be zero - // for all sub-API:s before the VideoEngine object can be safely deleted. - virtual int Release() = 0; - - // This function registers a encryption derived instance and enables - // external encryption for the specified channel. - virtual int RegisterExternalEncryption(const int video_channel, - Encryption& encryption) = 0; - - // This function deregisters a registered encryption derived instance - // and disables external encryption. - virtual int DeregisterExternalEncryption(const int video_channel) = 0; - - protected: - ViEEncryption() {} - virtual ~ViEEncryption() {} -}; - -} // namespace webrtc - -#endif // WEBRTC_VIDEO_ENGINE_INCLUDE_VIE_ENCRYPTION_H_ diff --git a/webrtc/video_engine/include/vie_errors.h b/webrtc/video_engine/include/vie_errors.h index 35af19493..1e9be1d49 100644 --- a/webrtc/video_engine/include/vie_errors.h +++ b/webrtc/video_engine/include/vie_errors.h @@ -98,12 +98,6 @@ enum ViEErrors { kViERtpRtcpObserverNotRegistered, // No observer registered. kViERtpRtcpUnknownError, // An unknown error has occurred. Check the log file. - // ViEEncryption. - kViEEncryptionInvalidChannelId = 12700, // Channel id does not exist. - kViEEncryptionInvalidSrtpParameter, // DEPRECATED - kViEEncryptionSrtpNotSupported, // DEPRECATED - kViEEncryptionUnknownError, // An unknown error has occurred. Check the log file. - // ViEImageProcess. kViEImageProcessInvalidChannelId = 12800, // No Channel exist with the provided channel id. kViEImageProcessInvalidCaptureId, // No capture device exist with the provided capture id. diff --git a/webrtc/video_engine/test/auto_test/android/jni/Android.mk b/webrtc/video_engine/test/auto_test/android/jni/Android.mk index 82a511f95..284ecabb8 100644 --- a/webrtc/video_engine/test/auto_test/android/jni/Android.mk +++ b/webrtc/video_engine/test/auto_test/android/jni/Android.mk @@ -24,7 +24,6 @@ LOCAL_SRC_FILES := \ ../../source/vie_autotest_base.cc \ ../../source/vie_autotest_capture.cc \ ../../source/vie_autotest_codec.cc \ - ../../source/vie_autotest_encryption.cc \ ../../source/vie_autotest_file.cc \ ../../source/vie_autotest_image_process.cc \ ../../source/vie_autotest_loopback.cc \ @@ -35,7 +34,7 @@ LOCAL_SRC_FILES := \ ../../source/tb_capture_device.cc \ ../../source/tb_external_transport.cc \ ../../source/tb_interfaces.cc \ - ../../source/tb_video_channel.cc + ../../source/tb_video_channel.cc LOCAL_CFLAGS := \ '-DWEBRTC_TARGET_PC' \ @@ -57,7 +56,7 @@ LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/../../../../../modules/video_coding/codecs/interface \ $(LOCAL_PATH)/../../../../../modules/video_render/main/interface \ $(LOCAL_PATH)/../../../../../voice_engine/include \ - $(LOCAL_PATH)/../../../../../system_wrappers/interface + $(LOCAL_PATH)/../../../../../system_wrappers/interface LOCAL_PRELINK_MODULE := false @@ -69,7 +68,7 @@ LOCAL_SHARED_LIBRARIES := \ libGLESv2 # the following line is for NDK build -LOCAL_LDLIBS := $(LIBS_PATH)/VideoEngine_android_gcc.a -llog -lgcc +LOCAL_LDLIBS := $(LIBS_PATH)/VideoEngine_android_gcc.a -llog -lgcc ifndef NDK_ROOT include external/stlport/libstlport.mk diff --git a/webrtc/video_engine/test/auto_test/android/res/values/strings.xml b/webrtc/video_engine/test/auto_test/android/res/values/strings.xml index ba59c5ecf..9bff24371 100644 --- a/webrtc/video_engine/test/auto_test/android/res/values/strings.xml +++ b/webrtc/video_engine/test/auto_test/android/res/values/strings.xml @@ -1,6 +1,6 @@ - + ViEAutotest ViEAutotest Run Test diff --git a/webrtc/video_engine/test/auto_test/automated/vie_api_integration_test.cc b/webrtc/video_engine/test/auto_test/automated/vie_api_integration_test.cc index 8071baa7b..3067a80bc 100644 --- a/webrtc/video_engine/test/auto_test/automated/vie_api_integration_test.cc +++ b/webrtc/video_engine/test/auto_test/automated/vie_api_integration_test.cc @@ -34,11 +34,6 @@ TEST_F(DISABLED_ON_MAC(ViEApiIntegrationTest), RunsCodecTestWithoutErrors) { tests_->ViECodecAPITest(); } -TEST_F(DISABLED_ON_MAC(ViEApiIntegrationTest), - RunsEncryptionTestWithoutErrors) { - tests_->ViEEncryptionAPITest(); -} - TEST_F(DISABLED_ON_MAC(ViEApiIntegrationTest), RunsImageProcessTestWithoutErrors) { tests_->ViEImageProcessAPITest(); diff --git a/webrtc/video_engine/test/auto_test/automated/vie_extended_integration_test.cc b/webrtc/video_engine/test/auto_test/automated/vie_extended_integration_test.cc index e9ff583ed..01d92d1c0 100644 --- a/webrtc/video_engine/test/auto_test/automated/vie_extended_integration_test.cc +++ b/webrtc/video_engine/test/auto_test/automated/vie_extended_integration_test.cc @@ -42,11 +42,6 @@ TEST_F(DISABLED_ON_MAC(ViEExtendedIntegrationTest), tests_->ViECodecExtendedTest(); } -TEST_F(DISABLED_ON_MAC(ViEExtendedIntegrationTest), - RunsEncryptionTestWithoutErrors) { - tests_->ViEEncryptionExtendedTest(); -} - TEST_F(DISABLED_ON_MAC(ViEExtendedIntegrationTest), RunsImageProcessTestWithoutErrors) { tests_->ViEImageProcessExtendedTest(); diff --git a/webrtc/video_engine/test/auto_test/automated/vie_rtp_fuzz_test.cc b/webrtc/video_engine/test/auto_test/automated/vie_rtp_fuzz_test.cc deleted file mode 100644 index ab78c1ebf..000000000 --- a/webrtc/video_engine/test/auto_test/automated/vie_rtp_fuzz_test.cc +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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 - -#include "gflags/gflags.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "webrtc/test/libtest/include/bit_flip_encryption.h" -#include "webrtc/test/libtest/include/random_encryption.h" -#include "webrtc/video_engine/test/auto_test/automated/two_windows_fixture.h" -#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_window_manager_interface.h" -#include "webrtc/video_engine/test/auto_test/interface/vie_window_creator.h" -#include "webrtc/video_engine/test/auto_test/primitives/general_primitives.h" -#include "webrtc/video_engine/test/libvietest/include/tb_capture_device.h" -#include "webrtc/video_engine/test/libvietest/include/tb_interfaces.h" -#include "webrtc/video_engine/test/libvietest/include/tb_video_channel.h" - -namespace { - -DEFINE_int32(rtp_fuzz_test_rand_seed, 0, "The rand seed to use for " - "the RTP fuzz test. Defaults to time(). 0 cannot be specified."); - -class ViERtpFuzzTest : public TwoWindowsFixture { -protected: - TbVideoChannel* video_channel_; - TbInterfaces* video_engine_; - TbCaptureDevice* capture_device_; - - void SetUp() { - video_engine_ = new TbInterfaces( - "ViERtpTryInjectingRandomPacketsIntoRtpStream"); - video_channel_ = new TbVideoChannel( - *video_engine_, webrtc::kVideoCodecVP8); - capture_device_ = new TbCaptureDevice(*video_engine_); - - capture_device_->ConnectTo(video_channel_->videoChannel); - - // Enable PLI RTCP, which will allow the video engine to recover better. - video_engine_->rtp_rtcp->SetKeyFrameRequestMethod( - video_channel_->videoChannel, webrtc::kViEKeyFrameRequestPliRtcp); - - video_channel_->StartReceive(); - video_channel_->StartSend(); - - RenderInWindow( - video_engine_->render, capture_device_->captureId, window_1_, 0); - RenderInWindow( - video_engine_->render, video_channel_->videoChannel, window_2_, 1); - } - - void TearDown() { - delete capture_device_; - delete video_channel_; - delete video_engine_; - } - - unsigned int FetchRandSeed() { - if (FLAGS_rtp_fuzz_test_rand_seed != 0) { - return FLAGS_rtp_fuzz_test_rand_seed; - } - return time(NULL); - } - - // Pass in a number [0, 1] which will be the bit flip probability per byte. - void BitFlipFuzzTest(float flip_probability) { - unsigned int rand_seed = FetchRandSeed(); - ViETest::Log("Running test with rand seed %d.", rand_seed); - - ViETest::Log("Running as usual. You should see video output."); - AutoTestSleep(2000); - - ViETest::Log("Starting to flip bits in packets (%f%% chance per byte).", - flip_probability * 100); - BitFlipEncryption bit_flip_encryption(rand_seed, flip_probability); - video_engine_->encryption->RegisterExternalEncryption( - video_channel_->videoChannel, bit_flip_encryption); - - AutoTestSleep(5000); - - ViETest::Log("Back to normal. Flipped %d bits.", - bit_flip_encryption.flip_count()); - video_engine_->encryption->DeregisterExternalEncryption( - video_channel_->videoChannel); - - AutoTestSleep(5000); - } -}; - -TEST_F(ViERtpFuzzTest, VideoEngineDealsWithASmallNumberOfTamperedPackets) { - // Try 0.005% bit flip chance per byte. - BitFlipFuzzTest(0.00005f); -} - -TEST_F(ViERtpFuzzTest, VideoEngineDealsWithAMediumNumberOfTamperedPackets) { - // Try 0.05% bit flip chance per byte. - BitFlipFuzzTest(0.0005f); -} - -TEST_F(ViERtpFuzzTest, VideoEngineDealsWithALargeNumberOfTamperedPackets) { - // Try 0.5% bit flip chance per byte. - BitFlipFuzzTest(0.005f); -} - -TEST_F(ViERtpFuzzTest, VideoEngineDealsWithAVeryLargeNumberOfTamperedPackets) { - // Try 5% bit flip chance per byte. - BitFlipFuzzTest(0.05f); -} - -TEST_F(ViERtpFuzzTest, - VideoEngineDealsWithAExtremelyLargeNumberOfTamperedPackets) { - // Try 25% bit flip chance per byte (madness!) - BitFlipFuzzTest(0.25f); -} - -TEST_F(ViERtpFuzzTest, VideoEngineDealsWithSeveralPeriodsOfTamperedPackets) { - // Try 0.05% bit flip chance per byte. - BitFlipFuzzTest(0.0005f); - BitFlipFuzzTest(0.0005f); - BitFlipFuzzTest(0.0005f); -} - -TEST_F(ViERtpFuzzTest, VideoEngineRecoversAfterSomeCompletelyRandomPackets) { - unsigned int rand_seed = FetchRandSeed(); - ViETest::Log("Running test with rand seed %d.", rand_seed); - - ViETest::Log("Running as usual. You should see video output."); - AutoTestSleep(2000); - - ViETest::Log("Injecting completely random packets..."); - RandomEncryption random_encryption(rand_seed); - video_engine_->encryption->RegisterExternalEncryption( - video_channel_->videoChannel, random_encryption); - - AutoTestSleep(5000); - - ViETest::Log("Back to normal."); - video_engine_->encryption->DeregisterExternalEncryption( - video_channel_->videoChannel); - - AutoTestSleep(5000); -} - -} diff --git a/webrtc/video_engine/test/auto_test/automated/vie_standard_integration_test.cc b/webrtc/video_engine/test/auto_test/automated/vie_standard_integration_test.cc index 74aa09634..51208bade 100644 --- a/webrtc/video_engine/test/auto_test/automated/vie_standard_integration_test.cc +++ b/webrtc/video_engine/test/auto_test/automated/vie_standard_integration_test.cc @@ -43,10 +43,6 @@ TEST_F(ViEStandardIntegrationTest, RunsCaptureTestWithoutErrors) { tests_->ViECaptureStandardTest(); } -TEST_F(ViEStandardIntegrationTest, RunsEncryptionTestWithoutErrors) { - tests_->ViEEncryptionStandardTest(); -} - TEST_F(ViEStandardIntegrationTest, RunsImageProcessTestWithoutErrors) { tests_->ViEImageProcessStandardTest(); } diff --git a/webrtc/video_engine/test/auto_test/interface/vie_autotest.h b/webrtc/video_engine/test/auto_test/interface/vie_autotest.h index f21963ee4..7a8363786 100644 --- a/webrtc/video_engine/test/auto_test/interface/vie_autotest.h +++ b/webrtc/video_engine/test/auto_test/interface/vie_autotest.h @@ -83,11 +83,6 @@ public: void ViECodecExternalCodecTest(); void ViECodecAPITest(); - // vie_autotest_encryption.cc - void ViEEncryptionStandardTest(); - void ViEEncryptionExtendedTest(); - void ViEEncryptionAPITest(); - // vie_autotest_image_process.cc void ViEImageProcessStandardTest(); void ViEImageProcessExtendedTest(); @@ -108,9 +103,6 @@ public: void ViERtpRtcpExtendedTest(); void ViERtpRtcpAPITest(); - // vie_autotest_rtp_fuzz.cc - void ViERtpTryInjectingRandomPacketsIntoRtpStream(long rand_seed); - private: void PrintAudioCodec(const webrtc::CodecInst audioCodec); void PrintVideoCodec(const webrtc::VideoCodec videoCodec); diff --git a/webrtc/video_engine/test/auto_test/source/Android.mk b/webrtc/video_engine/test/auto_test/source/Android.mk index ffdc61359..ffe113b94 100644 --- a/webrtc/video_engine/test/auto_test/source/Android.mk +++ b/webrtc/video_engine/test/auto_test/source/Android.mk @@ -22,7 +22,6 @@ LOCAL_SRC_FILES:= \ vie_autotest_base.cc \ vie_autotest_capture.cc \ vie_autotest_codec.cc \ - vie_autotest_encryption.cc \ vie_autotest_file.cc \ vie_autotest_image_process.cc \ vie_autotest_loopback.cc \ diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest.cc index ed7eead74..188567cb1 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest.cc @@ -64,7 +64,6 @@ void ViEAutoTest::ViEStandardTest() ViEBaseStandardTest(); ViECaptureStandardTest(); ViECodecStandardTest(); - ViEEncryptionStandardTest(); ViEImageProcessStandardTest(); ViERenderStandardTest(); ViERtpRtcpStandardTest(); @@ -75,7 +74,6 @@ void ViEAutoTest::ViEExtendedTest() ViEBaseExtendedTest(); ViECaptureExtendedTest(); ViECodecExtendedTest(); - ViEEncryptionExtendedTest(); ViEImageProcessExtendedTest(); ViERenderExtendedTest(); ViERtpRtcpExtendedTest(); @@ -86,7 +84,6 @@ void ViEAutoTest::ViEAPITest() ViEBaseAPITest(); ViECaptureAPITest(); ViECodecAPITest(); - ViEEncryptionAPITest(); ViEImageProcessAPITest(); ViERenderAPITest(); ViERtpRtcpAPITest(); diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_android.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_android.cc index 23b575d5d..68357853f 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_android.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_android.cc @@ -62,10 +62,6 @@ int ViEAutoTestAndroid::RunAutotest(int testSelection, int subTestSelection, vieAutoTest.ViECodecStandardTest(); break; - case 5: //encryption - vieAutoTest.ViEEncryptionStandardTest(); - break; - case 6: // image process vieAutoTest.ViEImageProcessStandardTest(); break; @@ -101,10 +97,6 @@ int ViEAutoTestAndroid::RunAutotest(int testSelection, int subTestSelection, vieAutoTest.ViECodecAPITest(); break; - case 5: //encryption - vieAutoTest.ViEEncryptionAPITest(); - break; - case 6: // image process vieAutoTest.ViEImageProcessAPITest(); break; @@ -142,10 +134,6 @@ int ViEAutoTestAndroid::RunAutotest(int testSelection, int subTestSelection, vieAutoTest.ViECodecExtendedTest(); break; - case 5: //encryption - vieAutoTest.ViEEncryptionExtendedTest(); - break; - case 6: // image process vieAutoTest.ViEImageProcessExtendedTest(); break; diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_encryption.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_encryption.cc deleted file mode 100644 index 6d8552b57..000000000 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_encryption.cc +++ /dev/null @@ -1,203 +0,0 @@ -/* - * 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. - */ - -// -// vie_autotest_encryption.cc -// - -#include "webrtc/engine_configurations.h" -#include "webrtc/video_engine/test/auto_test/interface/vie_autotest.h" -#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h" - -#include "webrtc/video_engine/test/libvietest/include/tb_capture_device.h" -#include "webrtc/video_engine/test/libvietest/include/tb_external_transport.h" -#include "webrtc/video_engine/test/libvietest/include/tb_interfaces.h" -#include "webrtc/video_engine/test/libvietest/include/tb_video_channel.h" - -class ViEAutotestEncryption: public webrtc::Encryption -{ -public: - ViEAutotestEncryption() - { - } - ~ViEAutotestEncryption() - { - } - - virtual void encrypt(int channel_no, unsigned char* in_data, - unsigned char* out_data, int bytes_in, int* bytes_out) - { - for (int i = 0; i < bytes_in; i++) - { - out_data[i] = ~in_data[i]; - } - assert(*bytes_out >= bytes_in + 2); - *bytes_out = bytes_in + 2; - out_data[bytes_in] = 'a'; - out_data[bytes_in + 1] = 'b'; - } - - virtual void decrypt(int channel_no, unsigned char* in_data, - unsigned char* out_data, int bytes_in, int* bytes_out) - { - for (int i = 0; i < bytes_in - 2; i++) - { - out_data[i] = ~in_data[i]; - } - assert(*bytes_out >= bytes_in - 2); - *bytes_out = bytes_in - 2; - } - - virtual void encrypt_rtcp(int channel_no, unsigned char* in_data, - unsigned char* out_data, int bytes_in, - int* bytes_out) - { - for (int i = 0; i < bytes_in; i++) - { - out_data[i] = ~in_data[i]; - } - assert(*bytes_out >= bytes_in + 2); - *bytes_out = bytes_in + 2; - out_data[bytes_in] = 'a'; - out_data[bytes_in + 1] = 'b'; - } - - virtual void decrypt_rtcp(int channel_no, unsigned char* in_data, - unsigned char* out_data, int bytes_in, - int* bytes_out) - { - for (int i = 0; i < bytes_in - 2; i++) - { - out_data[i] = ~in_data[i]; - } - assert(*bytes_out >= bytes_in - 2); - *bytes_out = bytes_in - 2; - } -}; - -void ViEAutoTest::ViEEncryptionStandardTest() -{ - //*************************************************************** - // Begin create/initialize WebRTC Video Engine for testing - //*************************************************************** - - // Create VIE - TbInterfaces ViE("ViEEncryptionStandardTest"); - // Create a video channel - TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8); - - // Create a capture device - TbCaptureDevice tbCapture(ViE); - tbCapture.ConnectTo(tbChannel.videoChannel); - - tbChannel.StartReceive(); - - tbChannel.StartSend(); - - RenderCaptureDeviceAndOutputStream(&ViE, &tbChannel, &tbCapture); - - // - // External encryption - // - ViEAutotestEncryption testEncryption; - // Note(qhogpat): StartSend fails, not sure if this is intentional. - EXPECT_NE(0, ViE.base->StartSend(tbChannel.videoChannel)); - EXPECT_EQ(0, ViE.encryption->RegisterExternalEncryption( - tbChannel.videoChannel, testEncryption)); - ViETest::Log( - "External encryption/decryption added, you should still see video"); - AutoTestSleep(kAutoTestSleepTimeMs); - EXPECT_EQ(0, ViE.encryption->DeregisterExternalEncryption( - tbChannel.videoChannel)); - - //*************************************************************** - // Testing finished. Tear down Video Engine - //*************************************************************** -} - -void ViEAutoTest::ViEEncryptionExtendedTest() -{ - //*************************************************************** - // Begin create/initialize WebRTC Video Engine for testing - //*************************************************************** - - // Create VIE - TbInterfaces ViE("ViEEncryptionExtendedTest"); - // Create a video channel - TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8); - - // Create a capture device - TbCaptureDevice tbCapture(ViE); - tbCapture.ConnectTo(tbChannel.videoChannel); - - tbChannel.StartReceive(); - tbChannel.StartSend(); - - RenderCaptureDeviceAndOutputStream(&ViE, &tbChannel, &tbCapture); - - //*************************************************************** - // Engine ready. Begin testing class - //*************************************************************** - - // - // External encryption - // - ViEAutotestEncryption testEncryption; - EXPECT_EQ(0, ViE.encryption->RegisterExternalEncryption( - tbChannel.videoChannel, testEncryption)); - ViETest::Log( - "External encryption/decryption added, you should still see video"); - AutoTestSleep(kAutoTestSleepTimeMs); - EXPECT_EQ(0, ViE.encryption->DeregisterExternalEncryption( - tbChannel.videoChannel)); - - //*************************************************************** - // Testing finished. Tear down Video Engine - //*************************************************************** -} - -void ViEAutoTest::ViEEncryptionAPITest() -{ - //*************************************************************** - // Begin create/initialize WebRTC Video Engine for testing - //*************************************************************** - - //*************************************************************** - // Engine ready. Begin testing class - //*************************************************************** - - // Create VIE - TbInterfaces ViE("ViEEncryptionAPITest"); - // Create a video channel - TbVideoChannel tbChannel(ViE, webrtc::kVideoCodecVP8); - - // Create a capture device - TbCaptureDevice tbCapture(ViE); - // Connect to channel - tbCapture.ConnectTo(tbChannel.videoChannel); - - // - // External encryption - // - - ViEAutotestEncryption testEncryption; - EXPECT_EQ(0, ViE.encryption->RegisterExternalEncryption( - tbChannel.videoChannel, testEncryption)); - EXPECT_NE(0, ViE.encryption->RegisterExternalEncryption( - tbChannel.videoChannel, testEncryption)); - EXPECT_EQ(0, ViE.encryption->DeregisterExternalEncryption( - tbChannel.videoChannel)); - EXPECT_EQ(0, ViE.encryption->DeregisterExternalEncryption( - tbChannel.videoChannel)); - - //*************************************************************** - // Testing finished. Tear down Video Engine - //*************************************************************** -} diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_main.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_main.cc index 450249411..00e86066f 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_main.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_main.cc @@ -29,7 +29,7 @@ ViEAutoTestMain::ViEAutoTestMain() { index_to_test_method_map_[1] = "RunsBaseTestWithoutErrors"; index_to_test_method_map_[2] = "RunsCaptureTestWithoutErrors"; index_to_test_method_map_[3] = "RunsCodecTestWithoutErrors"; - index_to_test_method_map_[4] = "RunsEncryptionTestWithoutErrors"; + index_to_test_method_map_[4] = "[unused]"; index_to_test_method_map_[5] = "RunsImageProcessTestWithoutErrors"; index_to_test_method_map_[6] = "RunsNetworkTestWithoutErrors"; index_to_test_method_map_[7] = "RunsRenderTestWithoutErrors"; diff --git a/webrtc/video_engine/test/auto_test/vie_auto_test.gypi b/webrtc/video_engine/test/auto_test/vie_auto_test.gypi index 0a9250c19..c131285d7 100644 --- a/webrtc/video_engine/test/auto_test/vie_auto_test.gypi +++ b/webrtc/video_engine/test/auto_test/vie_auto_test.gypi @@ -42,7 +42,6 @@ 'automated/two_windows_fixture.cc', 'automated/vie_api_integration_test.cc', 'automated/vie_extended_integration_test.cc', - 'automated/vie_rtp_fuzz_test.cc', 'automated/vie_standard_integration_test.cc', 'automated/vie_video_verification_test.cc', @@ -68,7 +67,6 @@ 'source/vie_autotest_base.cc', 'source/vie_autotest_capture.cc', 'source/vie_autotest_codec.cc', - 'source/vie_autotest_encryption.cc', 'source/vie_autotest_image_process.cc', 'source/vie_autotest_loopback.cc', 'source/vie_autotest_main.cc', diff --git a/webrtc/video_engine/test/libvietest/include/tb_interfaces.h b/webrtc/video_engine/test/libvietest/include/tb_interfaces.h index d1b736155..b79012dc9 100644 --- a/webrtc/video_engine/test/libvietest/include/tb_interfaces.h +++ b/webrtc/video_engine/test/libvietest/include/tb_interfaces.h @@ -18,7 +18,6 @@ #include "webrtc/video_engine/include/vie_base.h" #include "webrtc/video_engine/include/vie_capture.h" #include "webrtc/video_engine/include/vie_codec.h" -#include "webrtc/video_engine/include/vie_encryption.h" #include "webrtc/video_engine/include/vie_image_process.h" #include "webrtc/video_engine/include/vie_network.h" #include "webrtc/video_engine/include/vie_render.h" @@ -43,7 +42,6 @@ public: webrtc::ViECodec* codec; webrtc::ViENetwork* network; webrtc::ViEImageProcess* image_process; - webrtc::ViEEncryption* encryption; int LastError() { return base->LastError(); diff --git a/webrtc/video_engine/test/libvietest/testbed/tb_interfaces.cc b/webrtc/video_engine/test/libvietest/testbed/tb_interfaces.cc index bd4cdeddc..fc9596701 100644 --- a/webrtc/video_engine/test/libvietest/testbed/tb_interfaces.cc +++ b/webrtc/video_engine/test/libvietest/testbed/tb_interfaces.cc @@ -21,8 +21,7 @@ TbInterfaces::TbInterfaces(const std::string& test_name) : rtp_rtcp(NULL), codec(NULL), network(NULL), - image_process(NULL), - encryption(NULL) + image_process(NULL) { std::string complete_path = webrtc::test::OutputPath() + test_name + "_trace.txt"; @@ -55,15 +54,10 @@ TbInterfaces::TbInterfaces(const std::string& test_name) : image_process = webrtc::ViEImageProcess::GetInterface(video_engine); EXPECT_TRUE(image_process != NULL); - - encryption = webrtc::ViEEncryption::GetInterface(video_engine); - EXPECT_TRUE(encryption != NULL); } TbInterfaces::~TbInterfaces(void) { - EXPECT_EQ(0, encryption->Release()); - encryption = NULL; EXPECT_EQ(0, image_process->Release()); image_process = NULL; EXPECT_EQ(0, codec->Release()); diff --git a/webrtc/video_engine/video_engine_core.gypi b/webrtc/video_engine/video_engine_core.gypi index dc2f7bdc2..14d5fb6b9 100644 --- a/webrtc/video_engine/video_engine_core.gypi +++ b/webrtc/video_engine/video_engine_core.gypi @@ -38,7 +38,6 @@ 'include/vie_base.h', 'include/vie_capture.h', 'include/vie_codec.h', - 'include/vie_encryption.h', 'include/vie_errors.h', 'include/vie_external_codec.h', 'include/vie_image_process.h', @@ -55,7 +54,6 @@ 'vie_capture_impl.h', 'vie_codec_impl.h', 'vie_defines.h', - 'vie_encryption_impl.h', 'vie_external_codec_impl.h', 'vie_image_process_impl.h', 'vie_impl.h', @@ -88,7 +86,6 @@ 'vie_base_impl.cc', 'vie_capture_impl.cc', 'vie_codec_impl.cc', - 'vie_encryption_impl.cc', 'vie_external_codec_impl.cc', 'vie_image_process_impl.cc', 'vie_impl.cc', diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc index 57e633fee..8d61cfc5b 100644 --- a/webrtc/video_engine/vie_channel.cc +++ b/webrtc/video_engine/vie_channel.cc @@ -96,7 +96,6 @@ ViEChannel::ViEChannel(int32_t channel_id, decoder_reset_(true), wait_for_key_frame_(false), decode_thread_(NULL), - external_encryption_(NULL), effect_filter_(NULL), color_enhancement_(false), mtu_(0), @@ -1883,48 +1882,6 @@ int32_t ViEChannel::StopDecodeThread() { return 0; } -int32_t ViEChannel::RegisterExternalEncryption(Encryption* encryption) { - WEBRTC_TRACE(kTraceInfo, kTraceVideo, ViEId(engine_id_, channel_id_), "%s", - __FUNCTION__); - - CriticalSectionScoped cs(callback_cs_.get()); - if (external_encryption_) { - WEBRTC_TRACE(kTraceError, kTraceVideo, ViEId(engine_id_, channel_id_), - "%s: external encryption already registered", __FUNCTION__); - return -1; - } - - external_encryption_ = encryption; - - vie_receiver_.RegisterExternalDecryption(encryption); - vie_sender_.RegisterExternalEncryption(encryption); - - WEBRTC_TRACE(kTraceInfo, kTraceVideo, ViEId(engine_id_, channel_id_), - "%s", "external encryption object registerd with channel=%d", - channel_id_); - return 0; -} - -int32_t ViEChannel::DeRegisterExternalEncryption() { - WEBRTC_TRACE(kTraceInfo, kTraceVideo, ViEId(engine_id_, channel_id_), "%s", - __FUNCTION__); - - CriticalSectionScoped cs(callback_cs_.get()); - if (!external_encryption_) { - WEBRTC_TRACE(kTraceError, kTraceVideo, ViEId(engine_id_, channel_id_), - "%s: external encryption is not registered", __FUNCTION__); - return -1; - } - - external_transport_ = NULL; - vie_receiver_.DeregisterExternalDecryption(); - vie_sender_.DeregisterExternalEncryption(); - WEBRTC_TRACE(kTraceInfo, kTraceVideo, ViEId(engine_id_, channel_id_), - "%s external encryption object de-registerd with channel=%d", - __FUNCTION__, channel_id_); - return 0; -} - int32_t ViEChannel::SetVoiceChannel(int32_t ve_channel_id, VoEVideoSync* ve_sync_interface) { WEBRTC_TRACE(kTraceInfo, kTraceVideo, ViEId(engine_id_, channel_id_), diff --git a/webrtc/video_engine/vie_channel.h b/webrtc/video_engine/vie_channel.h index eddaefb9e..762f52138 100644 --- a/webrtc/video_engine/vie_channel.h +++ b/webrtc/video_engine/vie_channel.h @@ -34,7 +34,6 @@ class ChannelStatsObserver; class Config; class CriticalSectionWrapper; class EncodedImageCallback; -class Encryption; class I420FrameCallback; class PacedSender; class ProcessThread; @@ -333,9 +332,6 @@ class ViEChannel virtual int32_t ResendPackets(const uint16_t* sequence_numbers, uint16_t length); - int32_t RegisterExternalEncryption(Encryption* encryption); - int32_t DeRegisterExternalEncryption(); - int32_t SetVoiceChannel(int32_t ve_channel_id, VoEVideoSync* ve_sync_interface); int32_t VoiceChannel(); @@ -415,8 +411,6 @@ class ViEChannel bool wait_for_key_frame_; ThreadWrapper* decode_thread_; - Encryption* external_encryption_; - ViEEffectFilter* effect_filter_; bool color_enhancement_; diff --git a/webrtc/video_engine/vie_defines.h b/webrtc/video_engine/vie_defines.h index 97f64f49d..452da1958 100644 --- a/webrtc/video_engine/vie_defines.h +++ b/webrtc/video_engine/vie_defines.h @@ -51,14 +51,6 @@ enum { kViEMaxCodecHeight = 3072 }; enum { kViEMaxCodecFramerate = 60 }; enum { kViEMinCodecBitrate = 30 }; -// ViEEncryption -enum { kViEMaxSrtpKeyLength = 30 }; -enum { kViEMinSrtpEncryptLength = 16 }; -enum { kViEMaxSrtpEncryptLength = 256 }; -enum { kViEMaxSrtpAuthSh1Length = 20 }; -enum { kViEMaxSrtpTagAuthNullLength = 12 }; -enum { kViEMaxSrtpKeyAuthNullLength = 256 }; - // ViENetwork enum { kViEMaxMtu = 1500 }; enum { kViESocketThreads = 1 }; diff --git a/webrtc/video_engine/vie_encryption_impl.cc b/webrtc/video_engine/vie_encryption_impl.cc deleted file mode 100644 index b09c449fc..000000000 --- a/webrtc/video_engine/vie_encryption_impl.cc +++ /dev/null @@ -1,111 +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 "webrtc/video_engine/vie_encryption_impl.h" - -#include "webrtc/system_wrappers/interface/trace.h" -#include "webrtc/video_engine/include/vie_errors.h" -#include "webrtc/video_engine/vie_channel.h" -#include "webrtc/video_engine/vie_channel_manager.h" -#include "webrtc/video_engine/vie_defines.h" -#include "webrtc/video_engine/vie_impl.h" -#include "webrtc/video_engine/vie_shared_data.h" - -namespace webrtc { - -ViEEncryption* ViEEncryption::GetInterface(VideoEngine* video_engine) { -#ifdef WEBRTC_VIDEO_ENGINE_ENCRYPTION_API - if (video_engine == NULL) { - return NULL; - } - VideoEngineImpl* vie_impl = static_cast(video_engine); - ViEEncryptionImpl* vie_encryption_impl = vie_impl; - // Increase ref count. - (*vie_encryption_impl)++; - return vie_encryption_impl; -#else - return NULL; -#endif -} - -int ViEEncryptionImpl::Release() { - WEBRTC_TRACE(kTraceApiCall, kTraceVideo, shared_data_->instance_id(), - "ViEEncryptionImpl::Release()"); - // Decrease ref count. - (*this)--; - - int32_t ref_count = GetCount(); - if (ref_count < 0) { - WEBRTC_TRACE(kTraceWarning, kTraceVideo, shared_data_->instance_id(), - "ViEEncryptionImpl release too many times"); - shared_data_->SetLastError(kViEAPIDoesNotExist); - return -1; - } - WEBRTC_TRACE(kTraceInfo, kTraceVideo, shared_data_->instance_id(), - "ViEEncryptionImpl reference count: %d", ref_count); - return ref_count; -} - -ViEEncryptionImpl::ViEEncryptionImpl(ViESharedData* shared_data) - : shared_data_(shared_data) { - WEBRTC_TRACE(kTraceMemory, kTraceVideo, shared_data_->instance_id(), - "ViEEncryptionImpl::ViEEncryptionImpl() Ctor"); -} - -ViEEncryptionImpl::~ViEEncryptionImpl() { - WEBRTC_TRACE(kTraceMemory, kTraceVideo, shared_data_->instance_id(), - "ViEEncryptionImpl::~ViEEncryptionImpl() Dtor"); -} - -int ViEEncryptionImpl::RegisterExternalEncryption(const int video_channel, - Encryption& encryption) { - WEBRTC_TRACE(kTraceApiCall, kTraceVideo, - ViEId(shared_data_->instance_id(), video_channel), - "RegisterExternalEncryption(video_channel=%d)", video_channel); - - ViEChannelManagerScoped cs(*(shared_data_->channel_manager())); - ViEChannel* vie_channel = cs.Channel(video_channel); - if (vie_channel == NULL) { - WEBRTC_TRACE(kTraceError, kTraceVideo, - ViEId(shared_data_->instance_id(), video_channel), - "%s: No channel %d", __FUNCTION__, video_channel); - shared_data_->SetLastError(kViEEncryptionInvalidChannelId); - return -1; - } - if (vie_channel->RegisterExternalEncryption(&encryption) != 0) { - shared_data_->SetLastError(kViEEncryptionUnknownError); - return -1; - } - return 0; -} - -int ViEEncryptionImpl::DeregisterExternalEncryption(const int video_channel) { - WEBRTC_TRACE(kTraceApiCall, kTraceVideo, - ViEId(shared_data_->instance_id(), video_channel), - "RegisterExternalEncryption(video_channel=%d)", video_channel); - - ViEChannelManagerScoped cs(*(shared_data_->channel_manager())); - ViEChannel* vie_channel = cs.Channel(video_channel); - if (vie_channel == NULL) { - WEBRTC_TRACE(kTraceError, kTraceVideo, - ViEId(shared_data_->instance_id(), video_channel), - "%s: No channel %d", __FUNCTION__, video_channel); - shared_data_->SetLastError(kViEEncryptionInvalidChannelId); - return -1; - } - - if (vie_channel->DeRegisterExternalEncryption() != 0) { - shared_data_->SetLastError(kViEEncryptionUnknownError); - return -1; - } - return 0; -} - -} // namespace webrtc diff --git a/webrtc/video_engine/vie_encryption_impl.h b/webrtc/video_engine/vie_encryption_impl.h deleted file mode 100644 index 96779e395..000000000 --- a/webrtc/video_engine/vie_encryption_impl.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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_VIDEO_ENGINE_VIE_ENCRYPTION_IMPL_H_ -#define WEBRTC_VIDEO_ENGINE_VIE_ENCRYPTION_IMPL_H_ - -#include "webrtc/typedefs.h" -#include "webrtc/video_engine/include/vie_encryption.h" -#include "webrtc/video_engine/vie_ref_count.h" - -namespace webrtc { - -class ViESharedData; - -class ViEEncryptionImpl - : public ViEEncryption, - public ViERefCount { - public: - virtual int Release(); - - // Implements ViEEncryption. - virtual int RegisterExternalEncryption(const int video_channel, - Encryption& encryption); - virtual int DeregisterExternalEncryption(const int video_channel); - - protected: - explicit ViEEncryptionImpl(ViESharedData* shared_data); - virtual ~ViEEncryptionImpl(); - - private: - ViESharedData* shared_data_; -}; - -} // namespace webrtc - -#endif // WEBRTC_VIDEO_ENGINE_VIE_ENCRYPTION_IMPL_H_ diff --git a/webrtc/video_engine/vie_impl.cc b/webrtc/video_engine/vie_impl.cc index a5c7eba6e..c4f2b1a37 100644 --- a/webrtc/video_engine/vie_impl.cc +++ b/webrtc/video_engine/vie_impl.cc @@ -63,19 +63,11 @@ bool VideoEngine::Delete(VideoEngine*& video_engine) { return false; } #endif -#ifdef WEBRTC_VIDEO_ENGINE_ENCRYPTION_API - ViEEncryptionImpl* vie_encryption = vie_impl; - if (vie_encryption->GetCount() > 0) { - WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId, - "ViEEncryption ref count: %d", vie_encryption->GetCount()); - return false; - } -#endif #ifdef WEBRTC_VIDEO_ENGINE_EXTERNAL_CODEC_API ViEExternalCodecImpl* vie_external_codec = vie_impl; if (vie_external_codec->GetCount() > 0) { WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId, - "ViEEncryption ref count: %d", vie_encryption->GetCount()); + "ViEExternalCodec ref count: %d", vie_external_codec->GetCount()); return false; } #endif diff --git a/webrtc/video_engine/vie_impl.h b/webrtc/video_engine/vie_impl.h index 290a67e5a..086282d18 100644 --- a/webrtc/video_engine/vie_impl.h +++ b/webrtc/video_engine/vie_impl.h @@ -24,9 +24,6 @@ #ifdef WEBRTC_VIDEO_ENGINE_CODEC_API #include "webrtc/video_engine/vie_codec_impl.h" #endif -#ifdef WEBRTC_VIDEO_ENGINE_ENCRYPTION_API -#include "webrtc/video_engine/vie_encryption_impl.h" -#endif #ifdef WEBRTC_VIDEO_ENGINE_FILE_API #include "webrtc/video_engine/vie_file_impl.h" #endif @@ -54,9 +51,6 @@ class VideoEngineImpl #ifdef WEBRTC_VIDEO_ENGINE_CAPTURE_API public ViECaptureImpl, #endif -#ifdef WEBRTC_VIDEO_ENGINE_ENCRYPTION_API - public ViEEncryptionImpl, -#endif #ifdef WEBRTC_VIDEO_ENGINE_FILE_API public ViEFileImpl, #endif @@ -84,9 +78,6 @@ class VideoEngineImpl #ifdef WEBRTC_VIDEO_ENGINE_CAPTURE_API ViECaptureImpl(ViEBaseImpl::shared_data()), #endif -#ifdef WEBRTC_VIDEO_ENGINE_ENCRYPTION_API - ViEEncryptionImpl(ViEBaseImpl::shared_data()), -#endif #ifdef WEBRTC_VIDEO_ENGINE_FILE_API ViEFileImpl(ViEBaseImpl::shared_data()), #endif diff --git a/webrtc/video_engine/vie_receiver.cc b/webrtc/video_engine/vie_receiver.cc index 3b9c01968..4e6a1b231 100644 --- a/webrtc/video_engine/vie_receiver.cc +++ b/webrtc/video_engine/vie_receiver.cc @@ -45,8 +45,6 @@ ViEReceiver::ViEReceiver(const int32_t channel_id, rtp_rtcp_(NULL), vcm_(module_vcm), remote_bitrate_estimator_(remote_bitrate_estimator), - external_decryption_(NULL), - decryption_buffer_(NULL), rtp_dump_(NULL), receiving_(false), restored_packet_in_use_(false) { @@ -54,10 +52,6 @@ ViEReceiver::ViEReceiver(const int32_t channel_id, } ViEReceiver::~ViEReceiver() { - if (decryption_buffer_) { - delete[] decryption_buffer_; - decryption_buffer_ = NULL; - } if (rtp_dump_) { rtp_dump_->Stop(); RtpDump::DestroyRtpDump(rtp_dump_); @@ -114,28 +108,6 @@ int ViEReceiver::GetCsrcs(uint32_t* csrcs) const { return rtp_receiver_->CSRCs(csrcs); } -int ViEReceiver::RegisterExternalDecryption(Encryption* decryption) { - CriticalSectionScoped cs(receive_cs_.get()); - if (external_decryption_) { - return -1; - } - decryption_buffer_ = new uint8_t[kViEMaxMtu]; - if (decryption_buffer_ == NULL) { - return -1; - } - external_decryption_ = decryption; - return 0; -} - -int ViEReceiver::DeregisterExternalDecryption() { - CriticalSectionScoped cs(receive_cs_.get()); - if (external_decryption_ == NULL) { - return -1; - } - external_decryption_ = NULL; - return 0; -} - void ViEReceiver::SetRtpRtcpModule(RtpRtcp* module) { rtp_rtcp_ = module; } @@ -179,13 +151,13 @@ bool ViEReceiver::SetReceiveAbsoluteSendTimeStatus(bool enable, int id) { int ViEReceiver::ReceivedRTPPacket(const void* rtp_packet, int rtp_packet_length, const PacketTime& packet_time) { - return InsertRTPPacket(static_cast(rtp_packet), + return InsertRTPPacket(static_cast(rtp_packet), rtp_packet_length, packet_time); } int ViEReceiver::ReceivedRTCPPacket(const void* rtcp_packet, int rtcp_packet_length) { - return InsertRTCPPacket(static_cast(rtcp_packet), + return InsertRTCPPacket(static_cast(rtcp_packet), rtcp_packet_length); } @@ -211,53 +183,28 @@ bool ViEReceiver::OnRecoveredPacket(const uint8_t* rtp_packet, return ReceivePacket(rtp_packet, rtp_packet_length, header, false); } -int ViEReceiver::InsertRTPPacket(const int8_t* rtp_packet, +int ViEReceiver::InsertRTPPacket(const uint8_t* rtp_packet, int rtp_packet_length, const PacketTime& packet_time) { - // TODO(mflodman) Change decrypt to get rid of this cast. - int8_t* tmp_ptr = const_cast(rtp_packet); - unsigned char* received_packet = reinterpret_cast(tmp_ptr); - int received_packet_length = rtp_packet_length; - { CriticalSectionScoped cs(receive_cs_.get()); if (!receiving_) { return -1; } - - if (external_decryption_) { - int decrypted_length = kViEMaxMtu; - external_decryption_->decrypt(channel_id_, received_packet, - decryption_buffer_, received_packet_length, - &decrypted_length); - if (decrypted_length <= 0) { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideo, channel_id_, - "RTP decryption failed"); - return -1; - } else if (decrypted_length > kViEMaxMtu) { - WEBRTC_TRACE(webrtc::kTraceCritical, webrtc::kTraceVideo, channel_id_, - "InsertRTPPacket: %d bytes is allocated as RTP decrytption" - " output, external decryption used %d bytes. => memory is " - " now corrupted", kViEMaxMtu, decrypted_length); - return -1; - } - received_packet = decryption_buffer_; - received_packet_length = decrypted_length; - } - if (rtp_dump_) { - rtp_dump_->DumpPacket(received_packet, - static_cast(received_packet_length)); + rtp_dump_->DumpPacket(rtp_packet, + static_cast(rtp_packet_length)); } } + RTPHeader header; - if (!rtp_header_parser_->Parse(received_packet, received_packet_length, + if (!rtp_header_parser_->Parse(rtp_packet, rtp_packet_length, &header)) { WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceVideo, channel_id_, "Incoming packet: Invalid RTP header"); return -1; } - int payload_length = received_packet_length - header.headerLength; + int payload_length = rtp_packet_length - header.headerLength; int64_t arrival_time_ms; if (packet_time.timestamp != -1) arrival_time_ms = (packet_time.timestamp + 500) / 1000; @@ -270,12 +217,11 @@ int ViEReceiver::InsertRTPPacket(const int8_t* rtp_packet, bool in_order = IsPacketInOrder(header); rtp_receive_statistics_->IncomingPacket( - header, received_packet_length, IsPacketRetransmitted(header, in_order)); + header, rtp_packet_length, IsPacketRetransmitted(header, in_order)); rtp_payload_registry_->SetIncomingPayloadType(header); - return ReceivePacket( - received_packet, received_packet_length, header, in_order) - ? 0 - : -1; + return ReceivePacket(rtp_packet, rtp_packet_length, header, in_order) + ? 0 + : -1; } bool ViEReceiver::ReceivePacket(const uint8_t* packet, @@ -339,55 +285,27 @@ bool ViEReceiver::ParseAndHandleEncapsulatingHeader(const uint8_t* packet, return false; } -int ViEReceiver::InsertRTCPPacket(const int8_t* rtcp_packet, +int ViEReceiver::InsertRTCPPacket(const uint8_t* rtcp_packet, int rtcp_packet_length) { - // TODO(mflodman) Change decrypt to get rid of this cast. - int8_t* tmp_ptr = const_cast(rtcp_packet); - unsigned char* received_packet = reinterpret_cast(tmp_ptr); - int received_packet_length = rtcp_packet_length; { CriticalSectionScoped cs(receive_cs_.get()); if (!receiving_) { return -1; } - if (external_decryption_) { - int decrypted_length = kViEMaxMtu; - external_decryption_->decrypt_rtcp(channel_id_, received_packet, - decryption_buffer_, - received_packet_length, - &decrypted_length); - if (decrypted_length <= 0) { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideo, channel_id_, - "RTP decryption failed"); - return -1; - } else if (decrypted_length > kViEMaxMtu) { - WEBRTC_TRACE(webrtc::kTraceCritical, webrtc::kTraceVideo, channel_id_, - "InsertRTCPPacket: %d bytes is allocated as RTP " - " decrytption output, external decryption used %d bytes. " - " => memory is now corrupted", - kViEMaxMtu, decrypted_length); - return -1; - } - received_packet = decryption_buffer_; - received_packet_length = decrypted_length; - } - if (rtp_dump_) { rtp_dump_->DumpPacket( - received_packet, static_cast(received_packet_length)); + rtcp_packet, static_cast(rtcp_packet_length)); } - } - { - CriticalSectionScoped cs(receive_cs_.get()); + std::list::iterator it = rtp_rtcp_simulcast_.begin(); while (it != rtp_rtcp_simulcast_.end()) { RtpRtcp* rtp_rtcp = *it++; - rtp_rtcp->IncomingRtcpPacket(received_packet, received_packet_length); + rtp_rtcp->IncomingRtcpPacket(rtcp_packet, rtcp_packet_length); } } assert(rtp_rtcp_); // Should be set by owner at construction time. - return rtp_rtcp_->IncomingRtcpPacket(received_packet, received_packet_length); + return rtp_rtcp_->IncomingRtcpPacket(rtcp_packet, rtcp_packet_length); } void ViEReceiver::StartReceive() { diff --git a/webrtc/video_engine/vie_receiver.h b/webrtc/video_engine/vie_receiver.h index 3e0966db1..611db40fa 100644 --- a/webrtc/video_engine/vie_receiver.h +++ b/webrtc/video_engine/vie_receiver.h @@ -24,7 +24,6 @@ namespace webrtc { class CriticalSectionWrapper; -class Encryption; class FecReceiver; class ReceiveStatistics; class RemoteBitrateEstimator; @@ -53,9 +52,6 @@ class ViEReceiver : public RtpData { uint32_t GetRemoteSsrc() const; int GetCsrcs(uint32_t* csrcs) const; - int RegisterExternalDecryption(Encryption* decryption); - int DeregisterExternalDecryption(); - void SetRtpRtcpModule(RtpRtcp* module); RtpReceiver* GetRtpReceiver() const; @@ -92,7 +88,7 @@ class ViEReceiver : public RtpData { ReceiveStatistics* GetReceiveStatistics() const; private: - int InsertRTPPacket(const int8_t* rtp_packet, int rtp_packet_length, + int InsertRTPPacket(const uint8_t* rtp_packet, int rtp_packet_length, const PacketTime& packet_time); bool ReceivePacket(const uint8_t* packet, int packet_length, @@ -103,7 +99,7 @@ class ViEReceiver : public RtpData { bool ParseAndHandleEncapsulatingHeader(const uint8_t* packet, int packet_length, const RTPHeader& header); - int InsertRTCPPacket(const int8_t* rtcp_packet, int rtcp_packet_length); + int InsertRTCPPacket(const uint8_t* rtcp_packet, int rtcp_packet_length); bool IsPacketInOrder(const RTPHeader& header) const; bool IsPacketRetransmitted(const RTPHeader& header, bool in_order) const; @@ -119,8 +115,6 @@ class ViEReceiver : public RtpData { VideoCodingModule* vcm_; RemoteBitrateEstimator* remote_bitrate_estimator_; - Encryption* external_decryption_; - uint8_t* decryption_buffer_; RtpDump* rtp_dump_; bool receiving_; uint8_t restored_packet_[kViEMaxMtu]; diff --git a/webrtc/video_engine/vie_sender.cc b/webrtc/video_engine/vie_sender.cc index b90d56f29..b83c681a5 100644 --- a/webrtc/video_engine/vie_sender.cc +++ b/webrtc/video_engine/vie_sender.cc @@ -21,18 +21,11 @@ namespace webrtc { ViESender::ViESender(int channel_id) : channel_id_(channel_id), critsect_(CriticalSectionWrapper::CreateCriticalSection()), - external_encryption_(NULL), - encryption_buffer_(NULL), transport_(NULL), rtp_dump_(NULL) { } ViESender::~ViESender() { - if (encryption_buffer_) { - delete[] encryption_buffer_; - encryption_buffer_ = NULL; - } - if (rtp_dump_) { rtp_dump_->Stop(); RtpDump::DestroyRtpDump(rtp_dump_); @@ -40,32 +33,6 @@ ViESender::~ViESender() { } } -int ViESender::RegisterExternalEncryption(Encryption* encryption) { - CriticalSectionScoped cs(critsect_.get()); - if (external_encryption_) { - return -1; - } - encryption_buffer_ = new uint8_t[kViEMaxMtu]; - if (encryption_buffer_ == NULL) { - return -1; - } - external_encryption_ = encryption; - return 0; -} - -int ViESender::DeregisterExternalEncryption() { - CriticalSectionScoped cs(critsect_.get()); - if (external_encryption_ == NULL) { - return -1; - } - if (encryption_buffer_) { - delete[] encryption_buffer_; - encryption_buffer_ = NULL; - } - external_encryption_ = NULL; - return 0; -} - int ViESender::RegisterSendTransport(Transport* transport) { CriticalSectionScoped cs(critsect_.get()); if (transport_) { @@ -134,29 +101,13 @@ int ViESender::SendPacket(int vie_id, const void* data, int len) { } assert(ChannelId(vie_id) == channel_id_); - // TODO(mflodman) Change decrypt to get rid of this cast. - void* tmp_ptr = const_cast(data); - unsigned char* send_packet = static_cast(tmp_ptr); - - // Data length for packets sent to possible encryption and to the transport. - int send_packet_length = len; - if (rtp_dump_) { - rtp_dump_->DumpPacket(send_packet, send_packet_length); + rtp_dump_->DumpPacket(static_cast(data), + static_cast(len)); } - if (external_encryption_) { - // Encryption buffer size. - int encrypted_packet_length = kViEMaxMtu; - - external_encryption_->encrypt(channel_id_, send_packet, encryption_buffer_, - send_packet_length, &encrypted_packet_length); - send_packet = encryption_buffer_; - send_packet_length = encrypted_packet_length; - } - const int bytes_sent = transport_->SendPacket(channel_id_, send_packet, - send_packet_length); - if (bytes_sent != send_packet_length) { + const int bytes_sent = transport_->SendPacket(channel_id_, data, len); + if (bytes_sent != len) { WEBRTC_TRACE(webrtc::kTraceWarning, webrtc::kTraceVideo, channel_id_, "ViESender::SendPacket - Transport failed to send RTP packet"); } @@ -165,43 +116,22 @@ int ViESender::SendPacket(int vie_id, const void* data, int len) { int ViESender::SendRTCPPacket(int vie_id, const void* data, int len) { CriticalSectionScoped cs(critsect_.get()); - if (!transport_) { return -1; } - assert(ChannelId(vie_id) == channel_id_); - // Prepare for possible encryption and sending. - // TODO(mflodman) Change decrypt to get rid of this cast. - void* tmp_ptr = const_cast(data); - unsigned char* send_packet = static_cast(tmp_ptr); - - // Data length for packets sent to possible encryption and to the transport. - int send_packet_length = len; - if (rtp_dump_) { - rtp_dump_->DumpPacket(send_packet, send_packet_length); + rtp_dump_->DumpPacket(static_cast(data), + static_cast(len)); } - if (external_encryption_) { - // Encryption buffer size. - int encrypted_packet_length = kViEMaxMtu; - - external_encryption_->encrypt_rtcp( - channel_id_, send_packet, encryption_buffer_, send_packet_length, - &encrypted_packet_length); - send_packet = encryption_buffer_; - send_packet_length = encrypted_packet_length; - } - - const int bytes_sent = transport_->SendRTCPPacket(channel_id_, send_packet, - send_packet_length); - if (bytes_sent != send_packet_length) { + const int bytes_sent = transport_->SendRTCPPacket(channel_id_, data, len); + if (bytes_sent != len) { WEBRTC_TRACE( webrtc::kTraceWarning, webrtc::kTraceVideo, channel_id_, "ViESender::SendRTCPPacket - Transport failed to send RTCP packet" - " (%d vs %d)", bytes_sent, send_packet_length); + " (%d vs %d)", bytes_sent, len); } return bytes_sent; } diff --git a/webrtc/video_engine/vie_sender.h b/webrtc/video_engine/vie_sender.h index 03b9d5893..1eecc06c7 100644 --- a/webrtc/video_engine/vie_sender.h +++ b/webrtc/video_engine/vie_sender.h @@ -8,8 +8,7 @@ * be found in the AUTHORS file in the root of the source tree. */ -// ViESender is responsible for encrypting, if enabled, packets and send to -// network. +// ViESender is responsible for sending packets to network. #ifndef WEBRTC_VIDEO_ENGINE_VIE_SENDER_H_ #define WEBRTC_VIDEO_ENGINE_VIE_SENDER_H_ @@ -32,10 +31,6 @@ class ViESender: public Transport { explicit ViESender(const int32_t channel_id); ~ViESender(); - // Registers an encryption class to use before sending packets. - int RegisterExternalEncryption(Encryption* encryption); - int DeregisterExternalEncryption(); - // Registers transport to use for sending RTP and RTCP. int RegisterSendTransport(Transport* transport); int DeregisterSendTransport(); @@ -53,8 +48,6 @@ class ViESender: public Transport { scoped_ptr critsect_; - Encryption* external_encryption_; - uint8_t* encryption_buffer_; Transport* transport_; RtpDump* rtp_dump_; };