You can not set gpu-id directly for source_bin. please refer to function decodebin_child_added in sources/apps/apps-common/src/deepstream_source_bin.c for how to set gpu-id for dGPU.
Thank you for the helpful response. I took a look at the function decodebin_child_added and managed to get the problem resolved.
For those who may come across similar use case, I will leave my basic approach below. Feel free to modify to suit your specific design / use case.
def decodebin_child_added(child_proxy,Object,name,user_data):
print("Decodebin child added:", name, "\n")
try:
# feel free to receive gpu id as input variable elsewhere
gpu_id = 1
# set gpu-id if it exists
Object.set_property('gpu-id', gpu_id)
except:
# current Gstreamer element does not have property "gpu-id"
# Feel free to do some logging for debugging purposes
pass
if(name.find("decodebin") != -1):
Object.connect("child-added",decodebin_child_added,user_data)