I have found dead ends for this problem on different forums and sites, it would be time to solve it for everyone's good.
Given 2 devices:
A cisco 894x IP phone with h264 support
B softphone software Bria with h264 support
Before you say omg it's so complex, these are not compatible blah blah, guess what both the audio and the video WORKS perfectly if the Cisco -> calls -> Bria
Not the other way around. In that case on the Bria client it does not offer video stream and when clicking on "send video stream" it says not supported. I see the following in the asterisk log.
chan_sip.c:10118 in process_sdp: Ignoring video stream offer because port number is zero
The 2 devices are on the same LAN with no firewall on them or between them. The Asterisk server is on the same LAN with no firewall on it so all 3 have perfect access to each other but I have enabled canreinvite=yes so after the SIP session is established the 2 devices can talk with directly each other instead of going through the Asterisk. I can confirm this is working by looking at the traffic dumps of the PBX.
So what is causing the following error that the communication for video only works one way? It does not make sense. My asterisk config basics and device specific:
[general] context=default directmedia=yes nat=force_rport,comedia
Extension config the other is the mirror of this with another number:
 canreinvite=yes videosupport=yes type=friend host=dynamic secret=hello context=home mailbox=101@home deny=0.0.0.0/0 permit=192.168.0.0/255.255.0.0; disallow=all allow=g722 allow=speex allow=ulaw allow=alaw allow=h261 allow=h263 allow=h263p allow=h264 insecure=invite,port
astlinux-1.2.8 x86_64 - Asterisk 11.23.1
What I tried:
insecure=invite was the original I changed it to insecure=invite, port -> no difference
adding of videosupport=yes -> no difference