Like I mentioned earlier, packets are normally untouched by 3CX so I cannot comment on any other systems.
G.729 is not the best in terms of quality, but in your specific case it appears you do not have any other options, so I can provide you with the following advice to ensure the packets remain untouched across most (if not all) conditions:
1. You said your provider uses G.729, so make sure that is at the top of the list in your trunk (you probably already did this step)
2. Edit each extension manually, and on the Provisioning tab set G.729 on the top priority, for both of the drop down options:
a) 3CX App
b) the deskphone
3. Go to the PBX Settings, click General, and you will see two codec priority lists. Set G.729 at the top for both
4. Reprovision all the deskphones and apps to receive the new codec order, verify that the change took place by looking at the app settings (windows or mobile) and in the deskphone UI.
Now you have the highest chances that the codec remains untouched. Transcoding can degrade the signal, but with the above settings transcoding should nearly never occur.
This means you get to keep the original quality and volume exactly the same as the original.
Hope this helps!