Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: media/cast/test/sender.cc

Issue 252923007: Cast: Fix two video freezing problems (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more comments adressed Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Test application that simulates a cast sender - Data can be either generated 5 // Test application that simulates a cast sender - Data can be either generated
6 // or read from a file. 6 // or read from a file.
7 7
8 #include <queue> 8 #include <queue>
9 9
10 #include "base/at_exit.h" 10 #include "base/at_exit.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 AudioSenderConfig GetAudioSenderConfig() { 93 AudioSenderConfig GetAudioSenderConfig() {
94 AudioSenderConfig audio_config; 94 AudioSenderConfig audio_config;
95 95
96 audio_config.rtcp_c_name = "audio_sender@a.b.c.d"; 96 audio_config.rtcp_c_name = "audio_sender@a.b.c.d";
97 97
98 audio_config.use_external_encoder = false; 98 audio_config.use_external_encoder = false;
99 audio_config.frequency = kAudioSamplingFrequency; 99 audio_config.frequency = kAudioSamplingFrequency;
100 audio_config.channels = kAudioChannels; 100 audio_config.channels = kAudioChannels;
101 audio_config.bitrate = 64000; 101 audio_config.bitrate = 64000;
102 audio_config.codec = transport::kOpus; 102 audio_config.codec = transport::kOpus;
103 audio_config.sender_ssrc = 1; 103 audio_config.rtp_config.ssrc = 1;
104 audio_config.incoming_feedback_ssrc = 2; 104 audio_config.incoming_feedback_ssrc = 2;
105 audio_config.rtp_config.payload_type = 127; 105 audio_config.rtp_config.payload_type = 127;
106 audio_config.rtp_config.max_delay_ms = 300; 106 audio_config.rtp_config.max_delay_ms = 300;
107 return audio_config; 107 return audio_config;
108 } 108 }
109 109
110 VideoSenderConfig GetVideoSenderConfig() { 110 VideoSenderConfig GetVideoSenderConfig() {
111 VideoSenderConfig video_config; 111 VideoSenderConfig video_config;
112 112
113 video_config.rtcp_c_name = "video_sender@a.b.c.d"; 113 video_config.rtcp_c_name = "video_sender@a.b.c.d";
(...skipping 12 matching lines...) Expand all
126 // Codec. 126 // Codec.
127 video_config.codec = transport::kVp8; 127 video_config.codec = transport::kVp8;
128 video_config.max_number_of_video_buffers_used = 1; 128 video_config.max_number_of_video_buffers_used = 1;
129 video_config.number_of_encode_threads = 2; 129 video_config.number_of_encode_threads = 2;
130 130
131 // Quality options. 131 // Quality options.
132 video_config.min_qp = 4; 132 video_config.min_qp = 4;
133 video_config.max_qp = 40; 133 video_config.max_qp = 40;
134 134
135 // SSRCs and payload type. Don't change them. 135 // SSRCs and payload type. Don't change them.
136 video_config.sender_ssrc = 11; 136 video_config.rtp_config.ssrc = 11;
137 video_config.incoming_feedback_ssrc = 12; 137 video_config.incoming_feedback_ssrc = 12;
138 video_config.rtp_config.payload_type = 96; 138 video_config.rtp_config.payload_type = 96;
139 video_config.rtp_config.max_delay_ms = 300; 139 video_config.rtp_config.max_delay_ms = 300;
140 return video_config; 140 return video_config;
141 } 141 }
142 142
143 void AVFreeFrame(AVFrame* frame) { avcodec_free_frame(&frame); } 143 void AVFreeFrame(AVFrame* frame) { avcodec_free_frame(&frame); }
144 144
145 class SendProcess { 145 class SendProcess {
146 public: 146 public:
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 std::queue<AudioBus*> audio_bus_queue_; 739 std::queue<AudioBus*> audio_bus_queue_;
740 740
741 DISALLOW_COPY_AND_ASSIGN(SendProcess); 741 DISALLOW_COPY_AND_ASSIGN(SendProcess);
742 }; 742 };
743 743
744 } // namespace cast 744 } // namespace cast
745 } // namespace media 745 } // namespace media
746 746
747 namespace { 747 namespace {
748 void UpdateCastTransportStatus( 748 void UpdateCastTransportStatus(
749 media::cast::transport::CastTransportStatus status) {} 749 media::cast::transport::CastTransportStatus status) {
750 VLOG(21) << "Transport status: " << status;
751 }
750 752
751 void LogRawEvents( 753 void LogRawEvents(
752 const scoped_refptr<media::cast::CastEnvironment>& cast_environment, 754 const scoped_refptr<media::cast::CastEnvironment>& cast_environment,
753 const std::vector<media::cast::PacketEvent>& packet_events) { 755 const std::vector<media::cast::PacketEvent>& packet_events) {
754 VLOG(1) << "Got packet events from transport, size: " << packet_events.size(); 756 VLOG(1) << "Got packet events from transport, size: " << packet_events.size();
755 for (std::vector<media::cast::PacketEvent>::const_iterator it = 757 for (std::vector<media::cast::PacketEvent>::const_iterator it =
756 packet_events.begin(); 758 packet_events.begin();
757 it != packet_events.end(); 759 it != packet_events.end();
758 ++it) { 760 ++it) {
759 cast_environment->Logging()->InsertPacketEvent(it->timestamp, 761 cast_environment->Logging()->InsertPacketEvent(it->timestamp,
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
899 LOG(INFO) << "Sending to " << remote_ip_address << ":" << remote_port 901 LOG(INFO) << "Sending to " << remote_ip_address << ":" << remote_port
900 << "."; 902 << ".";
901 903
902 media::cast::AudioSenderConfig audio_config = 904 media::cast::AudioSenderConfig audio_config =
903 media::cast::GetAudioSenderConfig(); 905 media::cast::GetAudioSenderConfig();
904 media::cast::VideoSenderConfig video_config = 906 media::cast::VideoSenderConfig video_config =
905 media::cast::GetVideoSenderConfig(); 907 media::cast::GetVideoSenderConfig();
906 908
907 // Running transport on the main thread. 909 // Running transport on the main thread.
908 // Setting up transport config. 910 // Setting up transport config.
909 media::cast::transport::CastTransportAudioConfig transport_audio_config;
910 media::cast::transport::CastTransportVideoConfig transport_video_config;
911 net::IPEndPoint remote_endpoint = 911 net::IPEndPoint remote_endpoint =
912 CreateUDPAddress(remote_ip_address, remote_port); 912 CreateUDPAddress(remote_ip_address, remote_port);
913 transport_audio_config.base.ssrc = audio_config.sender_ssrc;
914 transport_audio_config.base.rtp_config = audio_config.rtp_config;
915 transport_video_config.base.ssrc = video_config.sender_ssrc;
916 transport_video_config.base.rtp_config = video_config.rtp_config;
917 913
918 // Enable raw event and stats logging. 914 // Enable raw event and stats logging.
919 // Running transport on the main thread. 915 // Running transport on the main thread.
920 scoped_refptr<media::cast::CastEnvironment> cast_environment( 916 scoped_refptr<media::cast::CastEnvironment> cast_environment(
921 new media::cast::CastEnvironment( 917 new media::cast::CastEnvironment(
922 make_scoped_ptr<base::TickClock>(new base::DefaultTickClock()), 918 make_scoped_ptr<base::TickClock>(new base::DefaultTickClock()),
923 io_message_loop.message_loop_proxy(), 919 io_message_loop.message_loop_proxy(),
924 audio_thread.message_loop_proxy(), 920 audio_thread.message_loop_proxy(),
925 video_thread.message_loop_proxy())); 921 video_thread.message_loop_proxy()));
926 922
927 // SendProcess initialization. 923 // SendProcess initialization.
928 scoped_ptr<media::cast::SendProcess> send_process( 924 scoped_ptr<media::cast::SendProcess> send_process(
929 new media::cast::SendProcess(test_thread.message_loop_proxy(), 925 new media::cast::SendProcess(test_thread.message_loop_proxy(),
930 cast_environment->Clock(), 926 cast_environment->Clock(),
931 video_config)); 927 video_config));
932 928
933 // CastTransportSender initialization. 929 // CastTransportSender initialization.
934 scoped_ptr<media::cast::transport::CastTransportSender> transport_sender = 930 scoped_ptr<media::cast::transport::CastTransportSender> transport_sender =
935 media::cast::transport::CastTransportSender::Create( 931 media::cast::transport::CastTransportSender::Create(
936 NULL, // net log. 932 NULL, // net log.
937 cast_environment->Clock(), 933 cast_environment->Clock(),
938 remote_endpoint, 934 remote_endpoint,
939 base::Bind(&UpdateCastTransportStatus), 935 base::Bind(&UpdateCastTransportStatus),
940 base::Bind(&LogRawEvents, cast_environment), 936 base::Bind(&LogRawEvents, cast_environment),
941 base::TimeDelta::FromSeconds(1), 937 base::TimeDelta::FromSeconds(1),
942 io_message_loop.message_loop_proxy()); 938 io_message_loop.message_loop_proxy());
943 transport_sender->InitializeAudio(transport_audio_config);
944 transport_sender->InitializeVideo(transport_video_config);
945 939
946 // CastSender initialization. 940 // CastSender initialization.
947 scoped_ptr<media::cast::CastSender> cast_sender = 941 scoped_ptr<media::cast::CastSender> cast_sender =
948 media::cast::CastSender::Create(cast_environment, transport_sender.get()); 942 media::cast::CastSender::Create(cast_environment, transport_sender.get());
949 cast_sender->InitializeVideo( 943 cast_sender->InitializeVideo(
950 send_process->get_video_config(), 944 send_process->get_video_config(),
951 base::Bind(&InitializationResult), 945 base::Bind(&InitializationResult),
952 media::cast::CreateDefaultVideoEncodeAcceleratorCallback(), 946 media::cast::CreateDefaultVideoEncodeAcceleratorCallback(),
953 media::cast::CreateDefaultVideoEncodeMemoryCallback()); 947 media::cast::CreateDefaultVideoEncodeMemoryCallback());
954 cast_sender->InitializeAudio(audio_config, base::Bind(&InitializationResult)); 948 cast_sender->InitializeAudio(audio_config, base::Bind(&InitializationResult));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 base::Passed(&audio_stats_subscriber), 1012 base::Passed(&audio_stats_subscriber),
1019 base::Passed(&offset_estimator)), 1013 base::Passed(&offset_estimator)),
1020 base::TimeDelta::FromSeconds(logging_duration_seconds)); 1014 base::TimeDelta::FromSeconds(logging_duration_seconds));
1021 1015
1022 send_process->Start(cast_sender->audio_frame_input(), 1016 send_process->Start(cast_sender->audio_frame_input(),
1023 cast_sender->video_frame_input()); 1017 cast_sender->video_frame_input());
1024 1018
1025 io_message_loop.Run(); 1019 io_message_loop.Run();
1026 return 0; 1020 return 0;
1027 } 1021 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698