Cgw.Channel.MonitorChannelRelationManager.TryStartSendAudio C# (CSharp) Method

TryStartSendAudio() private method

开启音频码流
private TryStartSendAudio ( string channelLabel, string cameraNo ) : SmcErr
channelLabel string
cameraNo string
return Cgw.SmcError.SmcErr
        private SmcErr TryStartSendAudio(string channelLabel, string cameraNo)
        {
            SmcErr err = new CgwError();
            NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
            logEx.Trace("TryStartSendAudio start.");

            try
            {
                bool successed = this.cameraAudioRelationDicLocker.TryEnterWriteLock(CgwConst.ENTER_LOCK_WAIT_TIME);
                // 申请互斥
                if (successed)
                {
                    try
                    {
                        if (!this.cameraAudioRelationDic.ContainsKey(cameraNo))
                        {
                            err = CgwMonitorManageAdapter.Instance().SetMic(cameraNo, true);
                            if (!err.IsSuccess())
                            {
                                logEx.Error("TryStartSendAudio SetMic start cameraNo={0} failed.", cameraNo);
                                return err;
                            }

                            this.cameraAudioRelationDic.Add(cameraNo, new List<string>());
                        }

                        // 判断通道是否已经存在
                        bool isExist = this.cameraAudioRelationDic[cameraNo].Exists(a => { return a == channelLabel; });
                        if (!isExist)
                        {
                            this.cameraAudioRelationDic[cameraNo].Add(channelLabel);
                        }
                    }
                    finally
                    {
                        // 释放互斥量
                        this.cameraAudioRelationDicLocker.ExitWriteLock();
                    }
                }
                else
                {
                    // 日志
                    err.SetErrorNo(CgwError.ERR_CGW_CHANNEL_GET_LOCK_FAIL);
                    logEx.Error("TryStartSendAudio: Enert Write Lock Failed.WaitingReadCount:{0};WaitingWriteCount:{1}.", this.cameraAudioRelationDicLocker.WaitingReadCount, this.cameraAudioRelationDicLocker.WaitingWriteCount);
                }
            }
            catch (Exception ex)
            {
                // 日志
                err.SetErrorNo(CgwError.ERR_CGW_CHANNEL_SERVICE_ADNORMAL);
                logEx.Error(ex, "TryStartSendAudio: Enert Write Lock Exception.");
            }

            logEx.Trace("TryStartSendAudio cameraNo={0}, channelLabel={1} successfully.", cameraNo, channelLabel);
            return err;
        }