Came across an issue with a co-worker of mine (Paul)
A transcoder is also capable of performing the same functionality as a media termination point (MTP). In cases where transcoder functionality and MTP functionality are both needed, a transcoder is allocated by the system. If MTP functionality is required, Cisco Unified CallManager will allocate either a transcoder or an MTP from the resource pool, and the choice of resource will be determined by the media resource groups, as described in the section on Media Resource Groups and Lists.
Thats absolutely fine, but if you do the normal config of having your HW_MRG for your hardware transcoders, place this at the top of your MRGL then have your software below, the problem is the way MRGL's pick MTP resources:
The algorithm for allocating like resources from an MRG attempts to spread the load across the like resources. When a resource has been used, a pointer for that MRG is incremented to the next device. A device may be present in more than one MRG, which will affect the pointers of all groups in which the device is a member. When MTPs are required and transcoders exist in the same group, the MTPs are always allocated until all MTPs are used, and then transcoders are used as MTPs. When resources of differing capacities exist in the same group, the load sharing attempts to allocate resources based on the capacity. The system will spread the load across resources, but because of the above factors, it frequently will not be round-robin in behavior.
So in other words, if you have a MRG with both transcoders and MTP's the Transcoders will only be used until the MTP resources are not available.
So in summary: a transcoder can act as an MTP point and will if its highest priority in your MRGL, if its inside an MRG where order doesn't matter it will always be used last.
I hope this helps someone out there!