MeiCam SDK For iOS  3.16.2
NvsEffectRenderCore.h
Go to the documentation of this file.
1 //================================================================================
2 //
3 // (c) Copyright Meishe Co. Ltd, 2016. All rights reserved.
4 //
5 // This code and information is provided "as is" without warranty of any kind,
6 // either expressed or implied, including but not limited to the implied
7 // warranties of merchantability and/or fitness for a particular purpose.
8 //
9 //--------------------------------------------------------------------------------
10 // Birth Date: Sep 10. 2019
11 // Author: Meishe video team
12 //================================================================================
13 
14 #pragma once
15 
16 #import <Foundation/Foundation.h>
17 #import "NvsEffectCommonDef.h"
18 #import <CoreVideo/CVPixelBuffer.h>
19 
20 @class NvsEffect;
21 
22 typedef enum {
29 
30 typedef enum {
38 
39 typedef enum {
45 
46 typedef struct
47 {
48  int texWidth;
49  int texHeight;
55 
57 {
59  info.texWidth = w;
60  info.texHeight = h;
61  info.centerPointX = 0;
62  info.centerPointY = 0;
63  info.imagePar.num = 1;
64  info.imagePar.den = 1;
65  info.proxyScale.num = 1;
66  info.proxyScale.den = 1;
67  return info;
68 }
69 
70 typedef struct
71 {
72  int texId;
79 
81 {
83  tex.texId = texId;
84  tex.texFormat = format;
85  tex.texInfo = info;
86  tex.isUpSideDown = false;
89  return tex;
90 }
91 
100 #define NVS_EFFECT_DISPLAY_ROTATION @"display_rotation"
102 #define NVS_EFFECT_PHYSICAL_ORIENTATION @"physical_orientation"
103 #define NVS_EFFECT_FLIP_HORIZONTALLY @"flip_horizontally"
104 #define NVS_EFFECT_TIMESTAMP @"timestamp"
105 #define NVS_EFFECT_FLAGS @"flags"
106 #define NVS_EFFECT_OUTPUT_FRAME_FORMAT @"output_frame_format"
107 #define NVS_EFFECT_IS_BT601 @"is_bt.601"
108 
111 
123 NVS_EXPORT @interface NvsEffectRenderCore : NSObject
124 
134 - (BOOL)initialize;
135 
148 - (BOOL)initializeWithFlags:(int)falgs;
149 
162 - (BOOL)initializeWithFlags:(int)falgs maxCacheSize:(int64_t)size;
163 
171 - (void)cleanUp;
172 
194 - (NvsEffectCoreError)renderEffect:(NvsEffect *)effect
195  inputTexId:(int)inputTexId
196  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
197  outputTexId:(int)outputTexId
198  timestamp:(int64_t)timestamp
199  flags:(NvsRenderFlag)flags;
200 
226 - (NvsEffectCoreError)renderEffect:(NvsEffect *)effect
227  inputTexId:(int)inputTexId
228  inputBuddyBuffer:(const NvsEffectVideoFrameInfo*)inputBuddyBuffer
229  physicalOrientation:(int)physicalOrientation
230  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
231  outputTexId:(int)outputTexId
232  timestamp:(int64_t)timestamp
233  flags:(NvsRenderFlag)flags;
234 
260 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
261  inputTexId:(int)inputTexId
262  inputBuddyBuffer:(const NvsEffectVideoFrameInfo*)inputBuddyBuffer
263  physicalOrientation:(int)physicalOrientation
264  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
265  outputTexId:(int)outputTexId
266  timestamp:(int64_t)timestamp
267  flags:(NvsRenderFlag)flags;
268 
295 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
296  inputImage:(CVPixelBufferRef)inputImage
297  displayRotation:(int)displayRotation
298  isFlipHorizontally:(BOOL)isFlip
299  physicalOrientation:(int)physicalOrientation
300  outputTexId:(int)outputTexId
301  timestamp:(int64_t)timestamp
302  flags:(NvsRenderFlag)flags;
303 
333 - (NvsEffectCoreError)renderEffect:(NvsEffect *)effect
334  inputImage:(CVPixelBufferRef)inputImage
335  displayRotation:(int)rotation
336  isFlipHorizontally:(BOOL)isFlip
337  timestamp:(int64_t)timestamp
338  flags:(NvsRenderFlag)flags
339  outputFrameFormat:(NvsEffectVideoFramePixelFormat)format
340  outputFrameIsBT601:(BOOL)is601
341  outputImage:(CVPixelBufferRef*)ouputImage;
342 
372 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
373  inputImage:(CVPixelBufferRef)inputImage
374  displayRotation:(int)rotation
375  isFlipHorizontally:(BOOL)isFlip
376  timestamp:(int64_t)timestamp
377  flags:(NvsRenderFlag)flags
378  outputFrameFormat:(NvsEffectVideoFramePixelFormat)ouputFrameformat
379  outputFrameIsBT601:(BOOL)is601
380  outputImage:(CVPixelBufferRef*)ouputImage;
381 
401 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
402  inputImage:(CVPixelBufferRef)inputImage
403  outputImage:(CVPixelBufferRef*)ouputImage
404  options:(NSDictionary *)options;
405 
435 - (NvsEffectCoreError)renderEffectsWithPixelBuffer:(NSArray<NvsEffect *>*)effects
436  inputImage:(CVPixelBufferRef)inputImage
437  displayRotation:(int)rotation
438  physicalOrientation:(int)physicalOrientation
439  isFlipHorizontally:(BOOL)isFlip
440  timestamp:(int64_t)timestamp
441  flags:(NvsRenderFlag)flags
442  outputImage:(CVPixelBufferRef)ouputImage;
443 
461 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
462  inputImage:(CVPixelBufferRef)inputImage
463  options:(NSDictionary *)options;
464 
488 - (NvsEffectCoreError)renderEffect:(NvsEffect *)effect
489  inputTexIds:(NSArray*)inputTextures
490  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
491  outputTexId:(int)outputTexId
492  timestamp:(int64_t)timestamp
493  flags:(NvsRenderFlag)flags;
494 
518 - (NvsEffectCoreError)calcEffectOutputSize:(NvsEffect *)effect
519  inputTexs:(NvsEffectGPUTexture*)inputTextureArray
520  intputTexCount:(int)texArrayCount
521  expectVideoResolution:(NvsEffectVideoResolution *)videoResolution
522  outputTex:(NvsEffectGPUTextureInfo*)outputTexInfo
523  timestamp:(int64_t)timestamp
524  flags:(NvsRenderFlag)flags;
525 
547 - (NvsEffectCoreError)renderVariantSizeEffect:(NvsEffect *)effect
548  inputTexs:(NvsEffectGPUTexture*)inputTextureArray
549  intputTexSize:(int)texArrayCount
550  outputTex:(NvsEffectGPUTexture*)outputTex
551  timestamp:(int64_t)timestamp
552  flags:(NvsRenderFlag)flags;
553 
579 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
580  inputTex:(NvsEffectGPUTexture *)inputTex
581  inputBuddyBuffer:(const NvsEffectVideoFrameInfoExt*)inputBuddyBuffer
582  physicalOrientation:(int)physicalOrientation
583  outputTex:(NvsEffectGPUTexture *)outputTex
584  timestamp:(int64_t)timestamp
585  flags:(NvsRenderFlag)flags;
586 
596 - (void)clearEffectResources:(NvsEffect *)effect;
597 
605 - (void)clearCacheResources;
606 
622 -(NvsEffectCoreError)uploadPixelBufferToTexture:(CVPixelBufferRef)frameBuffer displayRotation:(int)rotation horizontalFlip:(BOOL)flip outputTexId:(int)outputTexId;
623 
639 -(NvsEffectCoreError)uploadPixelBufferToTexture:(CVPixelBufferRef)frameBuffer horizontalFlip:(BOOL)flip outputTexId:(int)outputTexId;
640 
656 -(NvsEffectCoreError)uploadPixelBufferToTexture:(CVPixelBufferRef)frameBuffer displayRotation:(int)rotation horizontalFlip:(BOOL)flip outputTex:(NvsEffectGPUTexture *)outputTex;
657 
677 -(NvsEffectCoreError)downloadPixelBufferFromTexture:(int)inputTexId
678  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
679  outputFrameFormat:(NvsEffectVideoFramePixelFormat)format
680  isBT601:(BOOL)is601
681  outputFrame:(CVPixelBufferRef*)frameBuffer;
682 
704 -(NvsEffectCoreError)downloadPixelBufferFromTexture:(NvsEffectGPUTexture *)inputTexture
705  outputFrameFormat:(NvsEffectVideoFramePixelFormat)format
706  outputYUVMatrix:(NvsEffectVideoFrameYUVColorMatrix)colorMatrix
707  outputColorTransfer:(NvsEffectVideoFrameColorTransfer)colorTransfer
708  outputColorPrimaries:(NvsEffectVideoFrameColorPrimaries)colorPrimaries
709  outputFrame:(CVPixelBufferRef*)frameBuffer;
710 
711 @end
NvsEffectCoreError
NvsEffectCoreError
Definition: NvsEffectRenderCore.h:22
NvsEffectGpuVideoFrameFormat
NvsEffectGpuVideoFrameFormat
Video frame pixel format.
Definition: NvsEffectCommonDef.h:101
NvsEffectVideoFrameColorPrimaries_Bt709
@ NvsEffectVideoFrameColorPrimaries_Bt709
RGB color space BT.709 standardized as Rec. ITU-R BT.709-5.
Definition: NvsEffectCommonDef.h:155
NvsEffectCoreError_Unknown
@ NvsEffectCoreError_Unknown
Definition: NvsEffectRenderCore.h:24
NvsRenderFlag
NvsRenderFlag
Definition: NvsEffectRenderCore.h:39
-[NvsEffectRenderCore initialize]
BOOL initialize()
Initializes.
NvsEffectCoreError_InvalidPixelFormat
@ NvsEffectCoreError_InvalidPixelFormat
Definition: NvsEffectRenderCore.h:26
NvsEffectGPUTexture::colorTransfer
NvsEffectVideoFrameColorTransfer colorTransfer
Definition: NvsEffectRenderCore.h:77
NvsInitializeFlags
NvsInitializeFlags
Definition: NvsEffectRenderCore.h:30
NvsRenderFlags_InputTextureIsFlipHorizontally
@ NvsRenderFlags_InputTextureIsFlipHorizontally
Definition: NvsEffectRenderCore.h:42
NvEffectGPUTextureInfoMake
static NvsEffectGPUTextureInfo NvEffectGPUTextureInfoMake(int w, int h)
Definition: NvsEffectRenderCore.h:56
NvsEffectRational
Rational value.
Definition: NvsEffectCommonDef.h:28
NvsEffectGPUTextureInfo
Definition: NvsEffectRenderCore.h:47
NvsEffectGPUTextureInfo::imagePar
NvsEffectRational imagePar
Definition: NvsEffectRenderCore.h:52
NvsEffectGPUTexture::colorPrimaries
NvsEffectVideoFrameColorPrimaries colorPrimaries
Definition: NvsEffectRenderCore.h:76
NvsEffectCoreError_InvalidTexture
@ NvsEffectCoreError_InvalidTexture
Definition: NvsEffectRenderCore.h:25
NvsEffectVideoFramePixelFormat
NvsEffectVideoFramePixelFormat
Video frame pixel format.
Definition: NvsEffectCommonDef.h:86
NvsRenderFlag_NoFlag
@ NvsRenderFlag_NoFlag
Definition: NvsEffectRenderCore.h:40
NvsEffectVideoFrameColorTransfer
NvsEffectVideoFrameColorTransfer
Definition: NvsEffectCommonDef.h:135
NvsEffectCoreError_NoError
@ NvsEffectCoreError_NoError
Definition: NvsEffectRenderCore.h:23
NvsInitializeFlag_SUPPORT_4K
@ NvsInitializeFlag_SUPPORT_4K
Definition: NvsEffectRenderCore.h:34
NvsEffectRational::den
int den
Denominator.
Definition: NvsEffectCommonDef.h:30
NvsEffectVideoFrameInfo
Video frame information.
Definition: NvsEffectCommonDef.h:170
NvEffectGPUTextureMake
static NvsEffectGPUTexture NvEffectGPUTextureMake(NvsEffectGPUTextureInfo info, int texId, NvsEffectGpuVideoFrameFormat format)
Definition: NvsEffectRenderCore.h:80
-[NvsEffectRenderCore clearCacheResources]
void clearCacheResources()
Clears cached resources.
NvsEffectGPUTexture::texFormat
NvsEffectGpuVideoFrameFormat texFormat
Definition: NvsEffectRenderCore.h:75
-[NvsEffectRenderCore cleanUp]
void cleanUp()
Clears all resources in NvsEffectRenderCore.
NvsEffectGPUTexture::isUpSideDown
bool isUpSideDown
Definition: NvsEffectRenderCore.h:73
NvsEffectVideoFrameColorTransfer_sRGB
@ NvsEffectVideoFrameColorTransfer_sRGB
Definition: NvsEffectCommonDef.h:136
NvsInitializeFlag_SUPPORT_8K
@ NvsInitializeFlag_SUPPORT_8K
Definition: NvsEffectRenderCore.h:35
NvsInitializeFlag_NoFlag
@ NvsInitializeFlag_NoFlag
Definition: NvsEffectRenderCore.h:31
NvsEffectGPUTextureInfo::texWidth
int texWidth
Definition: NvsEffectRenderCore.h:48
NvsEffectVideoFrameColorPrimaries
NvsEffectVideoFrameColorPrimaries
Definition: NvsEffectCommonDef.h:154
NvsEffectCoreError_NotInitialized
@ NvsEffectCoreError_NotInitialized
Definition: NvsEffectRenderCore.h:27
NvsRenderFlags_DownloadAsync
@ NvsRenderFlags_DownloadAsync
Definition: NvsEffectRenderCore.h:43
NVS_EXPORT
#define NVS_EXPORT
Definition: NvsCommonDef.h:20
NvsEffectGPUTexture
Definition: NvsEffectRenderCore.h:71
NvsEffect
Special effects.
Definition: NvsEffect.h:46
NvsEffectGPUTexture::texId
int texId
Definition: NvsEffectRenderCore.h:72
NvsEffectVideoResolution
Video resolution.
Definition: NvsEffectCommonDef.h:39
NvsEffectGPUTextureInfo::texHeight
int texHeight
Definition: NvsEffectRenderCore.h:49
NvsEffectGPUTextureInfo::proxyScale
NvsEffectRational proxyScale
Definition: NvsEffectRenderCore.h:53
NvsEffectCommonDef.h
NvsEffectGPUTextureInfo::centerPointX
int centerPointX
Definition: NvsEffectRenderCore.h:50
NvsEffectVideoFrameInfoExt
Video frame extra information.
Definition: NvsEffectCommonDef.h:190
NvsEffectGPUTextureInfo::centerPointY
int centerPointY
Definition: NvsEffectRenderCore.h:51
NvsInitializeFlag_CreateGLContextIfNeed
@ NvsInitializeFlag_CreateGLContextIfNeed
Definition: NvsEffectRenderCore.h:33
NvsEffectRenderCore
Class for special effects rendering.
Definition: NvsEffectRenderCore.h:124
NvsRenderFlag_IsUpsideDownTexture
@ NvsRenderFlag_IsUpsideDownTexture
Definition: NvsEffectRenderCore.h:41
NvsInitializeFlag_InSingleGLThread
@ NvsInitializeFlag_InSingleGLThread
Definition: NvsEffectRenderCore.h:32
NvsEffectVideoFrameYUVColorMatrix
NvsEffectVideoFrameYUVColorMatrix
Definition: NvsEffectCommonDef.h:117
NvsEffectGPUTexture::texInfo
NvsEffectGPUTextureInfo texInfo
Definition: NvsEffectRenderCore.h:74
NvsInitializeFlag_SUPPORT_16K
@ NvsInitializeFlag_SUPPORT_16K
Definition: NvsEffectRenderCore.h:36
NvsEffectRational::num
int num
Numerator.
Definition: NvsEffectCommonDef.h:29