Quick Look in the Xcode Debugger for Obj-C frame buffer classes.
Implement debugQuickLookObject for RTCI420Buffers and RTCCVPixelBuffers. Also draw gradients consistently regardless of endianness in the unit tests for RTCCVPixelBuffers and ObjCVideoTrackSource. Bug: webrtc:9007 Change-Id: Ia5a3d0905a763efc190165471983061fc07551f2 Reviewed-on: https://webrtc-review.googlesource.com/64987 Commit-Queue: Anders Carlsson <andersc@webrtc.org> Reviewed-by: Kári Helgason <kthelgason@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22746}
This commit is contained in:
committed by
Commit Bot
parent
0e075723ad
commit
498644e645
@ -13,9 +13,13 @@
|
||||
#include "common_video/libyuv/include/webrtc_libyuv.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/logging.h"
|
||||
|
||||
#include "third_party/libyuv/include/libyuv.h"
|
||||
|
||||
#if !defined(NDEBUG) && defined(WEBRTC_IOS)
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <VideoToolbox/VideoToolbox.h>
|
||||
#endif
|
||||
|
||||
@implementation RTCCVPixelBuffer {
|
||||
int _width;
|
||||
int _height;
|
||||
@ -244,6 +248,20 @@
|
||||
return i420Buffer;
|
||||
}
|
||||
|
||||
#pragma mark - Debugging
|
||||
|
||||
#if !defined(NDEBUG) && defined(WEBRTC_IOS)
|
||||
- (id)debugQuickLookObject {
|
||||
CGImageRef cgImage;
|
||||
VTCreateCGImageFromCVPixelBuffer(_pixelBuffer, NULL, &cgImage);
|
||||
UIImage *image = [UIImage imageWithCGImage:cgImage scale:1.0 orientation:UIImageOrientationUp];
|
||||
CGImageRelease(cgImage);
|
||||
return image;
|
||||
}
|
||||
#endif
|
||||
|
||||
#pragma mark - Private
|
||||
|
||||
- (void)cropAndScaleNV12To:(CVPixelBufferRef)outputPixelBuffer withTempBuffer:(uint8_t*)tmpBuffer {
|
||||
// Prepare output pointers.
|
||||
CVReturn cvRet = CVPixelBufferLockBaseAddress(outputPixelBuffer, 0);
|
||||
|
||||
@ -8,10 +8,15 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#import "WebRTC/RTCVideoFrameBuffer.h"
|
||||
#import "RTCI420Buffer+Private.h"
|
||||
|
||||
#include "api/video/i420_buffer.h"
|
||||
|
||||
#if !defined(NDEBUG) && defined(WEBRTC_IOS)
|
||||
#import <UIKit/UIKit.h>
|
||||
#include "third_party/libyuv/include/libyuv.h"
|
||||
#endif
|
||||
|
||||
@implementation RTCI420Buffer {
|
||||
@protected
|
||||
rtc::scoped_refptr<webrtc::I420BufferInterface> _i420Buffer;
|
||||
@ -89,12 +94,42 @@
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private
|
||||
|
||||
- (rtc::scoped_refptr<webrtc::I420BufferInterface>)nativeI420Buffer {
|
||||
return _i420Buffer;
|
||||
}
|
||||
|
||||
#pragma mark - Debugging
|
||||
|
||||
#if !defined(NDEBUG) && defined(WEBRTC_IOS)
|
||||
- (id)debugQuickLookObject {
|
||||
UIGraphicsBeginImageContext(CGSizeMake(_i420Buffer->width(), _i420Buffer->height()));
|
||||
CGContextRef c = UIGraphicsGetCurrentContext();
|
||||
uint8_t *ctxData = (uint8_t *)CGBitmapContextGetData(c);
|
||||
|
||||
libyuv::I420ToARGB(_i420Buffer->DataY(),
|
||||
_i420Buffer->StrideY(),
|
||||
_i420Buffer->DataU(),
|
||||
_i420Buffer->StrideU(),
|
||||
_i420Buffer->DataV(),
|
||||
_i420Buffer->StrideV(),
|
||||
ctxData,
|
||||
_i420Buffer->width() * 4,
|
||||
_i420Buffer->width(),
|
||||
_i420Buffer->height());
|
||||
|
||||
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
|
||||
UIGraphicsEndImageContext();
|
||||
|
||||
return image;
|
||||
}
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation RTCMutableI420Buffer
|
||||
|
||||
- (uint8_t *)mutableDataY {
|
||||
|
||||
Reference in New Issue
Block a user