Commit b20491f5 authored by hclam@chromium.org's avatar hclam@chromium.org

Cast: Clarify the unit of bitrate

This change is to clarify the unit used in cast.streaming APIs for
bitrate. It should be in kilobits per second. And the unit conversion
should be done just before converting to VideoSenderConfig and
AudioSenderConfig which use bits per second as unit.

This will improve the video quality for existing extensions which use
kilobits per second.

BUG=354267
NOTRY=true

Review URL: https://codereview.chromium.org/214663008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260438 0039d316-1c4b-4281-b951-d872f2087c98
parent cb8575a0
......@@ -25,8 +25,10 @@ namespace cast.streaming.rtpStream {
long? clockRate;
// Minimum bitrate in kilobits per second.
long? minBitrate;
// Maximum bitrate in kilobits per second.
long? maxBitrate;
// The number of channels.
......
......@@ -34,6 +34,9 @@ namespace {
const char kCodecNameOpus[] = "OPUS";
const char kCodecNameVp8[] = "VP8";
// To convert from kilobits per second to bits to per second.
const int kBitrateMultiplier = 1000;
// This constant defines the number of sets of audio data to buffer
// in the FIFO. If input audio and output data have different resampling
// rates then buffer is necessary to avoid audio glitches.
......@@ -49,6 +52,7 @@ CastRtpPayloadParams DefaultOpusPayload() {
payload.codec_name = kCodecNameOpus;
payload.clock_rate = 48000;
payload.channels = 2;
// The value is 0 which means VBR.
payload.min_bitrate = payload.max_bitrate =
media::cast::kDefaultAudioEncoderBitrate;
return payload;
......@@ -63,8 +67,8 @@ CastRtpPayloadParams DefaultVp8Payload() {
payload.clock_rate = 90000;
payload.width = 1280;
payload.height = 720;
payload.min_bitrate = 50 * 1000;
payload.max_bitrate = 2000 * 1000;
payload.min_bitrate = 50;
payload.max_bitrate = 2000;
return payload;
}
......@@ -90,7 +94,7 @@ bool ToAudioSenderConfig(const CastRtpParams& params,
config->use_external_encoder = false;
config->frequency = params.payload.clock_rate;
config->channels = params.payload.channels;
config->bitrate = params.payload.max_bitrate;
config->bitrate = params.payload.max_bitrate * kBitrateMultiplier;
config->codec = media::cast::transport::kPcm16;
if (params.payload.codec_name == kCodecNameOpus)
config->codec = media::cast::transport::kOpus;
......@@ -107,8 +111,9 @@ bool ToVideoSenderConfig(const CastRtpParams& params,
config->use_external_encoder = false;
config->width = params.payload.width;
config->height = params.payload.height;
config->min_bitrate = config->start_bitrate = params.payload.min_bitrate;
config->max_bitrate = params.payload.max_bitrate;
config->min_bitrate = config->start_bitrate =
params.payload.min_bitrate * kBitrateMultiplier;
config->max_bitrate = params.payload.max_bitrate * kBitrateMultiplier;
if (params.payload.codec_name == kCodecNameVp8)
config->codec = media::cast::transport::kVp8;
else
......
......@@ -47,10 +47,10 @@ struct CastRtpPayloadParams {
// Update frequency of payload sample.
int clock_rate;
// Maximum bitrate.
// Maximum bitrate in kilobits per second.
int max_bitrate;
// Minimum bitrate.
// Minimum bitrate in kilobits per second.
int min_bitrate;
// Number of audio channels.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment