diff options
Diffstat (limited to 'webrtc/modules/video_coding/codecs/h264')
7 files changed, 42 insertions, 52 deletions
diff --git a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.cc b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.cc index 61ef80bbf1..6fee2e6f36 100644 --- a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.cc +++ b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.cc @@ -16,7 +16,7 @@ #include "libyuv/convert.h" #include "webrtc/base/checks.h" #include "webrtc/base/logging.h" -#include "webrtc/common_video/interface/video_frame_buffer.h" +#include "webrtc/common_video/include/video_frame_buffer.h" #include "webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_nalu.h" #include "webrtc/video_frame.h" @@ -106,8 +106,7 @@ namespace webrtc { H264VideoToolboxDecoder::H264VideoToolboxDecoder() : callback_(nullptr), video_format_(nullptr), - decompression_session_(nullptr) { -} + decompression_session_(nullptr) {} H264VideoToolboxDecoder::~H264VideoToolboxDecoder() { DestroyDecompressionSession(); @@ -129,8 +128,7 @@ int H264VideoToolboxDecoder::Decode( CMSampleBufferRef sample_buffer = nullptr; if (!H264AnnexBBufferToCMSampleBuffer(input_image._buffer, - input_image._length, - video_format_, + input_image._length, video_format_, &sample_buffer)) { return WEBRTC_VIDEO_CODEC_ERROR; } @@ -206,11 +204,8 @@ int H264VideoToolboxDecoder::ResetDecompressionSession() { int64_t nv12type = kCVPixelFormatType_420YpCbCr8BiPlanarFullRange; CFNumberRef pixel_format = CFNumberCreate(nullptr, kCFNumberLongType, &nv12type); - CFTypeRef values[attributes_size] = { - kCFBooleanTrue, - io_surface_value, - pixel_format - }; + CFTypeRef values[attributes_size] = {kCFBooleanTrue, io_surface_value, + pixel_format}; CFDictionaryRef attributes = internal::CreateCFDictionary(keys, values, attributes_size); if (io_surface_value) { @@ -266,6 +261,10 @@ void H264VideoToolboxDecoder::SetVideoFormat( } } +const char* H264VideoToolboxDecoder::ImplementationName() const { + return "VideoToolbox"; +} + } // namespace webrtc #endif // defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED) diff --git a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.h b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.h index f54ddb9efd..6d64307a82 100644 --- a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.h +++ b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_decoder.h @@ -45,6 +45,8 @@ class H264VideoToolboxDecoder : public H264Decoder { int Reset() override; + const char* ImplementationName() const override; + private: int ResetDecompressionSession(); void ConfigureDecompressionSession(); diff --git a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.cc b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.cc index d677f8b812..7df4ec74ba 100644 --- a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.cc +++ b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.cc @@ -99,11 +99,7 @@ struct FrameEncodeParams { int32_t h, int64_t rtms, uint32_t ts) - : callback(cb), - width(w), - height(h), - render_time_ms(rtms), - timestamp(ts) { + : callback(cb), width(w), height(h), render_time_ms(rtms), timestamp(ts) { if (csi) { codec_specific_info = *csi; } else { @@ -146,9 +142,8 @@ bool CopyVideoFrameToPixelBuffer(const webrtc::VideoFrame& frame, int ret = libyuv::I420ToNV12( frame.buffer(webrtc::kYPlane), frame.stride(webrtc::kYPlane), frame.buffer(webrtc::kUPlane), frame.stride(webrtc::kUPlane), - frame.buffer(webrtc::kVPlane), frame.stride(webrtc::kVPlane), - dst_y, dst_stride_y, dst_uv, dst_stride_uv, - frame.width(), frame.height()); + frame.buffer(webrtc::kVPlane), frame.stride(webrtc::kVPlane), dst_y, + dst_stride_y, dst_uv, dst_stride_uv, frame.width(), frame.height()); CVPixelBufferUnlockBaseAddress(pixel_buffer, 0); if (ret) { LOG(LS_ERROR) << "Error converting I420 VideoFrame to NV12 :" << ret; @@ -188,10 +183,8 @@ void VTCompressionOutputCallback(void* encoder, // TODO(tkchin): Allocate buffers through a pool. rtc::scoped_ptr<rtc::Buffer> buffer(new rtc::Buffer()); rtc::scoped_ptr<webrtc::RTPFragmentationHeader> header; - if (!H264CMSampleBufferToAnnexBBuffer(sample_buffer, - is_keyframe, - buffer.get(), - header.accept())) { + if (!H264CMSampleBufferToAnnexBBuffer(sample_buffer, is_keyframe, + buffer.get(), header.accept())) { return; } webrtc::EncodedImage frame(buffer->data(), buffer->size(), buffer->size()); @@ -215,8 +208,7 @@ void VTCompressionOutputCallback(void* encoder, namespace webrtc { H264VideoToolboxEncoder::H264VideoToolboxEncoder() - : callback_(nullptr), compression_session_(nullptr) { -} + : callback_(nullptr), compression_session_(nullptr) {} H264VideoToolboxEncoder::~H264VideoToolboxEncoder() { DestroyCompressionSession(); @@ -289,8 +281,8 @@ int H264VideoToolboxEncoder::Encode( CMTimeMake(input_image.render_time_ms(), 1000); CFDictionaryRef frame_properties = nullptr; if (is_keyframe_required) { - CFTypeRef keys[] = { kVTEncodeFrameOptionKey_ForceKeyFrame }; - CFTypeRef values[] = { kCFBooleanTrue }; + CFTypeRef keys[] = {kVTEncodeFrameOptionKey_ForceKeyFrame}; + CFTypeRef values[] = {kCFBooleanTrue}; frame_properties = internal::CreateCFDictionary(keys, values, 1); } rtc::scoped_ptr<internal::FrameEncodeParams> encode_params; @@ -359,11 +351,8 @@ int H264VideoToolboxEncoder::ResetCompressionSession() { int64_t nv12type = kCVPixelFormatType_420YpCbCr8BiPlanarFullRange; CFNumberRef pixel_format = CFNumberCreate(nullptr, kCFNumberLongType, &nv12type); - CFTypeRef values[attributes_size] = { - kCFBooleanTrue, - io_surface_value, - pixel_format - }; + CFTypeRef values[attributes_size] = {kCFBooleanTrue, io_surface_value, + pixel_format}; CFDictionaryRef source_attributes = internal::CreateCFDictionary(keys, values, attributes_size); if (io_surface_value) { @@ -376,15 +365,11 @@ int H264VideoToolboxEncoder::ResetCompressionSession() { } OSStatus status = VTCompressionSessionCreate( nullptr, // use default allocator - width_, - height_, - kCMVideoCodecType_H264, + width_, height_, kCMVideoCodecType_H264, nullptr, // use default encoder source_attributes, nullptr, // use default compressed data allocator - internal::VTCompressionOutputCallback, - this, - &compression_session_); + internal::VTCompressionOutputCallback, this, &compression_session_); if (source_attributes) { CFRelease(source_attributes); source_attributes = nullptr; @@ -434,6 +419,10 @@ void H264VideoToolboxEncoder::DestroyCompressionSession() { } } +const char* H264VideoToolboxEncoder::ImplementationName() const { + return "VideoToolbox"; +} + } // namespace webrtc #endif // defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED) diff --git a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.h b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.h index f4fb86fa04..269e0411b2 100644 --- a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.h +++ b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_encoder.h @@ -48,6 +48,8 @@ class H264VideoToolboxEncoder : public H264Encoder { int Release() override; + const char* ImplementationName() const override; + private: int ResetCompressionSession(); void ConfigureCompressionSession(); diff --git a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_nalu.cc b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_nalu.cc index caca96d3d8..322c213f7b 100644 --- a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_nalu.cc +++ b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_nalu.cc @@ -154,11 +154,10 @@ bool H264CMSampleBufferToAnnexBBuffer( return true; } -bool H264AnnexBBufferToCMSampleBuffer( - const uint8_t* annexb_buffer, - size_t annexb_buffer_size, - CMVideoFormatDescriptionRef video_format, - CMSampleBufferRef* out_sample_buffer) { +bool H264AnnexBBufferToCMSampleBuffer(const uint8_t* annexb_buffer, + size_t annexb_buffer_size, + CMVideoFormatDescriptionRef video_format, + CMSampleBufferRef* out_sample_buffer) { RTC_DCHECK(annexb_buffer); RTC_DCHECK(out_sample_buffer); *out_sample_buffer = nullptr; diff --git a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_nalu.h b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_nalu.h index 230dea94a0..31ef525816 100644 --- a/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_nalu.h +++ b/webrtc/modules/video_coding/codecs/h264/h264_video_toolbox_nalu.h @@ -9,8 +9,8 @@ * */ -#ifndef WEBRTC_MODULES_VIDEO_CODING_CODECS_H264_H264_VIDEO_TOOLBOX_NALU_H -#define WEBRTC_MODULES_VIDEO_CODING_CODECS_H264_H264_VIDEO_TOOLBOX_NALU_H +#ifndef WEBRTC_MODULES_VIDEO_CODING_CODECS_H264_H264_VIDEO_TOOLBOX_NALU_H_ +#define WEBRTC_MODULES_VIDEO_CODING_CODECS_H264_H264_VIDEO_TOOLBOX_NALU_H_ #include "webrtc/modules/video_coding/codecs/h264/include/h264.h" @@ -19,7 +19,7 @@ #include <CoreMedia/CoreMedia.h> #include "webrtc/base/buffer.h" -#include "webrtc/modules/interface/module_common_types.h" +#include "webrtc/modules/include/module_common_types.h" namespace webrtc { @@ -39,11 +39,10 @@ bool H264CMSampleBufferToAnnexBBuffer( // If |is_keyframe| is true then |video_format| is ignored since the format will // be read from the buffer. Otherwise |video_format| must be provided. // Caller is responsible for releasing the created sample buffer. -bool H264AnnexBBufferToCMSampleBuffer( - const uint8_t* annexb_buffer, - size_t annexb_buffer_size, - CMVideoFormatDescriptionRef video_format, - CMSampleBufferRef* out_sample_buffer); +bool H264AnnexBBufferToCMSampleBuffer(const uint8_t* annexb_buffer, + size_t annexb_buffer_size, + CMVideoFormatDescriptionRef video_format, + CMSampleBufferRef* out_sample_buffer); // Helper class for reading NALUs from an RTP Annex B buffer. class AnnexBBufferReader final { @@ -97,4 +96,4 @@ class AvccBufferWriter final { } // namespace webrtc #endif // defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED) -#endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_H264_H264_VIDEO_TOOLBOX_NALU_H +#endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_H264_H264_VIDEO_TOOLBOX_NALU_H_ diff --git a/webrtc/modules/video_coding/codecs/h264/include/h264.h b/webrtc/modules/video_coding/codecs/h264/include/h264.h index 3f52839a6c..50ca57c1c9 100644 --- a/webrtc/modules/video_coding/codecs/h264/include/h264.h +++ b/webrtc/modules/video_coding/codecs/h264/include/h264.h @@ -23,7 +23,7 @@ #endif // defined(WEBRTC_IOS) || defined(WEBRTC_MAC) -#include "webrtc/modules/video_coding/codecs/interface/video_codec_interface.h" +#include "webrtc/modules/video_coding/include/video_codec_interface.h" namespace webrtc { |