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

Side by Side Diff: webrtc/modules/video_coding/main/source/codec_database.cc

Issue 1425613004: Remove VIDEOCODEC_* from engine_configurations.h. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: remove comment part Created 5 years, 1 month 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 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/modules/video_coding/main/source/codec_database.h" 11 #include "webrtc/modules/video_coding/main/source/codec_database.h"
12 12
13 #include <assert.h> 13 #include <assert.h>
14 14
15 #include "webrtc/base/checks.h" 15 #include "webrtc/base/checks.h"
16 #include "webrtc/engine_configurations.h" 16 #include "webrtc/engine_configurations.h"
17 #ifdef VIDEOCODEC_H264
18 #include "webrtc/modules/video_coding/codecs/h264/include/h264.h" 17 #include "webrtc/modules/video_coding/codecs/h264/include/h264.h"
19 #endif
20 #ifdef VIDEOCODEC_I420
21 #include "webrtc/modules/video_coding/codecs/i420/include/i420.h" 18 #include "webrtc/modules/video_coding/codecs/i420/include/i420.h"
22 #endif
23 #ifdef VIDEOCODEC_VP8
24 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h" 19 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h"
25 #endif
26 #ifdef VIDEOCODEC_VP9
27 #include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h" 20 #include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h"
28 #endif
29 #include "webrtc/modules/video_coding/main/source/internal_defines.h" 21 #include "webrtc/modules/video_coding/main/source/internal_defines.h"
30 #include "webrtc/system_wrappers/include/logging.h" 22 #include "webrtc/system_wrappers/include/logging.h"
31 23
32 namespace { 24 namespace {
33 const size_t kDefaultPayloadSize = 1440; 25 const size_t kDefaultPayloadSize = 1440;
34 const uint8_t kDefaultPayloadType = 100; 26 const uint8_t kDefaultPayloadType = 100;
35 } 27 }
36 28
37 namespace webrtc { 29 namespace webrtc {
38 30
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 encoded_frame_callback_(encoded_frame_callback), 108 encoded_frame_callback_(encoded_frame_callback),
117 ptr_decoder_(NULL), 109 ptr_decoder_(NULL),
118 dec_map_(), 110 dec_map_(),
119 dec_external_map_() {} 111 dec_external_map_() {}
120 112
121 VCMCodecDataBase::~VCMCodecDataBase() { 113 VCMCodecDataBase::~VCMCodecDataBase() {
122 ResetSender(); 114 ResetSender();
123 ResetReceiver(); 115 ResetReceiver();
124 } 116 }
125 117
126 int VCMCodecDataBase::NumberOfCodecs() { 118 void VCMCodecDataBase::Codec(VideoCodecType codec_type, VideoCodec* settings) {
127 return VCM_NUM_VIDEO_CODECS_AVAILABLE;
128 }
129
130 bool VCMCodecDataBase::Codec(int list_id,
131 VideoCodec* settings) {
132 if (!settings) {
133 return false;
134 }
135 if (list_id >= VCM_NUM_VIDEO_CODECS_AVAILABLE) {
136 return false;
137 }
138 memset(settings, 0, sizeof(VideoCodec)); 119 memset(settings, 0, sizeof(VideoCodec));
139 switch (list_id) { 120 switch (codec_type) {
140 #ifdef VIDEOCODEC_VP8 121 case kVideoCodecVP8:
141 case VCM_VP8_IDX: {
142 strncpy(settings->plName, "VP8", 4); 122 strncpy(settings->plName, "VP8", 4);
143 settings->codecType = kVideoCodecVP8; 123 settings->codecType = kVideoCodecVP8;
144 // 96 to 127 dynamic payload types for video codecs. 124 // 96 to 127 dynamic payload types for video codecs.
145 settings->plType = kDefaultPayloadType; 125 settings->plType = kDefaultPayloadType;
146 settings->startBitrate = kDefaultStartBitrateKbps; 126 settings->startBitrate = kDefaultStartBitrateKbps;
147 settings->minBitrate = VCM_MIN_BITRATE; 127 settings->minBitrate = VCM_MIN_BITRATE;
148 settings->maxBitrate = 0; 128 settings->maxBitrate = 0;
149 settings->maxFramerate = VCM_DEFAULT_FRAME_RATE; 129 settings->maxFramerate = VCM_DEFAULT_FRAME_RATE;
150 settings->width = VCM_DEFAULT_CODEC_WIDTH; 130 settings->width = VCM_DEFAULT_CODEC_WIDTH;
151 settings->height = VCM_DEFAULT_CODEC_HEIGHT; 131 settings->height = VCM_DEFAULT_CODEC_HEIGHT;
152 settings->numberOfSimulcastStreams = 0; 132 settings->numberOfSimulcastStreams = 0;
153 settings->qpMax = 56; 133 settings->qpMax = 56;
154 settings->codecSpecific.VP8 = VideoEncoder::GetDefaultVp8Settings(); 134 settings->codecSpecific.VP8 = VideoEncoder::GetDefaultVp8Settings();
155 return true; 135 return;
156 } 136 case kVideoCodecVP9:
157 #endif
158 #ifdef VIDEOCODEC_VP9
159 case VCM_VP9_IDX: {
160 strncpy(settings->plName, "VP9", 4); 137 strncpy(settings->plName, "VP9", 4);
161 settings->codecType = kVideoCodecVP9; 138 settings->codecType = kVideoCodecVP9;
162 // 96 to 127 dynamic payload types for video codecs. 139 // 96 to 127 dynamic payload types for video codecs.
163 settings->plType = kDefaultPayloadType; 140 settings->plType = kDefaultPayloadType;
164 settings->startBitrate = 100; 141 settings->startBitrate = 100;
165 settings->minBitrate = VCM_MIN_BITRATE; 142 settings->minBitrate = VCM_MIN_BITRATE;
166 settings->maxBitrate = 0; 143 settings->maxBitrate = 0;
167 settings->maxFramerate = VCM_DEFAULT_FRAME_RATE; 144 settings->maxFramerate = VCM_DEFAULT_FRAME_RATE;
168 settings->width = VCM_DEFAULT_CODEC_WIDTH; 145 settings->width = VCM_DEFAULT_CODEC_WIDTH;
169 settings->height = VCM_DEFAULT_CODEC_HEIGHT; 146 settings->height = VCM_DEFAULT_CODEC_HEIGHT;
170 settings->numberOfSimulcastStreams = 0; 147 settings->numberOfSimulcastStreams = 0;
171 settings->qpMax = 56; 148 settings->qpMax = 56;
172 settings->codecSpecific.VP9 = VideoEncoder::GetDefaultVp9Settings(); 149 settings->codecSpecific.VP9 = VideoEncoder::GetDefaultVp9Settings();
173 return true; 150 return;
174 } 151 case kVideoCodecH264:
175 #endif
176 #ifdef VIDEOCODEC_H264
177 case VCM_H264_IDX: {
178 strncpy(settings->plName, "H264", 5); 152 strncpy(settings->plName, "H264", 5);
179 settings->codecType = kVideoCodecH264; 153 settings->codecType = kVideoCodecH264;
180 // 96 to 127 dynamic payload types for video codecs. 154 // 96 to 127 dynamic payload types for video codecs.
181 settings->plType = kDefaultPayloadType; 155 settings->plType = kDefaultPayloadType;
182 settings->startBitrate = kDefaultStartBitrateKbps; 156 settings->startBitrate = kDefaultStartBitrateKbps;
183 settings->minBitrate = VCM_MIN_BITRATE; 157 settings->minBitrate = VCM_MIN_BITRATE;
184 settings->maxBitrate = 0; 158 settings->maxBitrate = 0;
185 settings->maxFramerate = VCM_DEFAULT_FRAME_RATE; 159 settings->maxFramerate = VCM_DEFAULT_FRAME_RATE;
186 settings->width = VCM_DEFAULT_CODEC_WIDTH; 160 settings->width = VCM_DEFAULT_CODEC_WIDTH;
187 settings->height = VCM_DEFAULT_CODEC_HEIGHT; 161 settings->height = VCM_DEFAULT_CODEC_HEIGHT;
188 settings->numberOfSimulcastStreams = 0; 162 settings->numberOfSimulcastStreams = 0;
189 settings->qpMax = 56; 163 settings->qpMax = 56;
190 settings->codecSpecific.H264 = VideoEncoder::GetDefaultH264Settings(); 164 settings->codecSpecific.H264 = VideoEncoder::GetDefaultH264Settings();
191 return true; 165 return;
192 } 166 case kVideoCodecI420:
193 #endif
194 #ifdef VIDEOCODEC_I420
195 case VCM_I420_IDX: {
196 strncpy(settings->plName, "I420", 5); 167 strncpy(settings->plName, "I420", 5);
197 settings->codecType = kVideoCodecI420; 168 settings->codecType = kVideoCodecI420;
198 // 96 to 127 dynamic payload types for video codecs. 169 // 96 to 127 dynamic payload types for video codecs.
199 settings->plType = kDefaultPayloadType; 170 settings->plType = kDefaultPayloadType;
200 // Bitrate needed for this size and framerate. 171 // Bitrate needed for this size and framerate.
201 settings->startBitrate = 3 * VCM_DEFAULT_CODEC_WIDTH * 172 settings->startBitrate = 3 * VCM_DEFAULT_CODEC_WIDTH *
202 VCM_DEFAULT_CODEC_HEIGHT * 8 * 173 VCM_DEFAULT_CODEC_HEIGHT * 8 *
203 VCM_DEFAULT_FRAME_RATE / 1000 / 2; 174 VCM_DEFAULT_FRAME_RATE / 1000 / 2;
204 settings->maxBitrate = settings->startBitrate; 175 settings->maxBitrate = settings->startBitrate;
205 settings->maxFramerate = VCM_DEFAULT_FRAME_RATE; 176 settings->maxFramerate = VCM_DEFAULT_FRAME_RATE;
206 settings->width = VCM_DEFAULT_CODEC_WIDTH; 177 settings->width = VCM_DEFAULT_CODEC_WIDTH;
207 settings->height = VCM_DEFAULT_CODEC_HEIGHT; 178 settings->height = VCM_DEFAULT_CODEC_HEIGHT;
208 settings->minBitrate = VCM_MIN_BITRATE; 179 settings->minBitrate = VCM_MIN_BITRATE;
209 settings->numberOfSimulcastStreams = 0; 180 settings->numberOfSimulcastStreams = 0;
210 return true; 181 return;
211 } 182 case kVideoCodecRED:
212 #endif 183 case kVideoCodecULPFEC:
213 default: { 184 case kVideoCodecGeneric:
214 return false; 185 case kVideoCodecUnknown:
215 } 186 RTC_NOTREACHED();
187 return;
216 } 188 }
217 } 189 }
218 190
219 bool VCMCodecDataBase::Codec(VideoCodecType codec_type,
220 VideoCodec* settings) {
221 for (int i = 0; i < VCMCodecDataBase::NumberOfCodecs(); i++) {
222 const bool ret = VCMCodecDataBase::Codec(i, settings);
223 if (!ret) {
224 return false;
225 }
226 if (codec_type == settings->codecType) {
227 return true;
228 }
229 }
230 return false;
231 }
232
233 void VCMCodecDataBase::ResetSender() { 191 void VCMCodecDataBase::ResetSender() {
234 DeleteEncoder(); 192 DeleteEncoder();
235 periodic_key_frames_ = false; 193 periodic_key_frames_ = false;
236 } 194 }
237 195
238 // Assuming only one registered encoder - since only one used, no need for more. 196 // Assuming only one registered encoder - since only one used, no need for more.
239 bool VCMCodecDataBase::SetSendCodec(const VideoCodec* send_codec, 197 bool VCMCodecDataBase::SetSendCodec(const VideoCodec* send_codec,
240 int number_of_cores, 198 int number_of_cores,
241 size_t max_payload_size) { 199 size_t max_payload_size) {
242 RTC_DCHECK(send_codec); 200 RTC_DCHECK(send_codec);
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 592
635 void VCMCodecDataBase::DeleteEncoder() { 593 void VCMCodecDataBase::DeleteEncoder() {
636 if (!ptr_encoder_) 594 if (!ptr_encoder_)
637 return; 595 return;
638 ptr_encoder_->Release(); 596 ptr_encoder_->Release();
639 ptr_encoder_.reset(); 597 ptr_encoder_.reset();
640 } 598 }
641 599
642 VCMGenericDecoder* VCMCodecDataBase::CreateDecoder(VideoCodecType type) const { 600 VCMGenericDecoder* VCMCodecDataBase::CreateDecoder(VideoCodecType type) const {
643 switch (type) { 601 switch (type) {
644 #ifdef VIDEOCODEC_VP8
645 case kVideoCodecVP8: 602 case kVideoCodecVP8:
646 return new VCMGenericDecoder(*(VP8Decoder::Create())); 603 return new VCMGenericDecoder(*(VP8Decoder::Create()));
647 #endif
648 #ifdef VIDEOCODEC_VP9
649 case kVideoCodecVP9: 604 case kVideoCodecVP9:
650 return new VCMGenericDecoder(*(VP9Decoder::Create())); 605 return new VCMGenericDecoder(*(VP9Decoder::Create()));
651 #endif
652 #ifdef VIDEOCODEC_I420
653 case kVideoCodecI420: 606 case kVideoCodecI420:
654 return new VCMGenericDecoder(*(new I420Decoder)); 607 return new VCMGenericDecoder(*(new I420Decoder));
655 #endif
656 #ifdef VIDEOCODEC_H264
657 case kVideoCodecH264: 608 case kVideoCodecH264:
658 if (H264Decoder::IsSupported()) { 609 if (H264Decoder::IsSupported()) {
659 return new VCMGenericDecoder(*(H264Decoder::Create())); 610 return new VCMGenericDecoder(*(H264Decoder::Create()));
660 } 611 }
661 break; 612 break;
662 #endif
663 default: 613 default:
664 break; 614 break;
665 } 615 }
666 LOG(LS_WARNING) << "No internal decoder of this type exists."; 616 LOG(LS_WARNING) << "No internal decoder of this type exists.";
667 return NULL; 617 return NULL;
668 } 618 }
669 619
670 const VCMDecoderMapItem* VCMCodecDataBase::FindDecoderItem( 620 const VCMDecoderMapItem* VCMCodecDataBase::FindDecoderItem(
671 uint8_t payload_type) const { 621 uint8_t payload_type) const {
672 DecoderMap::const_iterator it = dec_map_.find(payload_type); 622 DecoderMap::const_iterator it = dec_map_.find(payload_type);
673 if (it != dec_map_.end()) { 623 if (it != dec_map_.end()) {
674 return (*it).second; 624 return (*it).second;
675 } 625 }
676 return NULL; 626 return NULL;
677 } 627 }
678 628
679 const VCMExtDecoderMapItem* VCMCodecDataBase::FindExternalDecoderItem( 629 const VCMExtDecoderMapItem* VCMCodecDataBase::FindExternalDecoderItem(
680 uint8_t payload_type) const { 630 uint8_t payload_type) const {
681 ExternalDecoderMap::const_iterator it = dec_external_map_.find(payload_type); 631 ExternalDecoderMap::const_iterator it = dec_external_map_.find(payload_type);
682 if (it != dec_external_map_.end()) { 632 if (it != dec_external_map_.end()) {
683 return (*it).second; 633 return (*it).second;
684 } 634 }
685 return NULL; 635 return NULL;
686 } 636 }
687 } // namespace webrtc 637 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698