Flutter iOS Embedder
FlutterTexture.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_COMMON_FRAMEWORK_HEADERS_FLUTTERTEXTURE_H_
6 #define FLUTTER_SHELL_PLATFORM_DARWIN_COMMON_FRAMEWORK_HEADERS_FLUTTERTEXTURE_H_
7 
8 #import <CoreMedia/CoreMedia.h>
9 #import <Foundation/Foundation.h>
10 
11 #import "FlutterMacros.h"
12 
14 
16 /**
17  * Represents a texture that can be shared with Flutter.
18  *
19  * See also: https://github.com/flutter/plugins/tree/master/packages/camera
20  */
21 @protocol FlutterTexture <NSObject>
22 /**
23  * Copy the contents of the texture into a `CVPixelBuffer`.
24  *
25  * The type of the pixel buffer is one of the following:
26  * - `kCVPixelFormatType_32BGRA`
27  * - `kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange`
28  * - `kCVPixelFormatType_420YpCbCr8BiPlanarFullRange`
29  */
30 - (CVPixelBufferRef _Nullable)copyPixelBuffer;
31 
32 /**
33  * Called when the texture is unregistered.
34  *
35  * Called on the raster thread.
36  */
37 @optional
38 - (void)onTextureUnregistered:(NSObject<FlutterTexture>*)texture;
39 @end
40 
42 /**
43  * A collection of registered `FlutterTexture`'s.
44  */
45 @protocol FlutterTextureRegistry <NSObject>
46 /**
47  * Registers a `FlutterTexture` for usage in Flutter and returns an id that can be used to reference
48  * that texture when calling into Flutter with channels. Textures must be registered on the
49  * platform thread. On success returns the pointer to the registered texture, else returns 0.
50  */
51 - (int64_t)registerTexture:(NSObject<FlutterTexture>*)texture;
52 /**
53  * Notifies Flutter that the content of the previously registered texture has been updated.
54  *
55  * This will trigger a call to `-[FlutterTexture copyPixelBuffer]` on the raster thread.
56  */
57 - (void)textureFrameAvailable:(int64_t)textureId;
58 /**
59  * Unregisters a `FlutterTexture` that has previously regeistered with `registerTexture:`. Textures
60  * must be unregistered on the platform thread.
61  *
62  * @param textureId The result that was previously returned from `registerTexture:`.
63  */
64 - (void)unregisterTexture:(int64_t)textureId;
65 @end
66 
68 
69 #endif // FLUTTER_SHELL_PLATFORM_DARWIN_COMMON_FRAMEWORK_HEADERS_FLUTTERTEXTURE_H_
NS_ASSUME_NONNULL_END
#define NS_ASSUME_NONNULL_END
Definition: FlutterMacros.h:20
FlutterTextureRegistry-p
Definition: FlutterTexture.h:45
NS_ASSUME_NONNULL_BEGIN
#define NS_ASSUME_NONNULL_BEGIN
Definition: FlutterMacros.h:19
FlutterMacros.h
FlutterTexture
Definition: FlutterMetalLayer.mm:58
FLUTTER_DARWIN_EXPORT
#define FLUTTER_DARWIN_EXPORT
Definition: FlutterMacros.h:14