rtcEngine$onFirstRemoteVideoFrameDecoded$info$withFrameInfo method

FutureOr<void> rtcEngine$onFirstRemoteVideoFrameDecoded$info$withFrameInfo(
  1. dynamic engine,
  2. dynamic streamId,
  3. dynamic info,
  4. dynamic frameInfo,
)
override

@detail callback @author zhushufan.ref @brief 订阅端接收并解码远端视频流首帧后,收到此回调。包含以下情况:
1. 发布端发布视频,包含首次发布和取消后再次发布。
2. 发布端关闭视频采集后,再次打开采集。使用外部源时,停止推流后再次推流。
3. 发布端发布视频后,订阅端取消订阅视频后,又再次订阅视频。 @param engine ByteRTCEngine 对象 @param streamId 远端流 ID。 @param info 远端流信息,参看 ByteRTCStreamInfo{@link #ByteRTCStreamInfo}。 @param frameInfo 视频帧信息,参看 ByteRTCVideoFrameInfo{@link #ByteRTCVideoFrameInfo} @note - 对于主流,进入房间后,仅在发布端第一次发布的时候,订阅端会收到该回调,此后不受重新发布的影响,只要不重新加入房间,就不会再收到该回调。 - 对于屏幕流,用户每次重新发布屏幕视频流在订阅端都会重新触发一次该回调。

Implementation

FutureOr<void> rtcEngine$onFirstRemoteVideoFrameDecoded$info$withFrameInfo(
    dynamic engine, dynamic streamId, dynamic info, dynamic frameInfo) async {
  if ($instance == null || $instance is! IRTCEngineEventHandler) {
    return;
  }
  return ($instance as IRTCEngineEventHandler)
      .onFirstRemoteVideoFrameDecoded
      ?.call(
          streamId.toString(),
          packObject(
              info,
              () => StreamInfo.fromMap(StreamInfo.deepPackedMapValues(
                  StreamInfo.mapMemberToConstructorParams(info)))),
          packObject(
              frameInfo,
              () => VideoFrameInfo.fromMap(VideoFrameInfo.deepPackedMapValues(
                  VideoFrameInfo.mapMemberToConstructorParams(frameInfo)))));
}