Either way is possible.
If the tokens are within a contract, then use fn transferdirectly transfer
.
If the tokens are within the owner/admin wallet, then use fn transferFromtransferFrom
and approve contract to spend from owner/admin wallet.
Hope this helps