int sal_media_description_equals(const SalMediaDescription *md1, const SalMediaDescription *md2) { int result = SAL_MEDIA_DESCRIPTION_UNCHANGED; int i; if (strcmp(md1->addr, md2->addr) != 0) result |= SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED; if (md1->n_total_streams != md2->n_total_streams) result |= SAL_MEDIA_DESCRIPTION_CODEC_CHANGED; if (md1->bandwidth != md2->bandwidth) result |= SAL_MEDIA_DESCRIPTION_CODEC_CHANGED; for(i = 0; i < md1->n_total_streams; ++i){ result |= sal_stream_description_equals(&md1->streams[i], &md2->streams[i]); } return result; }
bool_t sal_media_description_equals(const SalMediaDescription *md1, const SalMediaDescription *md2){ int i; if (strcmp(md1->addr,md2->addr)!=0) return FALSE; if (md1->nstreams!=md2->nstreams) return FALSE; if (md1->bandwidth!=md2->bandwidth) return FALSE; for(i=0;i<md1->nstreams;++i){ if (!sal_stream_description_equals(&md1->streams[i],&md2->streams[i])) return FALSE; } return TRUE; }
int sal_media_description_equals(const SalMediaDescription *md1, const SalMediaDescription *md2) { int result = SAL_MEDIA_DESCRIPTION_UNCHANGED; int i; if (strcmp(md1->addr, md2->addr) != 0) result |= SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED; if (md1->addr[0]!='\0' && md2->addr[0]!='\0' && ms_is_multicast(md1->addr) != ms_is_multicast(md2->addr)) result |= SAL_MEDIA_DESCRIPTION_NETWORK_XXXCAST_CHANGED; if (md1->nb_streams != md2->nb_streams) result |= SAL_MEDIA_DESCRIPTION_STREAMS_CHANGED; if (md1->bandwidth != md2->bandwidth) result |= SAL_MEDIA_DESCRIPTION_CODEC_CHANGED; /* ICE */ if (strcmp(md1->ice_ufrag, md2->ice_ufrag) != 0) result |= SAL_MEDIA_DESCRIPTION_ICE_RESTART_DETECTED; if (strcmp(md1->ice_pwd, md2->ice_pwd) != 0) result |= SAL_MEDIA_DESCRIPTION_ICE_RESTART_DETECTED; for(i = 0; i < SAL_MEDIA_DESCRIPTION_MAX_STREAMS; ++i){ if (!sal_stream_description_active(&md1->streams[i]) && !sal_stream_description_active(&md2->streams[i])) continue; result |= sal_stream_description_equals(&md1->streams[i], &md2->streams[i]); } return result; }