⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmchanoperations.c

📁 基于h323协议的软phone
💻 C
📖 第 1 页 / 共 4 页
字号:
            emaReturnFromCallback((EMAElement)channel, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelMiscCommand.");

            emaUnlock((EMAElement)channel);
        }
    }

    return RV_TRUE;
}

int switchReceiveMediaOff(H245Control* ctrl, int lcn)
{
    cmElem* app=(cmElem*)emaGetInstance((EMAElement)cmiGetByControl((HCONTROL)ctrl));
    H245Channel* channel=NULL;
    HPVT hVal;
    int nesting;

    if (!app) return RV_ERROR_UNKNOWN;

    if (app->cmMyChannelEvent.cmEvChannelMiscCommand != NULL)
    {
        hVal=app->hVal;
        channel=getOutChanByLCN((HCONTROL)ctrl,lcn);

        if (emaLock((EMAElement)channel))
        {
            cmiCBEnter((HAPP)app, "cmEvChannelMiscCommand: haChan=0x%p, hsChan=0x%p,  type=%d",   emaGetApplicationHandle((EMAElement)channel), channel, cmSwitchReceiveMediaOff);
            nesting = emaPrepareForCallback((EMAElement)channel);
            app->cmMyChannelEvent.cmEvChannelMiscCommand((HAPPCHAN)emaGetApplicationHandle((EMAElement)channel), (HCHAN)channel, cmSwitchReceiveMediaOff);
            emaReturnFromCallback((EMAElement)channel, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelMiscCommand.");

            emaUnlock((EMAElement)channel);
        }
    }

    return RV_TRUE;
}

int switchReceiveMediaOn(H245Control* ctrl, int lcn)
{
    cmElem* app=(cmElem*)emaGetInstance((EMAElement)cmiGetByControl((HCONTROL)ctrl));
    H245Channel* channel=NULL;
    HPVT hVal;
    int nesting;

    if (!app) return RV_ERROR_UNKNOWN;

    if (app->cmMyChannelEvent.cmEvChannelMiscCommand != NULL)
    {
        hVal=app->hVal;
        channel=getOutChanByLCN((HCONTROL)ctrl,lcn);

        if (emaLock((EMAElement)channel))
        {
            cmiCBEnter((HAPP)app, "cmEvChannelMiscCommand: haChan=0x%p, hsChan=0x%p,  type=%d",   emaGetApplicationHandle((EMAElement)channel), channel, cmSwitchReceiveMediaOn);
            nesting = emaPrepareForCallback((EMAElement)channel);
            app->cmMyChannelEvent.cmEvChannelMiscCommand((HAPPCHAN)emaGetApplicationHandle((EMAElement)channel), (HCHAN)channel, cmSwitchReceiveMediaOn);
            emaReturnFromCallback((EMAElement)channel, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelMiscCommand.");

            emaUnlock((EMAElement)channel);
        }
    }

    return RV_TRUE;
}


int videoTemporalSpatialTradeOff(H245Control* ctrl,int message, int lcn, RvInt8 isCommand)
{
    HPVT hVal;
    cmElem* app=(cmElem*)emaGetInstance((EMAElement)cmiGetByControl((HCONTROL)ctrl));
    H245Channel* channel=NULL;
    int value;
    int nesting;

    if (!app) return RV_ERROR_UNKNOWN;

    if (app->cmMyChannelEvent.cmEvChannelTSTO != NULL)
    {
        hVal=app->hVal;
        channel=getOutChanByLCN((HCONTROL)ctrl,lcn);

        if (emaLock((EMAElement)channel))
        {
            pvtGet(app->hVal, message, NULL, NULL, &value, NULL);

            cmiCBEnter((HAPP)app, "cmEvChannelTSTO: haChan=0x%p, hsChan=0x%p, isCommand=%d (command), value=%d",
                   emaGetApplicationHandle((EMAElement)channel), channel, isCommand, value);
            nesting = emaPrepareForCallback((EMAElement)channel);
            app->cmMyChannelEvent.cmEvChannelTSTO(
                (HAPPCHAN)emaGetApplicationHandle((EMAElement)channel), (HCHAN)channel, isCommand, (RvInt8)value);
            emaReturnFromCallback((EMAElement)channel, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelTSTO.");

            emaUnlock((EMAElement)channel);
        }
    }

    return RV_TRUE;
}


int videoFastUpdatePicture(H245Control* ctrl, int lcn)
{
    HPVT hVal;
    cmElem* app=(cmElem*)emaGetInstance((EMAElement)cmiGetByControl((HCONTROL)ctrl));
    H245Channel* channel=NULL;
    int nesting;

    if (!app) return RV_ERROR_UNKNOWN;
    hVal=app->hVal;

    channel=getOutChanByLCN((HCONTROL)ctrl,lcn);

    if (emaLock((EMAElement)channel))
    {
        cmiCBEnter((HAPP)app, "cmEvChannelVideoFastUpdatePicture: haCall=0x%p, hsCall=0x%p.",
                emaGetApplicationHandle((EMAElement)channel), channel);
        nesting = emaPrepareForCallback((EMAElement)channel);
        ifE (app->cmMyChannelEvent.cmEvChannelVideoFastUpdatePicture)
          ((HAPPCHAN)emaGetApplicationHandle((EMAElement)channel), (HCHAN)channel);
        emaReturnFromCallback((EMAElement)channel, nesting);
        cmiCBExit((HAPP)app, "cmEvChannelVideoFastUpdatePicture.");

        if (!emaWasDeleted((EMAElement)channel))
        {
            cmiCBEnter((HAPP)app, "cmEvChannelMiscCommand: haChan=0x%p, hsChan=0x%p,  type=%d",   emaGetApplicationHandle((EMAElement)channel), channel, cmVideoFastUpdatePicture);
            nesting = emaPrepareForCallback((EMAElement)channel);
            ifE (app->cmMyChannelEvent.cmEvChannelMiscCommand)    ((HAPPCHAN)emaGetApplicationHandle((EMAElement)channel), (HCHAN)channel, cmVideoFastUpdatePicture);
            emaReturnFromCallback((EMAElement)channel, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelMiscCommand.");
        }

        emaUnlock((EMAElement)channel);
    }

    return RV_TRUE;
}

int videoFastUpdateGOB(H245Control* ctrl,int message, int lcn)
{
    HPVT hVal;
    cmElem* app=(cmElem*)emaGetInstance((EMAElement)cmiGetByControl((HCONTROL)ctrl));
    H245Channel* channel=NULL;
    RvInt32 firstGOB, numOfGOBS;
    int nesting;

    if (!app) return RV_ERROR_UNKNOWN;

    if (app->cmMyChannelEvent.cmEvChannelVideoFastUpdateGOB != NULL)
    {
        hVal=app->hVal;
        channel=getOutChanByLCN((HCONTROL)ctrl,lcn);

        if (emaLock((EMAElement)channel))
        {
            pvtGetChildValue(hVal, message, __h245(firstGOB), &firstGOB, NULL);
            pvtGetChildValue(hVal,  message, __h245(numberOfGOBs), &numOfGOBS, NULL);

            cmiCBEnter((HAPP)app, "cmEvChannelVideoFastUpdateGOB: haCall=0x%p, hsCall=0x%p, firstGOB=%d, #GOBS=%d.",
                   emaGetApplicationHandle((EMAElement)channel), channel, firstGOB, numOfGOBS);
            nesting = emaPrepareForCallback((EMAElement)channel);
            app->cmMyChannelEvent.cmEvChannelVideoFastUpdateGOB(
                (HAPPCHAN)emaGetApplicationHandle((EMAElement)channel), (HCHAN)channel, (int)firstGOB, (int)numOfGOBS);
            emaReturnFromCallback((EMAElement)channel, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelVideoFastUpdateGOB.");

            emaUnlock((EMAElement)channel);
        }
    }

    return RV_TRUE;
}

int videoFastUpdateMB(H245Control* ctrl,int message, int lcn)
{
    HPVT hVal;
    cmElem* app=(cmElem*)emaGetInstance((EMAElement)cmiGetByControl((HCONTROL)ctrl));
    H245Channel* channel=NULL;
    RvInt32 firstGOB, firstMB, numOfMBS;
    int nesting;

    if (!app) return RV_ERROR_UNKNOWN;

    if (app->cmMyChannelEvent.cmEvChannelVideoFastUpdateMB != NULL)
    {
        hVal=app->hVal;
        channel=getOutChanByLCN((HCONTROL)ctrl,lcn);

        if (emaLock((EMAElement)channel))
        {
            pvtGetChildValue(hVal, message, __h245(firstGOB), &firstGOB, NULL);
            pvtGetChildValue(hVal,  message, __h245(firstMB), &firstMB, NULL);
            pvtGetChildValue(hVal,  message, __h245(numberOfMBs), &numOfMBS, NULL);
            cmiCBEnter((HAPP)app, "cmEvChannelVideoFastUpdateMB: haCall=0x%p, hsCall=0x%p, firstGOB=%d, firstMB=%d, #MS=%d.",
                   emaGetApplicationHandle((EMAElement)channel), channel, firstGOB, firstMB, numOfMBS);
            nesting = emaPrepareForCallback((EMAElement)channel);
            app->cmMyChannelEvent.cmEvChannelVideoFastUpdateMB(
                (HAPPCHAN)emaGetApplicationHandle((EMAElement)channel), (HCHAN)channel, (int)firstGOB, (int)firstMB, (int)numOfMBS);
            emaReturnFromCallback((EMAElement)channel, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelVideoFastUpdateMB.");

            emaUnlock((EMAElement)channel);
        }
    }

    return RV_TRUE;
}

int h2250MaximumSkewIndication(H245Control* ctrl,int message)
{
    HPVT hVal;
    cmElem* app=(cmElem*)emaGetInstance((EMAElement)cmiGetByControl((HCONTROL)ctrl));
    H245Channel* channel1,* channel2;
    RvInt32 lcn1, lcn2, maxSkew;
    int nesting;

    if (!app) return RV_ERROR_UNKNOWN;

    if (app->cmMyChannelEvent.cmEvChannelMaxSkew != NULL)
    {
        EMAElement callE = (EMAElement)cmiGetByControl((HCONTROL)ctrl);

        hVal=app->hVal;

        if (emaLock(callE))
        {
            pvtGetChildValue(hVal, message, __h245(logicalChannelNumber1), &lcn1, NULL);
            pvtGetChildValue(hVal, message, __h245(logicalChannelNumber2), &lcn2, NULL);
            pvtGetChildValue(hVal, message, __h245(maximumSkew), &maxSkew, NULL);

            channel1=getInChanByLCN((HCONTROL)ctrl,lcn1);
            channel2=getInChanByLCN((HCONTROL)ctrl,lcn2);

            cmiCBEnter((HAPP)app, "cmEvChannelMaxSkew: haCall=0x%p, hsCall=0x%p, chan1=0x%p, chan2=0x%p, skew=%d.",
             emaGetApplicationHandle((EMAElement)channel1), channel1, emaGetApplicationHandle((EMAElement)channel2), channel2, maxSkew);

            nesting = emaPrepareForCallback(callE);
            app->cmMyChannelEvent.cmEvChannelMaxSkew(
                (HAPPCHAN)emaGetApplicationHandle((EMAElement)channel1), (HCHAN)channel1,
                (HAPPCHAN)emaGetApplicationHandle((EMAElement)channel2), (HCHAN)channel2, (RvUint32)maxSkew);
            emaReturnFromCallback(callE, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelMaxSkew.");

            emaUnlock(callE);
        }
    }
    return 0;
}

int logicalChannelActive(H245Control* ctrl, int lcn)
{
    cmElem* app=(cmElem*)emaGetInstance((EMAElement)cmiGetByControl((HCONTROL)ctrl));
    H245Channel* channel=NULL;
    HPVT hVal;
    int nesting;

    if (!app) return RV_ERROR_UNKNOWN;

    if (app->cmMyChannelEvent.cmEvChannelStateChanged != NULL)
    {
        hVal=app->hVal;
        channel=getInChanByLCN((HCONTROL)ctrl,lcn);

        if (emaLock((EMAElement)channel))
        {
            cmiCBEnter((HAPP)app, "cmEvChannelStateChanged: haChan=0x%p, hsChan=0x%p, state=Connected, mode=On", emaGetApplicationHandle((EMAElement)channel), channel);
            nesting = emaPrepareForCallback((EMAElement)channel);
            app->cmMyChannelEvent.cmEvChannelStateChanged(
                (HAPPCHAN)emaGetApplicationHandle((EMAElement)channel), (HCHAN)channel, cmChannelStateConnected, cmChannelStateModeOn);
            emaReturnFromCallback((EMAElement)channel, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelStateChanged.");

            emaUnlock((EMAElement)channel);
        }
    }

    return RV_TRUE;
}

int logicalChannelInactive(H245Control* ctrl, int lcn)
{
    cmElem* app=(cmElem*)emaGetInstance((EMAElement)cmiGetByControl((HCONTROL)ctrl));
    H245Channel* channel=NULL;
    HPVT hVal;
    int nesting;

    if (!app) return RV_ERROR_UNKNOWN;

    if (app->cmMyChannelEvent.cmEvChannelStateChanged)
    {
        hVal=app->hVal;
        channel=getInChanByLCN((HCONTROL)ctrl,lcn);

        if (emaLock((EMAElement)channel))
        {
            cmiCBEnter((HAPP)app, "cmEvChannelStateChanged: haChan=0x%p, hsChan=0x%p, state=Connected, mode=Off", emaGetApplicationHandle((EMAElement)channel), channel);
            nesting = emaPrepareForCallback((EMAElement)channel);
            app->cmMyChannelEvent.cmEvChannelStateChanged(
                (HAPPCHAN)emaGetApplicationHandle((EMAElement)channel), (HCHAN)channel, cmChannelStateConnected, cmChannelStateModeOff);
            emaReturnFromCallback((EMAElement)channel, nesting);
            cmiCBExit((HAPP)app, "cmEvChannelStateChanged.");

            emaUnlock((EMAElement)channel);
        }
    }

    return RV_TRUE;
}

int transportCapability(H245Control* ctrl,int message, int lcn)
{
    HPVT hVal;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -