hbos d664836efa Added EncodedImage::GetBufferPaddingBytes.
The FFmpeg video decoder requires up to 8 additional bytes to be allocated for its encoded image buffer input, due to optimized byte readers over-reading on some platforms.
We plan to use FFmpeg for a soon-to-land H.264 enc/dec.

This CL adds support for padding encoded image buffers based on codec type, and makes sure calls to VCMEncodedFrame::VerifyAndAllocate use the padding.

All padding constants are 0 but making H.264 pad with 8 bytes will be a one-line change.

Also, added -framework CoreFoundation to webrtc_h264_video_toolbox which was missing.

BUG=chromium:468365
BUG=https://bugs.chromium.org/p/webrtc/issues/detail?id=5424
NOTRY=True

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

Cr-Commit-Position: refs/heads/master@{#11337}
2016-01-21 13:43:18 +00:00

73 lines
2.1 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',
],
}],
['rtc_use_h264==1', {
# Dependency for sake of compiling The dependencies will be used for
# real as soon as https://codereview.webrtc.org/1306813009/ lands.
'dependencies': [
'<(DEPTH)/third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
'<(DEPTH)/third_party/openh264/openh264.gyp:openh264_encoder',
],
}],
],
'sources': [
'h264.cc',
'include/h264.h',
],
}, # webrtc_h264
],
'conditions': [
['OS=="ios"', {
'targets': [
{
'target_name': 'webrtc_h264_video_toolbox',
'type': 'static_library',
'dependencies': [
'<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',
],
'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',
],
}, # webrtc_h264_video_toolbox
], # targets
}], # OS=="ios"
], # conditions
}