I’ve just noticed that mod_h26x has been dropped from the tree fully in favour of mod_av.
I have a use case that doesn’t work with mod_av (or any other approach apart from mod_h26x passthru). It is a uniquely challenging environment of a door entry phone, talking to softphone over a bandwidth constrained private mobile network.
There is a horrible combination of NAT, but no public IP addresses, with early media (video sendonly from the door entryphone using a low resolution/frame rate/bandwidth), then one way video towards the softphone with 2-way audio media after answer. The door entry device is pretty basic and can’t do ICE or bundles so we are stuck with discrete RTP for audio and video.
I can’t use bypass-media because there is no station to station connectivity, I can’t use proxy-media because that messes up the audio stream transition to sendrecv on answer.
mod_av doesn’t work for me because it tries to do normalisation of the H264 video and fails (and in any case transcoding video wouldn’t scale).
What does work perfectly is handling audio bridging normally, and video passthrough via mod_h26x which is fine for my use case.
Is there any way to persuade mod_av to behave like mod_h26x and just pass through video samples without messing with them or just put mod_h26x back in the tree please?
mod_h26x was deprecated so was moved out of tree. mod_av should work the same. Check the settings in av.conf.xml
freeswitch/conf/vanilla/autoload_configs/av.conf.xml at master · signalwire/freeswitch · GitHub. You might just need to test with the different setting options.
As far as I can tell, there is no mod_av
setting option for ‘just passthrough, don’t attempt to transcode’ in the way that mod_h26x
does. It always attempts to transcode, or at least parse the media through libffmpeg which consumes CPU to do so, and produces no output stream. I really don’t want to transcode video, just want to pass it through.
proxy-media would be ideal, but doesn’t work for me because it is all or nothing, also proxies the audio stream which means doesn’t restart when it goes from sendonly early media to sendrecv on answer.
If you can point me at mod_av
flags to make it behave in the same minimal way as mod_h26x
then that would be a great solution, but I can’t work that out from the config file or code.
Tried
<param name="disable-transcoding" value="true"/>
in the sofia config to force the negotiated codec parameters to just match on both legs, but still results in the same behaviour in mod_av
whereas mod_h26x
just works for all cases.
This could easily be something which is shonky about the sender video, but I have no control over that, and it is obviously acceptable to the receiver (which uses ffmpeg I believe).
Actually ignore this, I just found mod_av
tests a variable called no_video_decode
so will try setting no_video_decode=1
in the diaplan.
That works, so for the sake of search engines finding this:
To make mod_av
work the same as mod_h26x
did and not attempt to recode RTP streams, add:
<action application="set" data="no_video_decode=1"/>
to the dialplan.