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

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

Issue 1187573004: iOS HW H264 support. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Move unittest file. Created 5 years, 5 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
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"
19 #endif
17 #ifdef VIDEOCODEC_I420 20 #ifdef VIDEOCODEC_I420
18 #include "webrtc/modules/video_coding/codecs/i420/main/interface/i420.h" 21 #include "webrtc/modules/video_coding/codecs/i420/main/interface/i420.h"
19 #endif 22 #endif
20 #ifdef VIDEOCODEC_VP8 23 #ifdef VIDEOCODEC_VP8
21 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h" 24 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h"
22 #endif 25 #endif
23 #ifdef VIDEOCODEC_VP9 26 #ifdef VIDEOCODEC_VP9
24 #include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h" 27 #include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h"
25 #endif 28 #endif
26 #include "webrtc/modules/video_coding/main/source/internal_defines.h" 29 #include "webrtc/modules/video_coding/main/source/internal_defines.h"
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 #ifdef VIDEOCODEC_VP9 657 #ifdef VIDEOCODEC_VP9
655 case kVideoCodecVP9: 658 case kVideoCodecVP9:
656 return new VCMGenericEncoder(VP9Encoder::Create(), encoder_rate_observer_, 659 return new VCMGenericEncoder(VP9Encoder::Create(), encoder_rate_observer_,
657 false); 660 false);
658 #endif 661 #endif
659 #ifdef VIDEOCODEC_I420 662 #ifdef VIDEOCODEC_I420
660 case kVideoCodecI420: 663 case kVideoCodecI420:
661 return new VCMGenericEncoder(new I420Encoder(), encoder_rate_observer_, 664 return new VCMGenericEncoder(new I420Encoder(), encoder_rate_observer_,
662 false); 665 false);
663 #endif 666 #endif
667 #ifdef VIDEOCODEC_H264
668 case kVideoCodecH264:
669 if (H264Encoder::IsSupported()) {
670 return new VCMGenericEncoder(H264Encoder::Create(),
671 encoder_rate_observer_,
672 false);
673 }
674 break;
675 #endif
664 default: 676 default:
665 LOG(LS_WARNING) << "No internal encoder of this type exists."; 677 break;
666 return NULL;
667 } 678 }
679 LOG(LS_WARNING) << "No internal encoder of this type exists.";
680 return NULL;
668 } 681 }
669 682
670 void VCMCodecDataBase::DeleteEncoder() { 683 void VCMCodecDataBase::DeleteEncoder() {
671 if (ptr_encoder_) { 684 if (ptr_encoder_) {
672 ptr_encoder_->Release(); 685 ptr_encoder_->Release();
673 if (!current_enc_is_external_) 686 if (!current_enc_is_external_)
674 delete ptr_encoder_->encoder_; 687 delete ptr_encoder_->encoder_;
675 delete ptr_encoder_; 688 delete ptr_encoder_;
676 ptr_encoder_ = NULL; 689 ptr_encoder_ = NULL;
677 } 690 }
678 } 691 }
679 692
680 VCMGenericDecoder* VCMCodecDataBase::CreateDecoder(VideoCodecType type) const { 693 VCMGenericDecoder* VCMCodecDataBase::CreateDecoder(VideoCodecType type) const {
681 switch (type) { 694 switch (type) {
682 #ifdef VIDEOCODEC_VP8 695 #ifdef VIDEOCODEC_VP8
683 case kVideoCodecVP8: 696 case kVideoCodecVP8:
684 return new VCMGenericDecoder(*(VP8Decoder::Create())); 697 return new VCMGenericDecoder(*(VP8Decoder::Create()));
685 #endif 698 #endif
686 #ifdef VIDEOCODEC_VP9 699 #ifdef VIDEOCODEC_VP9
687 case kVideoCodecVP9: 700 case kVideoCodecVP9:
688 return new VCMGenericDecoder(*(VP9Decoder::Create())); 701 return new VCMGenericDecoder(*(VP9Decoder::Create()));
689 #endif 702 #endif
690 #ifdef VIDEOCODEC_I420 703 #ifdef VIDEOCODEC_I420
691 case kVideoCodecI420: 704 case kVideoCodecI420:
692 return new VCMGenericDecoder(*(new I420Decoder)); 705 return new VCMGenericDecoder(*(new I420Decoder));
693 #endif 706 #endif
707 #ifdef VIDEOCODEC_H264
708 case kVideoCodecH264:
709 if (H264Decoder::IsSupported()) {
710 return new VCMGenericDecoder(*(H264Decoder::Create()));
711 }
712 break;
713 #endif
694 default: 714 default:
695 LOG(LS_WARNING) << "No internal decoder of this type exists."; 715 break;
696 return NULL;
697 } 716 }
717 LOG(LS_WARNING) << "No internal decoder of this type exists.";
718 return NULL;
698 } 719 }
699 720
700 const VCMDecoderMapItem* VCMCodecDataBase::FindDecoderItem( 721 const VCMDecoderMapItem* VCMCodecDataBase::FindDecoderItem(
701 uint8_t payload_type) const { 722 uint8_t payload_type) const {
702 DecoderMap::const_iterator it = dec_map_.find(payload_type); 723 DecoderMap::const_iterator it = dec_map_.find(payload_type);
703 if (it != dec_map_.end()) { 724 if (it != dec_map_.end()) {
704 return (*it).second; 725 return (*it).second;
705 } 726 }
706 return NULL; 727 return NULL;
707 } 728 }
708 729
709 const VCMExtDecoderMapItem* VCMCodecDataBase::FindExternalDecoderItem( 730 const VCMExtDecoderMapItem* VCMCodecDataBase::FindExternalDecoderItem(
710 uint8_t payload_type) const { 731 uint8_t payload_type) const {
711 ExternalDecoderMap::const_iterator it = dec_external_map_.find(payload_type); 732 ExternalDecoderMap::const_iterator it = dec_external_map_.find(payload_type);
712 if (it != dec_external_map_.end()) { 733 if (it != dec_external_map_.end()) {
713 return (*it).second; 734 return (*it).second;
714 } 735 }
715 return NULL; 736 return NULL;
716 } 737 }
717 } // namespace webrtc 738 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698