Forward error correction is performed with ML (Maximum Likelihood) decoder or near ML decoder. You can use different codes (block codes or convolutional codes or combinations) In forward error correction you use soft decision based on posterior probability. You an use Viterbi algorithm in decoder or (for product codes) turbo decoder.