@@ -387,17 +387,20 @@ napi_value AgoraElectronBridge::GetVideoFrame(napi_env env,
387
387
388
388
napi_value obj1 = args[1 ];
389
389
napi_value y_buffer_obj;
390
- void *y_buffer;
391
- size_t y_length;
390
+ void *y_buffer = nullptr ;
391
+ size_t y_length = 0 ;
392
392
napi_value u_buffer_obj;
393
- void *u_buffer;
394
- size_t u_length;
393
+ void *u_buffer = nullptr ;
394
+ size_t u_length = 0 ;
395
395
napi_value v_buffer_obj;
396
- void *v_buffer;
397
- size_t v_length;
396
+ void *v_buffer = nullptr ;
397
+ size_t v_length = 0 ;
398
398
int width;
399
399
int height;
400
400
int yStride;
401
+ napi_value alpha_buffer_obj;
402
+ void *alpha_buffer = nullptr ;
403
+ size_t alpha_length = 0 ;
401
404
402
405
napi_obj_get_property (env, obj1, " yBuffer" , y_buffer_obj);
403
406
napi_get_buffer_info (env, y_buffer_obj, &y_buffer, &y_length);
@@ -412,6 +415,14 @@ napi_value AgoraElectronBridge::GetVideoFrame(napi_env env,
412
415
napi_obj_get_property (env, obj1, " height" , height);
413
416
napi_obj_get_property (env, obj1, " yStride" , yStride);
414
417
418
+ napi_obj_get_property (env, obj1, " alphaBuffer" , alpha_buffer_obj);
419
+ napi_value undefinedValue;
420
+ napi_get_undefined (env, &undefinedValue);
421
+ bool isUndefined;
422
+ if (napi_strict_equals (env, alpha_buffer_obj, undefinedValue, &isUndefined) == napi_ok && !isUndefined) {
423
+ napi_get_buffer_info (env, alpha_buffer_obj, &alpha_buffer, &alpha_length);
424
+ }
425
+
415
426
IrisCVideoFrame videoFrame;
416
427
videoFrame.yBuffer = (uint8_t *) y_buffer;
417
428
videoFrame.uBuffer = (uint8_t *) u_buffer;
@@ -421,7 +432,8 @@ napi_value AgoraElectronBridge::GetVideoFrame(napi_env env,
421
432
videoFrame.yStride = yStride;
422
433
videoFrame.metadata_buffer = nullptr ;
423
434
videoFrame.metadata_size = 0 ;
424
- videoFrame.alphaBuffer = nullptr ;
435
+ videoFrame.alphaBuffer = (uint8_t *) alpha_buffer;
436
+ videoFrame.hasAlphaBuffer = false ;
425
437
426
438
bool isNewFrame = false ;
427
439
napi_value retObj;
@@ -451,6 +463,7 @@ napi_value AgoraElectronBridge::GetVideoFrame(napi_env env,
451
463
napi_obj_set_property (env, obj1, " avsync_type" , videoFrame.avsync_type );
452
464
napi_obj_set_property (env, obj1, " metadata_size" , videoFrame.metadata_size );
453
465
// napi_obj_set_property(env, obj1, "textureId", videoFrame.textureId);
466
+ napi_obj_set_property (env, obj1, " hasAlphaBuffer" , videoFrame.hasAlphaBuffer );
454
467
455
468
return retObj;
456
469
}
0 commit comments