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

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

Issue 268983002: Revert of Cast: Fix two video freezing problems (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
« no previous file with comments | « media/cast/test/end2end_unittest.cc ('k') | media/cast/transport/cast_transport_config.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.rtp_config.ssrc = 1; 103 audio_config.sender_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.rtp_config.ssrc = 11; 136 video_config.sender_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 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 AVSampleFormatToSampleFormat( 568 AVSampleFormatToSampleFormat(
569 av_audio_context()->sample_fmt), 569 av_audio_context()->sample_fmt),
570 ChannelLayoutToChromeChannelLayout( 570 ChannelLayoutToChromeChannelLayout(
571 av_audio_context()->channel_layout, 571 av_audio_context()->channel_layout,
572 av_audio_context()->channels), 572 av_audio_context()->channels),
573 av_audio_context()->channels, 573 av_audio_context()->channels,
574 av_audio_context()->sample_rate, 574 av_audio_context()->sample_rate,
575 frames_read, 575 frames_read,
576 &avframe->data[0], 576 &avframe->data[0],
577 // Note: Not all files have correct values for pkt_pts. 577 // Note: Not all files have correct values for pkt_pts.
578 base::TimeDelta::FromMilliseconds(avframe->pkt_pts)); 578 base::TimeDelta::FromMilliseconds(avframe->pkt_pts),
579 // TODO(hclam): Give accurate duration based on samples.
580 base::TimeDelta());
579 audio_algo_.EnqueueBuffer(buffer); 581 audio_algo_.EnqueueBuffer(buffer);
580 } while (packet_temp.size > 0); 582 } while (packet_temp.size > 0);
581 avcodec_free_frame(&avframe); 583 avcodec_free_frame(&avframe);
582 584
583 const int frames_needed_to_scale = 585 const int frames_needed_to_scale =
584 playback_rate_ * av_audio_context()->sample_rate / 586 playback_rate_ * av_audio_context()->sample_rate /
585 kAudioPacketsPerSecond; 587 kAudioPacketsPerSecond;
586 while (frames_needed_to_scale <= audio_algo_.frames_buffered()) { 588 while (frames_needed_to_scale <= audio_algo_.frames_buffered()) {
587 if (!audio_algo_.FillBuffer(audio_fifo_input_bus_.get(), 589 if (!audio_algo_.FillBuffer(audio_fifo_input_bus_.get(),
588 audio_fifo_input_bus_->frames())) { 590 audio_fifo_input_bus_->frames())) {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 std::queue<AudioBus*> audio_bus_queue_; 739 std::queue<AudioBus*> audio_bus_queue_;
738 740
739 DISALLOW_COPY_AND_ASSIGN(SendProcess); 741 DISALLOW_COPY_AND_ASSIGN(SendProcess);
740 }; 742 };
741 743
742 } // namespace cast 744 } // namespace cast
743 } // namespace media 745 } // namespace media
744 746
745 namespace { 747 namespace {
746 void UpdateCastTransportStatus( 748 void UpdateCastTransportStatus(
747 media::cast::transport::CastTransportStatus status) { 749 media::cast::transport::CastTransportStatus status) {}
748 VLOG(21) << "Transport status: " << status;
749 }
750 750
751 void LogRawEvents( 751 void LogRawEvents(
752 const scoped_refptr<media::cast::CastEnvironment>& cast_environment, 752 const scoped_refptr<media::cast::CastEnvironment>& cast_environment,
753 const std::vector<media::cast::PacketEvent>& packet_events) { 753 const std::vector<media::cast::PacketEvent>& packet_events) {
754 VLOG(1) << "Got packet events from transport, size: " << packet_events.size(); 754 VLOG(1) << "Got packet events from transport, size: " << packet_events.size();
755 for (std::vector<media::cast::PacketEvent>::const_iterator it = 755 for (std::vector<media::cast::PacketEvent>::const_iterator it =
756 packet_events.begin(); 756 packet_events.begin();
757 it != packet_events.end(); 757 it != packet_events.end();
758 ++it) { 758 ++it) {
759 cast_environment->Logging()->InsertPacketEvent(it->timestamp, 759 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 899 LOG(INFO) << "Sending to " << remote_ip_address << ":" << remote_port
900 << "."; 900 << ".";
901 901
902 media::cast::AudioSenderConfig audio_config = 902 media::cast::AudioSenderConfig audio_config =
903 media::cast::GetAudioSenderConfig(); 903 media::cast::GetAudioSenderConfig();
904 media::cast::VideoSenderConfig video_config = 904 media::cast::VideoSenderConfig video_config =
905 media::cast::GetVideoSenderConfig(); 905 media::cast::GetVideoSenderConfig();
906 906
907 // Running transport on the main thread. 907 // Running transport on the main thread.
908 // Setting up transport config. 908 // Setting up transport config.
909 media::cast::transport::CastTransportAudioConfig transport_audio_config;
910 media::cast::transport::CastTransportVideoConfig transport_video_config;
909 net::IPEndPoint remote_endpoint = 911 net::IPEndPoint remote_endpoint =
910 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;
911 917
912 // Enable raw event and stats logging. 918 // Enable raw event and stats logging.
913 // Running transport on the main thread. 919 // Running transport on the main thread.
914 scoped_refptr<media::cast::CastEnvironment> cast_environment( 920 scoped_refptr<media::cast::CastEnvironment> cast_environment(
915 new media::cast::CastEnvironment( 921 new media::cast::CastEnvironment(
916 make_scoped_ptr<base::TickClock>(new base::DefaultTickClock()), 922 make_scoped_ptr<base::TickClock>(new base::DefaultTickClock()),
917 io_message_loop.message_loop_proxy(), 923 io_message_loop.message_loop_proxy(),
918 audio_thread.message_loop_proxy(), 924 audio_thread.message_loop_proxy(),
919 video_thread.message_loop_proxy())); 925 video_thread.message_loop_proxy()));
920 926
921 // SendProcess initialization. 927 // SendProcess initialization.
922 scoped_ptr<media::cast::SendProcess> send_process( 928 scoped_ptr<media::cast::SendProcess> send_process(
923 new media::cast::SendProcess(test_thread.message_loop_proxy(), 929 new media::cast::SendProcess(test_thread.message_loop_proxy(),
924 cast_environment->Clock(), 930 cast_environment->Clock(),
925 video_config)); 931 video_config));
926 932
927 // CastTransportSender initialization. 933 // CastTransportSender initialization.
928 scoped_ptr<media::cast::transport::CastTransportSender> transport_sender = 934 scoped_ptr<media::cast::transport::CastTransportSender> transport_sender =
929 media::cast::transport::CastTransportSender::Create( 935 media::cast::transport::CastTransportSender::Create(
930 NULL, // net log. 936 NULL, // net log.
931 cast_environment->Clock(), 937 cast_environment->Clock(),
932 remote_endpoint, 938 remote_endpoint,
933 base::Bind(&UpdateCastTransportStatus), 939 base::Bind(&UpdateCastTransportStatus),
934 base::Bind(&LogRawEvents, cast_environment), 940 base::Bind(&LogRawEvents, cast_environment),
935 base::TimeDelta::FromSeconds(1), 941 base::TimeDelta::FromSeconds(1),
936 io_message_loop.message_loop_proxy()); 942 io_message_loop.message_loop_proxy());
943 transport_sender->InitializeAudio(transport_audio_config);
944 transport_sender->InitializeVideo(transport_video_config);
937 945
938 // CastSender initialization. 946 // CastSender initialization.
939 scoped_ptr<media::cast::CastSender> cast_sender = 947 scoped_ptr<media::cast::CastSender> cast_sender =
940 media::cast::CastSender::Create(cast_environment, transport_sender.get()); 948 media::cast::CastSender::Create(cast_environment, transport_sender.get());
941 cast_sender->InitializeVideo( 949 cast_sender->InitializeVideo(
942 send_process->get_video_config(), 950 send_process->get_video_config(),
943 base::Bind(&InitializationResult), 951 base::Bind(&InitializationResult),
944 media::cast::CreateDefaultVideoEncodeAcceleratorCallback(), 952 media::cast::CreateDefaultVideoEncodeAcceleratorCallback(),
945 media::cast::CreateDefaultVideoEncodeMemoryCallback()); 953 media::cast::CreateDefaultVideoEncodeMemoryCallback());
946 cast_sender->InitializeAudio(audio_config, base::Bind(&InitializationResult)); 954 cast_sender->InitializeAudio(audio_config, base::Bind(&InitializationResult));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 base::Passed(&audio_stats_subscriber), 1018 base::Passed(&audio_stats_subscriber),
1011 base::Passed(&offset_estimator)), 1019 base::Passed(&offset_estimator)),
1012 base::TimeDelta::FromSeconds(logging_duration_seconds)); 1020 base::TimeDelta::FromSeconds(logging_duration_seconds));
1013 1021
1014 send_process->Start(cast_sender->audio_frame_input(), 1022 send_process->Start(cast_sender->audio_frame_input(),
1015 cast_sender->video_frame_input()); 1023 cast_sender->video_frame_input());
1016 1024
1017 io_message_loop.Run(); 1025 io_message_loop.Run();
1018 return 0; 1026 return 0;
1019 } 1027 }
OLDNEW
« no previous file with comments | « media/cast/test/end2end_unittest.cc ('k') | media/cast/transport/cast_transport_config.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698