Re: [pjsip] How to know incoming) call is audio or video

MW
Mu-Sheng Wu
Tue, Aug 29, 2017 3:02 PM

For iOS, you need to check in on_call_media_state

Here is my implementation

static void onCallMediaState(pjsua_call_id callId) {
pjsua_call_info ci;
pjsua_call_get_info(callId, &ci);

for (unsigned i = 0; i < ci.media_cnt; i++) {
    if (ci.media[i].type == PJMEDIA_TYPE_AUDIO) {
        ...
    } else if (ci.media[i].type == PJMEDIA_TYPE_VIDEO) {
        ...
    }
}

...

}

For Android, override onCallMediaState method in Call

public void onCallMediaState(final OnCallMediaStateParam param) {
CallInfo callInfo;

try {
    callInfo = getInfo();
} catch (Exception e) {
    e.printStackTrace();
}

for (int i = 0; i < callInfo.getMedia().size(); i++) {
    final CallMediaInfo callMediaInfo = callInfo.getMedia().get(i);

    if (callMediaInfo.getType() == pjmedia_type.PJMEDIA_TYPE_AUDIO) {
        …
    } else if (callMediaInfo.getType() == pjmedia_type.PJMEDIA_TYPE_VIDEO) {
        …
    }

    …
}

}

For iOS, you need to check in on_call_media_state Here is my implementation static void onCallMediaState(pjsua_call_id callId) { pjsua_call_info ci; pjsua_call_get_info(callId, &ci); for (unsigned i = 0; i < ci.media_cnt; i++) { if (ci.media[i].type == PJMEDIA_TYPE_AUDIO) { ... } else if (ci.media[i].type == PJMEDIA_TYPE_VIDEO) { ... } } ... } For Android, override onCallMediaState method in Call public void onCallMediaState(final OnCallMediaStateParam param) { CallInfo callInfo; try { callInfo = getInfo(); } catch (Exception e) { e.printStackTrace(); } for (int i = 0; i < callInfo.getMedia().size(); i++) { final CallMediaInfo callMediaInfo = callInfo.getMedia().get(i); if (callMediaInfo.getType() == pjmedia_type.PJMEDIA_TYPE_AUDIO) { … } else if (callMediaInfo.getType() == pjmedia_type.PJMEDIA_TYPE_VIDEO) { … } … } }