Implement Optimized CropAndScale for ObjCFrameBuffer
The default implementation of CropAndScale uses ToI420() and then Scale, and this implementation behaves inefficiently with RTCCVPixelBuffer. Bug: None Change-Id: I422ef80d124db0354a2e696892e882a78db445bb Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/271140 Reviewed-by: Kári Helgason <kthelgason@webrtc.org> Commit-Queue: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com> Auto-Submit: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com> Commit-Queue: Kári Helgason <kthelgason@webrtc.org> Cr-Commit-Position: refs/heads/main@{#37877}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
e0b45c268e
commit
9204302248
@ -153,6 +153,21 @@
|
||||
|
||||
return YES;
|
||||
}
|
||||
- (id<RTC_OBJC_TYPE(RTCVideoFrameBuffer)>)cropAndScaleWith:(int)offsetX
|
||||
offsetY:(int)offsetY
|
||||
cropWidth:(int)cropWidth
|
||||
cropHeight:(int)cropHeight
|
||||
scaleWidth:(int)scaleWidth
|
||||
scaleHeight:(int)scaleHeight {
|
||||
return [[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc]
|
||||
initWithPixelBuffer:_pixelBuffer
|
||||
adaptedWidth:scaleWidth
|
||||
adaptedHeight:scaleHeight
|
||||
cropWidth:cropWidth * _cropWidth / _width
|
||||
cropHeight:cropHeight * _cropHeight / _height
|
||||
cropX:_cropX + offsetX * _cropWidth / _width
|
||||
cropY:_cropY + offsetY * _cropHeight / _height];
|
||||
}
|
||||
|
||||
- (id<RTC_OBJC_TYPE(RTCI420Buffer)>)toI420 {
|
||||
const OSType pixelFormat = CVPixelBufferGetPixelFormatType(_pixelBuffer);
|
||||
|
||||
Reference in New Issue
Block a user