| 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 bbff225d1c9bec31938645721f95508494bd6b11..1c0fc705ae4d55b05dd61bf3e195032af86771c6 100644
|
| --- a/webrtc/modules/video_coding/codecs/h264/h264.cc
|
| +++ b/webrtc/modules/video_coding/codecs/h264/h264.cc
|
| @@ -14,6 +14,10 @@
|
| #if defined(WEBRTC_USE_H264)
|
| #include "webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.h"
|
| #include "webrtc/modules/video_coding/codecs/h264/h264_encoder_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"
|
| @@ -35,8 +39,20 @@
|
| #endif
|
| }
|
|
|
| +// We need this file to be C++ only so it will compile properly for all
|
| +// platforms. In order to write ObjC specific implementations we use private
|
| +// externs. This function is defined in h264.mm.
|
| +#if defined(WEBRTC_IOS)
|
| +extern bool IsH264CodecSupportedObjC();
|
| +#endif
|
| +
|
| // If any H.264 codec is supported (iOS HW or OpenH264/FFmpeg).
|
| bool IsH264CodecSupported() {
|
| +#if defined(WEBRTC_IOS) && defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED)
|
| + if (IsH264CodecSupportedObjC()) {
|
| + return true;
|
| + }
|
| +#endif
|
| #if defined(WEBRTC_USE_H264)
|
| return g_rtc_use_h264;
|
| #else
|
| @@ -46,6 +62,12 @@
|
|
|
| H264Encoder* H264Encoder::Create() {
|
| RTC_DCHECK(H264Encoder::IsSupported());
|
| +#if defined(WEBRTC_IOS) && defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED)
|
| + if (IsH264CodecSupportedObjC()) {
|
| + LOG(LS_INFO) << "Creating H264VideoToolboxEncoder.";
|
| + return new H264VideoToolboxEncoder();
|
| + }
|
| +#endif
|
| #if defined(WEBRTC_USE_H264)
|
| RTC_CHECK(g_rtc_use_h264);
|
| LOG(LS_INFO) << "Creating H264EncoderImpl.";
|
| @@ -62,6 +84,12 @@
|
|
|
| H264Decoder* H264Decoder::Create() {
|
| RTC_DCHECK(H264Decoder::IsSupported());
|
| +#if defined(WEBRTC_IOS) && defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED)
|
| + if (IsH264CodecSupportedObjC()) {
|
| + LOG(LS_INFO) << "Creating H264VideoToolboxDecoder.";
|
| + return new H264VideoToolboxDecoder();
|
| + }
|
| +#endif
|
| #if defined(WEBRTC_USE_H264)
|
| RTC_CHECK(g_rtc_use_h264);
|
| LOG(LS_INFO) << "Creating H264DecoderImpl.";
|
|
|