LSLStreamInfoWithMetadata.fromStreamInfo constructor

LSLStreamInfoWithMetadata.fromStreamInfo(
  1. lsl_streaminfo streamInfo
)

Create from existing lsl_streaminfo pointer (with metadata)

Implementation

factory LSLStreamInfoWithMetadata.fromStreamInfo(lsl_streaminfo streamInfo) {
  final Pointer<Utf8> streamName = lsl_get_name(streamInfo) as Pointer<Utf8>;
  print(streamName.toDartString());
  final Pointer<Utf8> streamType = lsl_get_type(streamInfo) as Pointer<Utf8>;
  final int channelCount = lsl_get_channel_count(streamInfo);
  final double sampleRate = lsl_get_nominal_srate(streamInfo);
  final lsl_channel_format_t channelFormat = lsl_get_channel_format(
    streamInfo,
  );
  final Pointer<Utf8> sourceId =
      lsl_get_source_id(streamInfo) as Pointer<Utf8>;
  final String streamTypeString = streamType.toDartString();
  return LSLStreamInfoWithMetadata(
    streamName: streamName.toDartString(),
    streamType: LSLContentType.values.firstWhere(
      (e) => e.value == streamTypeString,
      orElse: () => LSLContentType.custom(
        streamTypeString,
      ), // Default to Custom if not found
    ),
    channelCount: channelCount,
    sampleRate: sampleRate,
    channelFormat: LSLChannelFormat.values.firstWhere(
      (e) => e.lslFormat == channelFormat,
      orElse: () =>
          LSLChannelFormat.float32, // Default to float32 if not found
    ),
    sourceId: sourceId.toDartString(),
    streamInfo: streamInfo,
  );
}