NOTE: Ownership of the decoded output stays with the decoder. You may hold on to the returned pointer but it is recommended the output is processed immediately. If the output is not returned to the decoder (by resetting the pointer) it may be possible for the decoder to be unable to produce additional output.