| lem1x Intermediate
 
  
 
 Joined: July 06 2012
 Posts: 2
 | 
          Hi,
           | Posted: July 12 2012 at 3:29am | IP Logged |   |  
           | 
 |  
 I got this kind of error after initalizing VOIP Media Engine.
 
 
 
| Code: 
 
    
    | 
      
       | Cannot pass a GCHandle across AppDomains. Parameter name: handle
 at System.Runtime.InteropServices.GCHandle.InternalCheckDomain(IntPtr handle)
 at System.Runtime.InteropServices.GCHandle.FromIntPtr(IntPtr value)
 at System.Runtime.InteropServices.GCHandle.op_Explicit(IntPtr value)
 at MainEventHandler_Unmanaged(Void* hStateMachine, SIP_NOTIFY_TYPE NotifyType, Int32 PhoneLine, TELEPHONY_RETURN_VALUE TelephonyEvent, Void* pUserDefinedData, Void* pEventData)
 |  |  |  
 Here is the code I used:
 
 
 
| Code: 
 
    
    | 
      
       | public void InitializeVoip() {
 var status = _mediaEngine.InitializeMediaEngine(0, 0);
 var startParams = new VoipMediaEngine.START_SIP_TELEPHONY_PARAMS();
 startParams.PersonalityMicrocode = Microcode.LanScapeVME_F186495C_7AFF_4742_ADB7_87EA48A42633;
 // set this to  an even number of lines.
 startParams.NumPhoneLinesRequested = 1;
 startParams.LineMode = VoipMediaEngine.LINE_MODE.SWITCH_LINE;
 startParams.UserNotifyCallbackProc = MediaEngineCallbackProc;
 // set the main callback instance data.
 startParams.UserDefinedData = null;
 startParams.SipPort = 5060;
 
 // use media engine internal default values.
 startParams.MaxSipMesageLength = 0;
 startParams.SipUdpReceiveBufferSizeInBytes = 0;
 startParams.SipUdpTransmitBufferSizeInBytes = 0;
 startParams.MaxSipMessageReceiveFifoLength = 0;
 startParams.MaxRtpPacketLength = 0;
 
 startParams.PhoneName = "[CUT]";
 startParams.PhoneDisplayName = "[CUT]";
 
 startParams.DtmfEnabled = false;
 startParams.DtmfTonesPlayedLocally = false;
 startParams.DtmfTonesTransmittedOutPhoneLines = false;
 startParams.DtmfLocalAudioPlaybackBuffering = 2;
 startParams.DtmfPhoneLineAudioBuffering = 2;
 
 // use media engine internal default value.
 startParams.DtmfIncomingPhoneLineEventBuffers = 0;
 
 startParams.CallConferenceEnabled = false;
 
 startParams.FarEndCallTransferEnabled = false;
 startParams.RandomlyAssignIncomingCallsToPhoneLines = false;
 
 startParams.MinLocalRtpPort = 8000;
 startParams.MaxLocalRtpPort = 8400;
 startParams.UseSequentialRtpPorts = false;
 
 var UseAudioDevice = true;
 if (UseAudioDevice)
 {
 startParams.ZeroBasedAudioInDeviceId = VoipMediaEngine.SIP_USE_PREFERED_AUDIO_DEVICE;
 startParams.ZeroBasedAudioOutDeviceId = VoipMediaEngine.SIP_USE_PREFERED_AUDIO_DEVICE;
 }
 else
 {
 startParams.ZeroBasedAudioInDeviceId = VoipMediaEngine.SIP_AUDIO_DEVICE_NOT_USED;
 startParams.ZeroBasedAudioOutDeviceId = VoipMediaEngine.SIP_AUDIO_DEVICE_NOT_USED;
 }
 
 startParams.AudioRecordBandWidth = VoipMediaEngine.AUDIO_BANDWIDTH.AUDIO_BW_PCM_22K;
 startParams.AudioPlaybackBandWidth = VoipMediaEngine.AUDIO_BANDWIDTH.AUDIO_BW_PCM_22K;
 
 startParams.PlaybackBufferingDefault = 4;
 startParams.PlaybackBufferingDuringSounds = 4;
 startParams.PhoneLinePlayoutBuffering = 2;
 startParams.PhoneLineTransmitBuffering = 2;
 
 startParams.LogSipMessages = false;
 startParams.SipLogFileName = string.Empty;
 
 startParams.EnableEventLogServers = false;
 startParams.EventLogServerList = null;
 startParams.EventLogServerPortList = null;
 
 startParams.EnablePhoneLineRecording = false;
 startParams.PhoneLineRecordBuffering = 0;
 
 startParams.MaxMixerLinebuffers = 0;
 startParams.SendLineInitializedEvents = true;
 startParams.StartupFlags = 0;
 
 GlobProcs.IpAddressStringToBytes("[CUT]", ref startParams.IpAddressOfThisHost);
 try
 {
 status = _mediaEngine.StartSipTelephony(startParams);
 status = _mediaEngine.AddAuthorizationCredentials(
 "[CUT]",
 "[CUT]",
 "[CUT]"
 );
 // set the VOIP domain.
 status = _mediaEngine.EnableSipDomain("[CUT]");
 
 ///////////////////////////////////////////////////
 //
 // IMPORTANT:
 //
 //     Enable the media engine's ability to receive
 //     SIP protocol packets from the network before
 //     configuring registration cycles.
 //
 ///////////////////////////////////////////////////
 status = _mediaEngine.SipTelephonyEnable();
 
 String[] RegistrarInfo = null;
 int NumRegistrarInfo = GlobProcs.Tokenize("[CUT]", ':', ref RegistrarInfo);
 if (NumRegistrarInfo == 2)
 {
 int RegistrarPort = int.Parse(RegistrarInfo[1]);
 
 
 // set the time we wait in between failed registrations.
 status = _mediaEngine.RegistationErrorRetryTime(2000);
 
 status = _mediaEngine.EnableSipRegisterServer(
 "[CUT]",
 false,                                                       // register individual phone lines.
 false,                                                       // send register requests to specified regsitar.
 RegistrarInfo[0],                                        // registrar server address.
 (uint)RegistrarPort,                                   // registrar server port.
 3600,          // periodic update interval.
 3600,          // registration durstion.
 4000,     // response timeout
 false                                                       // detect NAT on register cycles.
 );
 }
 }
 catch (Exception exception)
 {
 }
 |  |  |  
 Do you have any ideas how to fix it?
 |