| Index: webrtc/modules/video_coding/codecs/h264/h264.cc
|
| diff --git a/webrtc/modules/video_coding/codecs/h264/h264.cc b/webrtc/modules/video_coding/codecs/h264/h264.cc
|
| index 645ed2cad7af3bdf99643ee0fc5972a20e0b96d8..6f7316b10a69e9cd1db76ed0b5aa37cd15ae13fa 100644
|
| --- a/webrtc/modules/video_coding/codecs/h264/h264.cc
|
| +++ b/webrtc/modules/video_coding/codecs/h264/h264.cc
|
| @@ -11,12 +11,17 @@
|
|
|
| #include "webrtc/modules/video_coding/codecs/h264/include/h264.h"
|
|
|
| +#if defined(WEBRTC_THIRD_PARTY_H264)
|
| +#include "webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.h"
|
| +#include "webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.h"
|
| +#endif
|
| #if defined(WEBRTC_IOS)
|
| #include "webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.h"
|
| #include "webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.h"
|
| #endif
|
|
|
| #include "webrtc/base/checks.h"
|
| +#include "webrtc/base/logging.h"
|
|
|
| namespace webrtc {
|
|
|
| @@ -27,9 +32,15 @@ namespace webrtc {
|
| extern bool IsH264CodecSupportedObjC();
|
| #endif
|
|
|
| +// If any H.264 codec is supported (iOS HW or OpenH264/FFmpeg).
|
| bool IsH264CodecSupported() {
|
| #if defined(WEBRTC_IOS)
|
| - return IsH264CodecSupportedObjC();
|
| + if (IsH264CodecSupportedObjC()) {
|
| + return true;
|
| + }
|
| +#endif
|
| +#if defined(WEBRTC_THIRD_PARTY_H264)
|
| + return true;
|
| #else
|
| return false;
|
| #endif
|
| @@ -38,7 +49,14 @@ bool IsH264CodecSupported() {
|
| H264Encoder* H264Encoder::Create() {
|
| RTC_DCHECK(H264Encoder::IsSupported());
|
| #if defined(WEBRTC_IOS) && defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED)
|
| - return new H264VideoToolboxEncoder();
|
| + if (IsH264CodecSupportedObjC()) {
|
| + LOG(LS_INFO) << "Creating H264VideoToolboxEncoder.";
|
| + return new H264VideoToolboxEncoder();
|
| + }
|
| +#endif
|
| +#if defined(WEBRTC_THIRD_PARTY_H264)
|
| + LOG(LS_INFO) << "Creating H264EncoderImpl.";
|
| + return new H264EncoderImpl();
|
| #else
|
| RTC_NOTREACHED();
|
| return nullptr;
|
| @@ -52,7 +70,14 @@ bool H264Encoder::IsSupported() {
|
| H264Decoder* H264Decoder::Create() {
|
| RTC_DCHECK(H264Decoder::IsSupported());
|
| #if defined(WEBRTC_IOS) && defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED)
|
| - return new H264VideoToolboxDecoder();
|
| + if (IsH264CodecSupportedObjC()) {
|
| + LOG(LS_INFO) << "Creating H264VideoToolboxDecoder.";
|
| + return new H264VideoToolboxDecoder();
|
| + }
|
| +#endif
|
| +#if defined(WEBRTC_THIRD_PARTY_H264)
|
| + LOG(LS_INFO) << "Creating H264DecoderImpl.";
|
| + return new H264DecoderImpl();
|
| #else
|
| RTC_NOTREACHED();
|
| return nullptr;
|
|
|