Hey guys, need some help from a specialist here
I have some hikvision hardware in my house as door intercom, i traced with wireshark how it works, and tried to simulate in on Asterisk
In screenshot below, 192.168.0.70 => outdoor intercom, when someone calls, the primary indoor 192.168.0.71 starts ringing, ans is also forwarding the call to the second indoor screen, 192.168.0.72
for test i pickup on second indoor screen, and the H264 video is sending from 192.168.0.70 to 192.168.0.72
Now in asterisk i also setup a trunk for incoming call based on IP auth, i added another indoor registration, asterisk IP = 192.168.0.17 , with extension nr: 10000000005 (compared to 10000000001 in log above)
So in asterisk i receive an incoming call from 192.168.0.70 to 192.168.0.71 that forwards to 192.168.0.17 (ip auth trunk on asterisk)
Its actually identical as above screenshot
I see the call coming in on my softphone (6000), i can answer, i can hear audio , but the video is just missing? Whats wrong? Below is a full debug log with also rtp logging enabled (asterisk2.txt)
There wouldn’t need to be a disallow setting, in that case.
Config files are declarative, not procedural.
The first stage parsing of config files in Asterisk keeps all the lines. The second stage is done by the individual modules and there are actually two basic strategies, which cause different behaviour for duplicates. Whilst most now process lines in order and look them up in a list of possible settings, some have a list of valid keywords and will look these up in the parsed configuration, which means that the first occurrence wins, and that invalid keywords will be silently ignored.
Allow and disallow are handled specially in that they update the codecs list incrementally. This is taken from chan_sip, as I know my way around it, but I think is true of all channel types:
} else if (!strcasecmp(v->name, "allow")) {
int error = ast_format_cap_update_by_allow_disallow(peer->caps, v->value, TRUE);
if (error) {
ast_log(LOG_WARNING, "Codec configuration errors found in line %d : %s = %s\n", v->lineno, v->name, v->value);
}
} else if (!strcasecmp(v->name, "disallow")) {
int error = ast_format_cap_update_by_allow_disallow(peer->caps, v->value, FALSE);
if (error) {
ast_log(LOG_WARNING, "Codec configuration errors found in line %d : %s = %s\n", v->lineno, v->name, v->value);
}