Project import generated by Copybara.
GitOrigin-RevId: 53a42bf7ad836321123cb7b6c80b0f2e13fbf83e
This commit is contained in:
@@ -19,9 +19,14 @@ cc_library(
|
||||
visibility = ["//mediapipe/framework:mediapipe_internal"],
|
||||
deps = [
|
||||
":CFHolder",
|
||||
"//mediapipe/framework:calculator_framework",
|
||||
"//mediapipe/framework:packet",
|
||||
"//mediapipe/framework/formats:image_frame",
|
||||
"//mediapipe/framework/port:logging",
|
||||
"//mediapipe/framework/port:ret_check",
|
||||
"//mediapipe/framework/port:source_location",
|
||||
"//mediapipe/framework/port:status",
|
||||
"@com_google_absl//absl/base:core_headers",
|
||||
"@com_google_absl//absl/memory",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "mediapipe/gpu/MPPGraphGPUData.h"
|
||||
#include "mediapipe/gpu/gl_base.h"
|
||||
#include "mediapipe/gpu/gpu_shared_data_internal.h"
|
||||
#include "mediapipe/objc/util.h"
|
||||
|
||||
#import "mediapipe/objc/NSError+util_status.h"
|
||||
#import "GTMDefines.h"
|
||||
@@ -116,14 +117,10 @@ void CallFrameDelegate(void* wrapperVoid, const std::string& streamName,
|
||||
if (format == mediapipe::ImageFormat::SRGBA ||
|
||||
format == mediapipe::ImageFormat::GRAY8) {
|
||||
CVPixelBufferRef pixelBuffer;
|
||||
// To ensure compatibility with CVOpenGLESTextureCache, this attribute should be present.
|
||||
NSDictionary* attributes = @{
|
||||
(id)kCVPixelBufferIOSurfacePropertiesKey : @{},
|
||||
};
|
||||
// If kCVPixelFormatType_32RGBA does not work, it returns kCVReturnInvalidPixelFormat.
|
||||
CVReturn error = CVPixelBufferCreate(
|
||||
NULL, frame.Width(), frame.Height(), kCVPixelFormatType_32BGRA,
|
||||
(__bridge CFDictionaryRef)attributes, &pixelBuffer);
|
||||
GetCVPixelBufferAttributesForGlCompatibility(), &pixelBuffer);
|
||||
_GTMDevAssert(error == kCVReturnSuccess, @"CVPixelBufferCreate failed: %d", error);
|
||||
error = CVPixelBufferLockBaseAddress(pixelBuffer, 0);
|
||||
_GTMDevAssert(error == kCVReturnSuccess, @"CVPixelBufferLockBaseAddress failed: %d", error);
|
||||
|
||||
+14
-2
@@ -517,17 +517,29 @@ CFDictionaryRef GetCVPixelBufferAttributesForGlCompatibility() {
|
||||
CFDictionaryRef empty_dict = CFDictionaryCreate(
|
||||
kCFAllocatorDefault, NULL, NULL, 0, &kCFTypeDictionaryKeyCallBacks,
|
||||
&kCFTypeDictionaryValueCallBacks);
|
||||
|
||||
// To ensure compatibility with CVOpenGLESTextureCache, these attributes
|
||||
// should be present.
|
||||
// should be present. However, on simulator this IOSurface attribute
|
||||
// actually causes CVOpenGLESTextureCache to fail. b/144850076
|
||||
const void* keys[] = {
|
||||
#if !TARGET_IPHONE_SIMULATOR
|
||||
kCVPixelBufferIOSurfacePropertiesKey,
|
||||
#endif // !TARGET_IPHONE_SIMULATOR
|
||||
|
||||
#if TARGET_OS_OSX
|
||||
kCVPixelFormatOpenGLCompatibility,
|
||||
#else
|
||||
kCVPixelFormatOpenGLESCompatibility,
|
||||
#endif // TARGET_OS_OSX
|
||||
};
|
||||
const void* values[] = {empty_dict, kCFBooleanTrue};
|
||||
|
||||
const void* values[] = {
|
||||
#if !TARGET_IPHONE_SIMULATOR
|
||||
empty_dict,
|
||||
#endif // !TARGET_IPHONE_SIMULATOR
|
||||
kCFBooleanTrue
|
||||
};
|
||||
|
||||
attrs = CFDictionaryCreate(
|
||||
kCFAllocatorDefault, keys, values, ABSL_ARRAYSIZE(values),
|
||||
&kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
|
||||
|
||||
Reference in New Issue
Block a user