Tvheadend will only apply a profile once to a stream coming in. This is either when a channel is requested for live streaming, or when it starts a recording. However, Tvheadend will not apply a streaming profile to a program that is already recorded; it will only stream exactly what was recording. In short, this means you cannot transcode recordings.
Transcoding can be done 2 ways. The easiest way is using its built-in transcoding profiles. If you have nVidia hardware, you can probably use the
nvenc
profiles to get hardware transcoding. Similarly, if you have capable Intel hardware, you can use the QSV profiles; however, these require modified kernels with Intel's QSV module, and usually an installation with libmfx. Otherwise, you're left with software/CPU-based encoding using libx264.
The other option is to use ffmpeg to do the transcoding. This is much more awkward to setup, as it requires use of the
pipe://
protocol and using IPTV networks in Tvheadend. It's not impossible, but quite a bit of effort. If you need VA-API hardware transcoding, this is pretty much your only option. (Even if your Tvheadend install offers
h264_vaapi
options for transcoding, it's broken and won't work; you may have luck with a fork of Tvheadend that's supposedly re-working the transcoding, but I have no experience with that.)
However, without more information, everything is guesswork.