Correct asynchronus use of nvjpeg

When we use nvjpeg to encode an image, how to do this?
We start with creating the nvjpegHandle_t , creating and setting nvjpegEncoderParams_t, setting up an nvjpegImage_t and creaint an nvjpegEncoderState_t.

Now we have to call nvjpegEncodeImage, then nvjpegEncodeRetrieveBitstream.

Both functions can take an cudaStream_t. I assume that this has to be the same stream?
After calling nvjpegEncodeRetrieveBitstream, can I reuse the nvjpegEncoderState_t, or do I have to synchronize the stream first?