It's probably that after extracting the stream from the archive, you need to reset the position back to 0 before passing it to the SDL functions, otherwise it'll just read form the current position.