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

Unified Diff: media/cast/test/sender.cc

Issue 892383002: RELAND: [Cast] Software encoder support for varying video frame sizes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix for 'access to uninitialized memory' error. Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/cast/test/linux_output_window.cc ('k') | media/cast/test/simulator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/cast/test/sender.cc
diff --git a/media/cast/test/sender.cc b/media/cast/test/sender.cc
index d9cee32fc95c5af0b2579023745de7be7b4a83c5..7e6fd38a0d6e81d119e927939014202f57b6762c 100644
--- a/media/cast/test/sender.cc
+++ b/media/cast/test/sender.cc
@@ -38,8 +38,6 @@
#include "media/cast/test/utility/input_builder.h"
namespace {
-static const int kAudioChannels = 2;
-static const int kAudioSamplingFrequency = 48000;
// The max allowed size of serialized log.
const int kMaxSerializedLogBytes = 10 * 1000 * 1000;
@@ -57,61 +55,15 @@ const int kMaxSerializedLogBytes = 10 * 1000 * 1000;
//
// --fps=xx
// Override framerate of the video stream.
+//
+// --vary-frame-sizes
+// Randomly vary the video frame sizes at random points in time. Has no
+// effect if --source-file is being used.
const char kSwitchAddress[] = "address";
const char kSwitchPort[] = "port";
const char kSwitchSourceFile[] = "source-file";
const char kSwitchFps[] = "fps";
-
-media::cast::AudioSenderConfig GetAudioSenderConfig() {
- media::cast::AudioSenderConfig audio_config;
-
- audio_config.use_external_encoder = false;
- audio_config.frequency = kAudioSamplingFrequency;
- audio_config.channels = kAudioChannels;
- audio_config.bitrate = 0; // Use Opus auto-VBR mode.
- audio_config.codec = media::cast::CODEC_AUDIO_OPUS;
- audio_config.ssrc = 1;
- audio_config.receiver_ssrc = 2;
- audio_config.rtp_payload_type = 127;
- // TODO(miu): The default in cast_defines.h is 100. Should this be 100, and
- // should receiver.cc's config also be 100?
- audio_config.max_playout_delay = base::TimeDelta::FromMilliseconds(300);
- return audio_config;
-}
-
-media::cast::VideoSenderConfig GetVideoSenderConfig() {
- media::cast::VideoSenderConfig video_config;
-
- video_config.use_external_encoder = false;
-
- // Resolution.
- video_config.width = 1280;
- video_config.height = 720;
- video_config.max_frame_rate = 30;
-
- // Bitrates.
- video_config.max_bitrate = 2500000;
- video_config.min_bitrate = 100000;
- video_config.start_bitrate = video_config.min_bitrate;
-
- // Codec.
- video_config.codec = media::cast::CODEC_VIDEO_VP8;
- video_config.max_number_of_video_buffers_used = 1;
- video_config.number_of_encode_threads = 2;
-
- // Quality options.
- video_config.min_qp = 4;
- video_config.max_qp = 40;
-
- // SSRCs and payload type. Don't change them.
- video_config.ssrc = 11;
- video_config.receiver_ssrc = 12;
- video_config.rtp_payload_type = 96;
- // TODO(miu): The default in cast_defines.h is 100. Should this be 100, and
- // should receiver.cc's config also be 100?
- video_config.max_playout_delay = base::TimeDelta::FromMilliseconds(300);
- return video_config;
-}
+const char kSwitchVaryFrameSizes[] = "vary-frame-sizes";
void UpdateCastTransportStatus(
media::cast::CastTransportStatus status) {
@@ -149,10 +101,12 @@ void LogRawEvents(
}
}
-void InitializationResult(media::cast::CastInitializationStatus result) {
- bool end_result = result == media::cast::STATUS_AUDIO_INITIALIZED ||
- result == media::cast::STATUS_VIDEO_INITIALIZED;
- CHECK(end_result) << "Cast sender uninitialized";
+void QuitLoopOnInitializationResult(
+ media::cast::CastInitializationStatus result) {
+ CHECK(result == media::cast::STATUS_AUDIO_INITIALIZED ||
+ result == media::cast::STATUS_VIDEO_INITIALIZED)
+ << "Cast sender uninitialized";
+ base::MessageLoop::current()->Quit();
}
net::IPEndPoint CreateUDPAddress(std::string ip_str, uint16 port) {
@@ -282,8 +236,10 @@ int main(int argc, char** argv) {
LOG(INFO) << "Sending to " << remote_ip_address << ":" << remote_port
<< ".";
- media::cast::AudioSenderConfig audio_config = GetAudioSenderConfig();
- media::cast::VideoSenderConfig video_config = GetVideoSenderConfig();
+ media::cast::AudioSenderConfig audio_config =
+ media::cast::GetDefaultAudioSenderConfig();
+ media::cast::VideoSenderConfig video_config =
+ media::cast::GetDefaultVideoSenderConfig();
// Running transport on the main thread.
// Setting up transport config.
@@ -315,6 +271,8 @@ int main(int argc, char** argv) {
LOG(INFO) << "Source: " << source_path.value();
fake_media_source->SetSourceFile(source_path, override_fps);
}
+ if (cmd->HasSwitch(kSwitchVaryFrameSizes))
+ fake_media_source->SetVariableFrameSizeMode(true);
// CastTransportSender initialization.
scoped_ptr<media::cast::CastTransportSender> transport_sender =
@@ -330,16 +288,6 @@ int main(int argc, char** argv) {
media::cast::PacketReceiverCallback(),
io_message_loop.message_loop_proxy());
- // CastSender initialization.
- scoped_ptr<media::cast::CastSender> cast_sender =
- media::cast::CastSender::Create(cast_environment, transport_sender.get());
- cast_sender->InitializeVideo(
- fake_media_source->get_video_config(),
- base::Bind(&InitializationResult),
- media::cast::CreateDefaultVideoEncodeAcceleratorCallback(),
- media::cast::CreateDefaultVideoEncodeMemoryCallback());
- cast_sender->InitializeAudio(audio_config, base::Bind(&InitializationResult));
-
// Set up event subscribers.
scoped_ptr<media::cast::EncodingEventSubscriber> video_event_subscriber;
scoped_ptr<media::cast::EncodingEventSubscriber> audio_event_subscriber;
@@ -405,9 +353,28 @@ int main(int argc, char** argv) {
base::Passed(&offset_estimator)),
base::TimeDelta::FromSeconds(logging_duration_seconds));
+ // CastSender initialization.
+ scoped_ptr<media::cast::CastSender> cast_sender =
+ media::cast::CastSender::Create(cast_environment, transport_sender.get());
+ io_message_loop.PostTask(
+ FROM_HERE,
+ base::Bind(&media::cast::CastSender::InitializeVideo,
+ base::Unretained(cast_sender.get()),
+ fake_media_source->get_video_config(),
+ base::Bind(&QuitLoopOnInitializationResult),
+ media::cast::CreateDefaultVideoEncodeAcceleratorCallback(),
+ media::cast::CreateDefaultVideoEncodeMemoryCallback()));
+ io_message_loop.Run(); // Wait for video initialization.
+ io_message_loop.PostTask(
+ FROM_HERE,
+ base::Bind(&media::cast::CastSender::InitializeAudio,
+ base::Unretained(cast_sender.get()),
+ audio_config,
+ base::Bind(&QuitLoopOnInitializationResult)));
+ io_message_loop.Run(); // Wait for audio initialization.
+
fake_media_source->Start(cast_sender->audio_frame_input(),
cast_sender->video_frame_input());
-
io_message_loop.Run();
return 0;
}
« no previous file with comments | « media/cast/test/linux_output_window.cc ('k') | media/cast/test/simulator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698