OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2014 Google Inc. | 3 * Copyright 2014 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 56 matching lines...) Loading... |
67 }; | 67 }; |
68 | 68 |
69 // Multiway: Number of temporal layers for each simulcast stream, for maximum | 69 // Multiway: Number of temporal layers for each simulcast stream, for maximum |
70 // possible number of simulcast streams |kMaxSimulcastStreams|. The array | 70 // possible number of simulcast streams |kMaxSimulcastStreams|. The array |
71 // goes from lowest resolution at position 0 to highest resolution. | 71 // goes from lowest resolution at position 0 to highest resolution. |
72 // For example, first three elements correspond to say: QVGA, VGA, WHD. | 72 // For example, first three elements correspond to say: QVGA, VGA, WHD. |
73 static const int | 73 static const int |
74 kDefaultConferenceNumberOfTemporalLayers[webrtc::kMaxSimulcastStreams] = | 74 kDefaultConferenceNumberOfTemporalLayers[webrtc::kMaxSimulcastStreams] = |
75 {3, 3, 3, 3}; | 75 {3, 3, 3, 3}; |
76 | 76 |
77 void GetSimulcastSsrcs(const StreamParams& sp, std::vector<uint32>* ssrcs) { | 77 void GetSimulcastSsrcs(const StreamParams& sp, std::vector<uint32_t>* ssrcs) { |
78 const SsrcGroup* sim_group = sp.get_ssrc_group(kSimSsrcGroupSemantics); | 78 const SsrcGroup* sim_group = sp.get_ssrc_group(kSimSsrcGroupSemantics); |
79 if (sim_group) { | 79 if (sim_group) { |
80 ssrcs->insert( | 80 ssrcs->insert( |
81 ssrcs->end(), sim_group->ssrcs.begin(), sim_group->ssrcs.end()); | 81 ssrcs->end(), sim_group->ssrcs.begin(), sim_group->ssrcs.end()); |
82 } | 82 } |
83 } | 83 } |
84 | 84 |
85 SimulcastBitrateMode GetSimulcastBitrateMode( | 85 SimulcastBitrateMode GetSimulcastBitrateMode( |
86 const VideoOptions& options) { | 86 const VideoOptions& options) { |
87 VideoOptions::HighestBitrate bitrate_mode; | 87 VideoOptions::HighestBitrate bitrate_mode; |
(...skipping 244 matching lines...) Loading... |
332 codec->codecSpecific.VP8.numberOfTemporalLayers = | 332 codec->codecSpecific.VP8.numberOfTemporalLayers = |
333 kDefaultConferenceNumberOfTemporalLayers[0]; | 333 kDefaultConferenceNumberOfTemporalLayers[0]; |
334 | 334 |
335 return true; | 335 return true; |
336 } | 336 } |
337 | 337 |
338 bool ConfigureSimulcastCodec( | 338 bool ConfigureSimulcastCodec( |
339 const StreamParams& sp, | 339 const StreamParams& sp, |
340 const VideoOptions& options, | 340 const VideoOptions& options, |
341 webrtc::VideoCodec* codec) { | 341 webrtc::VideoCodec* codec) { |
342 std::vector<uint32> ssrcs; | 342 std::vector<uint32_t> ssrcs; |
343 GetSimulcastSsrcs(sp, &ssrcs); | 343 GetSimulcastSsrcs(sp, &ssrcs); |
344 SimulcastBitrateMode bitrate_mode = GetSimulcastBitrateMode(options); | 344 SimulcastBitrateMode bitrate_mode = GetSimulcastBitrateMode(options); |
345 return ConfigureSimulcastCodec(static_cast<int>(ssrcs.size()), bitrate_mode, | 345 return ConfigureSimulcastCodec(static_cast<int>(ssrcs.size()), bitrate_mode, |
346 codec); | 346 codec); |
347 } | 347 } |
348 | 348 |
349 void ConfigureSimulcastTemporalLayers( | 349 void ConfigureSimulcastTemporalLayers( |
350 int num_temporal_layers, webrtc::VideoCodec* codec) { | 350 int num_temporal_layers, webrtc::VideoCodec* codec) { |
351 for (size_t i = 0; i < codec->numberOfSimulcastStreams; ++i) { | 351 for (size_t i = 0; i < codec->numberOfSimulcastStreams; ++i) { |
352 codec->simulcastStream[i].numberOfTemporalLayers = num_temporal_layers; | 352 codec->simulcastStream[i].numberOfTemporalLayers = num_temporal_layers; |
(...skipping 111 matching lines...) Loading... |
464 ScreenshareLayerConfig config = ScreenshareLayerConfig::GetDefault(); | 464 ScreenshareLayerConfig config = ScreenshareLayerConfig::GetDefault(); |
465 | 465 |
466 // For screenshare in conference mode, tl0 and tl1 bitrates are piggybacked | 466 // For screenshare in conference mode, tl0 and tl1 bitrates are piggybacked |
467 // on the VideoCodec struct as target and max bitrates, respectively. | 467 // on the VideoCodec struct as target and max bitrates, respectively. |
468 // See eg. webrtc::VP8EncoderImpl::SetRates(). | 468 // See eg. webrtc::VP8EncoderImpl::SetRates(). |
469 codec->targetBitrate = config.tl0_bitrate_kbps; | 469 codec->targetBitrate = config.tl0_bitrate_kbps; |
470 codec->maxBitrate = config.tl1_bitrate_kbps; | 470 codec->maxBitrate = config.tl1_bitrate_kbps; |
471 } | 471 } |
472 | 472 |
473 } // namespace cricket | 473 } // namespace cricket |
OLD | NEW |