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 /** Copy the contents of the texture into a `CVPixelBuffer`. */
23 - (CVPixelBufferRef _Nullable)copyPixelBuffer;
24 
25 /**
26  * Called when the texture is unregistered.
27  *
28  * Called on the raster thread.
29  */
30 @optional
31 - (void)onTextureUnregistered:(NSObject<FlutterTexture>*)texture;
32 @end
33 
35 /**
36  * A collection of registered `FlutterTexture`'s.
37  */
38 @protocol FlutterTextureRegistry <NSObject>
39 /**
40  * Registers a `FlutterTexture` for usage in Flutter and returns an id that can be used to reference
41  * that texture when calling into Flutter with channels. Textures must be registered on the
42  * platform thread. On success returns the pointer to the registered texture, else returns 0.
43  */
44 - (int64_t)registerTexture:(NSObject<FlutterTexture>*)texture;
45 /**
46  * Notifies Flutter that the content of the previously registered texture has been updated.
47  *
48  * This will trigger a call to `-[FlutterTexture copyPixelBuffer]` on the raster thread.
49  */
50 - (void)textureFrameAvailable:(int64_t)textureId;
51 /**
52  * Unregisters a `FlutterTexture` that has previously regeistered with `registerTexture:`. Textures
53  * must be unregistered on the platform thread.
54  *
55  * @param textureId The result that was previously returned from `registerTexture:`.
56  */
57 - (void)unregisterTexture:(int64_t)textureId;
58 @end
59 
61 
62 #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:38
NS_ASSUME_NONNULL_BEGIN
#define NS_ASSUME_NONNULL_BEGIN
Definition: FlutterMacros.h:19
FlutterMacros.h
FlutterTexture
Definition: FlutterMetalLayer.mm:54
FLUTTER_DARWIN_EXPORT
#define FLUTTER_DARWIN_EXPORT
Definition: FlutterMacros.h:14