// Free the buffers returned by capture for audio public static void recv_free_audio_v3(IntPtr p_instance, ref audio_frame_v3_t p_audio_data) { if (IntPtr.Size == 8) { UnsafeNativeMethods.recv_free_audio_v3_64(p_instance, ref p_audio_data); } else { UnsafeNativeMethods.recv_free_audio_v3_32(p_instance, ref p_audio_data); } }
internal static extern void recv_free_audio_v3_32(IntPtr p_instance, ref audio_frame_v3_t p_audio_data);
internal static extern frame_type_e recv_capture_v3_32(IntPtr p_instance, ref video_frame_v2_t p_video_data, ref audio_frame_v3_t p_audio_data, ref metadata_frame_t p_metadata, UInt32 timeout_in_ms);
// This will allow you to receive video, audio and metadata frames. // Any of the buffers can be NULL, in which case data of that type // will not be captured in this call. This call can be called simultaneously // on separate threads, so it is entirely possible to receive audio, video, metadata // all on separate threads. This function will return NDIlib_frame_type_none if no // data is received within the specified timeout and NDIlib_frame_type_error if the connection is lost. // Buffers captured with this must be freed with the appropriate free function below. public static frame_type_e recv_capture_v3(IntPtr p_instance, ref video_frame_v2_t p_video_data, ref audio_frame_v3_t p_audio_data, ref metadata_frame_t p_metadata, UInt32 timeout_in_ms) { if (IntPtr.Size == 8) { return(UnsafeNativeMethods.recv_capture_v3_64(p_instance, ref p_video_data, ref p_audio_data, ref p_metadata, timeout_in_ms)); } else { return(UnsafeNativeMethods.recv_capture_v3_32(p_instance, ref p_video_data, ref p_audio_data, ref p_metadata, timeout_in_ms)); } }
internal static extern void send_send_audio_v3_32(IntPtr p_instance, ref audio_frame_v3_t p_audio_data);