Mod_av vs mod_h26x

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.