| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2008 Google Inc. | 3 * Copyright 2008 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 static const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1, 0); | 51 static const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1, 0); |
| 52 static const cricket::AudioCodec kRedCodec(117, "red", 8000, 0, 1, 0); | 52 static const cricket::AudioCodec kRedCodec(117, "red", 8000, 0, 1, 0); |
| 53 static const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1, 0); | 53 static const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1, 0); |
| 54 static const cricket::AudioCodec kCn16000Codec(105, "CN", 16000, 0, 1, 0); | 54 static const cricket::AudioCodec kCn16000Codec(105, "CN", 16000, 0, 1, 0); |
| 55 static const cricket::AudioCodec | 55 static const cricket::AudioCodec |
| 56 kTelephoneEventCodec(106, "telephone-event", 8000, 0, 1, 0); | 56 kTelephoneEventCodec(106, "telephone-event", 8000, 0, 1, 0); |
| 57 static const cricket::AudioCodec* const kAudioCodecs[] = { | 57 static const cricket::AudioCodec* const kAudioCodecs[] = { |
| 58 &kPcmuCodec, &kIsacCodec, &kOpusCodec, &kG722CodecVoE, &kRedCodec, | 58 &kPcmuCodec, &kIsacCodec, &kOpusCodec, &kG722CodecVoE, &kRedCodec, |
| 59 &kCn8000Codec, &kCn16000Codec, &kTelephoneEventCodec, | 59 &kCn8000Codec, &kCn16000Codec, &kTelephoneEventCodec, |
| 60 }; | 60 }; |
| 61 const char kRingbackTone[] = "RIFF____WAVE____ABCD1234"; | |
| 62 static uint32 kSsrc1 = 0x99; | 61 static uint32 kSsrc1 = 0x99; |
| 63 static uint32 kSsrc2 = 0x98; | 62 static uint32 kSsrc2 = 0x98; |
| 64 | 63 |
| 65 class FakeVoEWrapper : public cricket::VoEWrapper { | 64 class FakeVoEWrapper : public cricket::VoEWrapper { |
| 66 public: | 65 public: |
| 67 explicit FakeVoEWrapper(cricket::FakeWebRtcVoiceEngine* engine) | 66 explicit FakeVoEWrapper(cricket::FakeWebRtcVoiceEngine* engine) |
| 68 : cricket::VoEWrapper(engine, // processing | 67 : cricket::VoEWrapper(engine, // processing |
| 69 engine, // base | 68 engine, // base |
| 70 engine, // codec | 69 engine, // codec |
| 71 engine, // dtmf | 70 engine, // dtmf |
| (...skipping 2480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2552 // Test the InsertDtmf on specified send stream as caller. | 2551 // Test the InsertDtmf on specified send stream as caller. |
| 2553 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCaller) { | 2552 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCaller) { |
| 2554 TestInsertDtmf(kSsrc1, true); | 2553 TestInsertDtmf(kSsrc1, true); |
| 2555 } | 2554 } |
| 2556 | 2555 |
| 2557 // Test the InsertDtmf on specified send stream as callee. | 2556 // Test the InsertDtmf on specified send stream as callee. |
| 2558 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { | 2557 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { |
| 2559 TestInsertDtmf(kSsrc1, false); | 2558 TestInsertDtmf(kSsrc1, false); |
| 2560 } | 2559 } |
| 2561 | 2560 |
| 2562 // Test that we can play a ringback tone properly in a single-stream call. | |
| 2563 TEST_F(WebRtcVoiceEngineTestFake, PlayRingback) { | |
| 2564 EXPECT_TRUE(SetupEngine()); | |
| 2565 int channel_num = voe_.GetLastChannel(); | |
| 2566 EXPECT_EQ(0, voe_.IsPlayingFileLocally(channel_num)); | |
| 2567 // Check we fail if no ringback tone specified. | |
| 2568 EXPECT_FALSE(channel_->PlayRingbackTone(0, true, true)); | |
| 2569 EXPECT_EQ(0, voe_.IsPlayingFileLocally(channel_num)); | |
| 2570 // Check we can set and play a ringback tone. | |
| 2571 EXPECT_TRUE(channel_->SetRingbackTone( | |
| 2572 kRingbackTone, static_cast<int>(strlen(kRingbackTone)))); | |
| 2573 EXPECT_TRUE(channel_->PlayRingbackTone(0, true, true)); | |
| 2574 EXPECT_EQ(1, voe_.IsPlayingFileLocally(channel_num)); | |
| 2575 // Check we can stop the tone manually. | |
| 2576 EXPECT_TRUE(channel_->PlayRingbackTone(0, false, false)); | |
| 2577 EXPECT_EQ(0, voe_.IsPlayingFileLocally(channel_num)); | |
| 2578 // Check we stop the tone if a packet arrives. | |
| 2579 EXPECT_TRUE(channel_->PlayRingbackTone(0, true, true)); | |
| 2580 EXPECT_EQ(1, voe_.IsPlayingFileLocally(channel_num)); | |
| 2581 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); | |
| 2582 EXPECT_EQ(0, voe_.IsPlayingFileLocally(channel_num)); | |
| 2583 } | |
| 2584 | |
| 2585 // Test that we can play a ringback tone properly in a multi-stream call. | |
| 2586 TEST_F(WebRtcVoiceEngineTestFake, PlayRingbackWithMultipleStreams) { | |
| 2587 EXPECT_TRUE(SetupEngine()); | |
| 2588 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | |
| 2589 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | |
| 2590 int channel_num = voe_.GetLastChannel(); | |
| 2591 EXPECT_EQ(0, voe_.IsPlayingFileLocally(channel_num)); | |
| 2592 // Check we fail if no ringback tone specified. | |
| 2593 EXPECT_FALSE(channel_->PlayRingbackTone(2, true, true)); | |
| 2594 EXPECT_EQ(0, voe_.IsPlayingFileLocally(channel_num)); | |
| 2595 // Check we can set and play a ringback tone on the correct ssrc. | |
| 2596 EXPECT_TRUE(channel_->SetRingbackTone( | |
| 2597 kRingbackTone, static_cast<int>(strlen(kRingbackTone)))); | |
| 2598 EXPECT_FALSE(channel_->PlayRingbackTone(77, true, true)); | |
| 2599 EXPECT_TRUE(channel_->PlayRingbackTone(2, true, true)); | |
| 2600 EXPECT_EQ(1, voe_.IsPlayingFileLocally(channel_num)); | |
| 2601 // Check we can stop the tone manually. | |
| 2602 EXPECT_TRUE(channel_->PlayRingbackTone(2, false, false)); | |
| 2603 EXPECT_EQ(0, voe_.IsPlayingFileLocally(channel_num)); | |
| 2604 // Check we stop the tone if a packet arrives, but only with the right SSRC. | |
| 2605 EXPECT_TRUE(channel_->PlayRingbackTone(2, true, true)); | |
| 2606 EXPECT_EQ(1, voe_.IsPlayingFileLocally(channel_num)); | |
| 2607 // Send a packet with SSRC 1; the tone should not stop. | |
| 2608 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); | |
| 2609 EXPECT_EQ(1, voe_.IsPlayingFileLocally(channel_num)); | |
| 2610 // Send a packet with SSRC 2; the tone should stop. | |
| 2611 char packet[sizeof(kPcmuFrame)]; | |
| 2612 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); | |
| 2613 rtc::SetBE32(packet + 8, 2); | |
| 2614 DeliverPacket(packet, sizeof(packet)); | |
| 2615 EXPECT_EQ(0, voe_.IsPlayingFileLocally(channel_num)); | |
| 2616 } | |
| 2617 | |
| 2618 TEST_F(WebRtcVoiceEngineTestFake, MediaEngineCallbackOnError) { | 2561 TEST_F(WebRtcVoiceEngineTestFake, MediaEngineCallbackOnError) { |
| 2619 rtc::scoped_ptr<ChannelErrorListener> listener; | 2562 rtc::scoped_ptr<ChannelErrorListener> listener; |
| 2620 cricket::WebRtcVoiceMediaChannel* media_channel; | 2563 cricket::WebRtcVoiceMediaChannel* media_channel; |
| 2621 unsigned int ssrc = 0; | 2564 unsigned int ssrc = 0; |
| 2622 | 2565 |
| 2623 EXPECT_TRUE(SetupEngine()); | 2566 EXPECT_TRUE(SetupEngine()); |
| 2624 send_parameters_.options = options_conference_; | 2567 send_parameters_.options = options_conference_; |
| 2625 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2568 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
| 2626 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2569 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); |
| 2627 | 2570 |
| (...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3525 cricket::WebRtcVoiceEngine engine; | 3468 cricket::WebRtcVoiceEngine engine; |
| 3526 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); | 3469 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); |
| 3527 rtc::scoped_ptr<webrtc::Call> call( | 3470 rtc::scoped_ptr<webrtc::Call> call( |
| 3528 webrtc::Call::Create(webrtc::Call::Config())); | 3471 webrtc::Call::Create(webrtc::Call::Config())); |
| 3529 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), | 3472 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), |
| 3530 call.get()); | 3473 call.get()); |
| 3531 cricket::AudioRecvParameters parameters; | 3474 cricket::AudioRecvParameters parameters; |
| 3532 parameters.codecs = engine.codecs(); | 3475 parameters.codecs = engine.codecs(); |
| 3533 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3476 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
| 3534 } | 3477 } |
| OLD | NEW |