public CDOServiceListener toNative()
 {
     CDOServiceListener nListener = new CDOServiceListener();
     nListener.opaque = IntPtr.Zero;
     nListener.onConnectionLost = _on_connection_lost_callback_t;
     nListener.onDeviceListChanged = _on_device_list_changed_callback_t;
     nListener.onEcho = _on_echo_callback_t;
     nListener.onMediaConnTypeChanged =
         _on_media_conn_type_changed_callback_t;
     nListener.onMediaStats = _on_media_stats_callback_t;
     nListener.onMediaStreamEvent = _on_media_stream_callback_t;
     nListener.onMessage = _on_message_callback_t;
     nListener.onMicActivity = _on_mic_activity_callback_t;
     nListener.onMicGain = _on_mic_gain_callback_t;
     nListener.onUserEvent = _on_user_event_callback_t;
     nListener.onVideoFrameSizeChanged =
         _on_video_frame_size_changed_callback_t;
     return nListener;
 }
 public static extern void cdo_add_service_listener(
     cdo_void_rclbck_t resultHandler, CDOH handle, IntPtr opaque,
     ref CDOServiceListener listener);