MeiCam SDK For iOS  3.16.1
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 
157 - (void)cleanUp;
158 
180 - (NvsEffectCoreError)renderEffect:(NvsEffect *)effect
181  inputTexId:(int)inputTexId
182  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
183  outputTexId:(int)outputTexId
184  timestamp:(int64_t)timestamp
185  flags:(NvsRenderFlag)flags;
186 
212 - (NvsEffectCoreError)renderEffect:(NvsEffect *)effect
213  inputTexId:(int)inputTexId
214  inputBuddyBuffer:(const NvsEffectVideoFrameInfo*)inputBuddyBuffer
215  physicalOrientation:(int)physicalOrientation
216  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
217  outputTexId:(int)outputTexId
218  timestamp:(int64_t)timestamp
219  flags:(NvsRenderFlag)flags;
220 
246 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
247  inputTexId:(int)inputTexId
248  inputBuddyBuffer:(const NvsEffectVideoFrameInfo*)inputBuddyBuffer
249  physicalOrientation:(int)physicalOrientation
250  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
251  outputTexId:(int)outputTexId
252  timestamp:(int64_t)timestamp
253  flags:(NvsRenderFlag)flags;
254 
281 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
282  inputImage:(CVPixelBufferRef)inputImage
283  displayRotation:(int)displayRotation
284  isFlipHorizontally:(BOOL)isFlip
285  physicalOrientation:(int)physicalOrientation
286  outputTexId:(int)outputTexId
287  timestamp:(int64_t)timestamp
288  flags:(NvsRenderFlag)flags;
289 
319 - (NvsEffectCoreError)renderEffect:(NvsEffect *)effect
320  inputImage:(CVPixelBufferRef)inputImage
321  displayRotation:(int)rotation
322  isFlipHorizontally:(BOOL)isFlip
323  timestamp:(int64_t)timestamp
324  flags:(NvsRenderFlag)flags
325  outputFrameFormat:(NvsEffectVideoFramePixelFormat)format
326  outputFrameIsBT601:(BOOL)is601
327  outputImage:(CVPixelBufferRef*)ouputImage;
328 
358 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
359  inputImage:(CVPixelBufferRef)inputImage
360  displayRotation:(int)rotation
361  isFlipHorizontally:(BOOL)isFlip
362  timestamp:(int64_t)timestamp
363  flags:(NvsRenderFlag)flags
364  outputFrameFormat:(NvsEffectVideoFramePixelFormat)ouputFrameformat
365  outputFrameIsBT601:(BOOL)is601
366  outputImage:(CVPixelBufferRef*)ouputImage;
367 
387 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
388  inputImage:(CVPixelBufferRef)inputImage
389  outputImage:(CVPixelBufferRef*)ouputImage
390  options:(NSDictionary *)options;
391 
421 - (NvsEffectCoreError)renderEffectsWithPixelBuffer:(NSArray<NvsEffect *>*)effects
422  inputImage:(CVPixelBufferRef)inputImage
423  displayRotation:(int)rotation
424  physicalOrientation:(int)physicalOrientation
425  isFlipHorizontally:(BOOL)isFlip
426  timestamp:(int64_t)timestamp
427  flags:(NvsRenderFlag)flags
428  outputImage:(CVPixelBufferRef)ouputImage;
429 
447 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
448  inputImage:(CVPixelBufferRef)inputImage
449  options:(NSDictionary *)options;
450 
474 - (NvsEffectCoreError)renderEffect:(NvsEffect *)effect
475  inputTexIds:(NSArray*)inputTextures
476  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
477  outputTexId:(int)outputTexId
478  timestamp:(int64_t)timestamp
479  flags:(NvsRenderFlag)flags;
480 
504 - (NvsEffectCoreError)calcEffectOutputSize:(NvsEffect *)effect
505  inputTexs:(NvsEffectGPUTexture*)inputTextureArray
506  intputTexCount:(int)texArrayCount
507  expectVideoResolution:(NvsEffectVideoResolution *)videoResolution
508  outputTex:(NvsEffectGPUTextureInfo*)outputTexInfo
509  timestamp:(int64_t)timestamp
510  flags:(NvsRenderFlag)flags;
511 
533 - (NvsEffectCoreError)renderVariantSizeEffect:(NvsEffect *)effect
534  inputTexs:(NvsEffectGPUTexture*)inputTextureArray
535  intputTexSize:(int)texArrayCount
536  outputTex:(NvsEffectGPUTexture*)outputTex
537  timestamp:(int64_t)timestamp
538  flags:(NvsRenderFlag)flags;
539 
565 - (NvsEffectCoreError)renderEffects:(NSArray<NvsEffect *>*)effects
566  inputTex:(NvsEffectGPUTexture *)inputTex
567  inputBuddyBuffer:(const NvsEffectVideoFrameInfoExt*)inputBuddyBuffer
568  physicalOrientation:(int)physicalOrientation
569  outputTex:(NvsEffectGPUTexture *)outputTex
570  timestamp:(int64_t)timestamp
571  flags:(NvsRenderFlag)flags;
572 
582 - (void)clearEffectResources:(NvsEffect *)effect;
583 
591 - (void)clearCacheResources;
592 
608 -(NvsEffectCoreError)uploadPixelBufferToTexture:(CVPixelBufferRef)frameBuffer displayRotation:(int)rotation horizontalFlip:(BOOL)flip outputTexId:(int)outputTexId;
609 
625 -(NvsEffectCoreError)uploadPixelBufferToTexture:(CVPixelBufferRef)frameBuffer horizontalFlip:(BOOL)flip outputTexId:(int)outputTexId;
626 
642 -(NvsEffectCoreError)uploadPixelBufferToTexture:(CVPixelBufferRef)frameBuffer displayRotation:(int)rotation horizontalFlip:(BOOL)flip outputTex:(NvsEffectGPUTexture *)outputTex;
643 
663 -(NvsEffectCoreError)downloadPixelBufferFromTexture:(int)inputTexId
664  inputVideoResolution:(NvsEffectVideoResolution *)inputVideoResolution
665  outputFrameFormat:(NvsEffectVideoFramePixelFormat)format
666  isBT601:(BOOL)is601
667  outputFrame:(CVPixelBufferRef*)frameBuffer;
668 
690 -(NvsEffectCoreError)downloadPixelBufferFromTexture:(NvsEffectGPUTexture *)inputTexture
691  outputFrameFormat:(NvsEffectVideoFramePixelFormat)format
692  outputYUVMatrix:(NvsEffectVideoFrameYUVColorMatrix)colorMatrix
693  outputColorTransfer:(NvsEffectVideoFrameColorTransfer)colorTransfer
694  outputColorPrimaries:(NvsEffectVideoFrameColorPrimaries)colorPrimaries
695  outputFrame:(CVPixelBufferRef*)frameBuffer;
696 
697 @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