blob: 645ed2cad7af3bdf99643ee0fc5972a20e0b96d8 [file] [log] [blame]
Zeke Chin71f6f442015-06-29 14:34:58 -07001/*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 *
10 */
11
12#include "webrtc/modules/video_coding/codecs/h264/include/h264.h"
13
14#if defined(WEBRTC_IOS)
15#include "webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.h"
16#include "webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.h"
17#endif
18
19#include "webrtc/base/checks.h"
20
21namespace webrtc {
22
23// We need this file to be C++ only so it will compile properly for all
24// platforms. In order to write ObjC specific implementations we use private
25// externs. This function is defined in h264.mm.
26#if defined(WEBRTC_IOS)
27extern bool IsH264CodecSupportedObjC();
28#endif
29
30bool IsH264CodecSupported() {
31#if defined(WEBRTC_IOS)
32 return IsH264CodecSupportedObjC();
33#else
34 return false;
35#endif
36}
37
38H264Encoder* H264Encoder::Create() {
henrikg91d6ede2015-09-17 00:24:34 -070039 RTC_DCHECK(H264Encoder::IsSupported());
Zeke Chin71f6f442015-06-29 14:34:58 -070040#if defined(WEBRTC_IOS) && defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED)
41 return new H264VideoToolboxEncoder();
42#else
43 RTC_NOTREACHED();
44 return nullptr;
45#endif
46}
47
48bool H264Encoder::IsSupported() {
49 return IsH264CodecSupported();
50}
51
52H264Decoder* H264Decoder::Create() {
henrikg91d6ede2015-09-17 00:24:34 -070053 RTC_DCHECK(H264Decoder::IsSupported());
Zeke Chin71f6f442015-06-29 14:34:58 -070054#if defined(WEBRTC_IOS) && defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED)
55 return new H264VideoToolboxDecoder();
56#else
57 RTC_NOTREACHED();
58 return nullptr;
59#endif
60}
61
62bool H264Decoder::IsSupported() {
63 return IsH264CodecSupported();
64}
65
66} // namespace webrtc