Files
platform-external-webrtc/webrtc/modules/video_coding/codecs/h264/h264.gypi
tkchin 5ed5ed953d Fix VideoToolbox backgrounding issues.
When the iOS application is not in the foreground, the hardware encoder and
decoder become invalidated. There doesn't seem to be a way to query their state
so we don't know they're invalid until we get an error code after an
encode/decode request. To solve the issue, we just don't encode/decode when the
app is not active, and reinitialize the encoder/decoder when the app is active
again.

Also fixes a leak in the decoder.

BUG=webrtc:4081

Review URL: https://codereview.webrtc.org/1732953003

Cr-Commit-Position: refs/heads/master@{#11916}
2016-03-08 18:51:58 +00:00

97 lines
2.9 KiB
Python

# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
{
'includes': [
'../../../../build/common.gypi',
],
'targets': [
{
'target_name': 'webrtc_h264',
'type': 'static_library',
'conditions': [
['OS=="ios"', {
'dependencies': [
'webrtc_h264_video_toolbox',
],
'sources': [
'h264_objc.mm',
],
}],
# TODO(hbos): Consider renaming this flag and the below macro to
# something which helps distinguish OpenH264/FFmpeg from other H264
# implementations.
['rtc_use_h264==1', {
'defines': [
'WEBRTC_USE_H264',
],
'conditions': [
['rtc_initialize_ffmpeg==1', {
'defines': [
'WEBRTC_INITIALIZE_FFMPEG',
],
}],
],
'dependencies': [
'<(DEPTH)/third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
'<(DEPTH)/third_party/openh264/openh264.gyp:openh264_encoder',
'<(webrtc_root)/common_video/common_video.gyp:common_video',
],
'sources': [
'h264_decoder_impl.cc',
'h264_decoder_impl.h',
'h264_encoder_impl.cc',
'h264_encoder_impl.h',
],
}],
],
'sources': [
'h264.cc',
'include/h264.h',
],
}, # webrtc_h264
],
'conditions': [
['OS=="ios"', {
'targets': [
{
'target_name': 'webrtc_h264_video_toolbox',
'type': 'static_library',
'includes': [ '../../../../build/objc_common.gypi' ],
'dependencies': [
'<(webrtc_root)/base/base.gyp:rtc_base_objc',
],
'link_settings': {
'xcode_settings': {
'OTHER_LDFLAGS': [
'-framework CoreFoundation',
'-framework CoreMedia',
'-framework CoreVideo',
'-framework VideoToolbox',
],
},
},
'sources': [
'h264_video_toolbox_decoder.cc',
'h264_video_toolbox_decoder.h',
'h264_video_toolbox_encoder.cc',
'h264_video_toolbox_encoder.h',
'h264_video_toolbox_nalu.cc',
'h264_video_toolbox_nalu.h',
],
'conditions': [
['build_libyuv==1', {
'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv'],
}],
],
}, # webrtc_h264_video_toolbox
], # targets
}], # OS=="ios"
], # conditions
}