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; |