There is a historic confusion in the encoding process. Because we were focused on ogg and mp3 encoder do not need to be reset, we have an implicit semantics confusion between reset_encoder functions and new metadata: each time a new metadata passes, we call reset_encoder...
This is not correct. For instance, when icecast fails to send and reset the encoder, this is a real reset that should not be treated as for metadata updates.
Now that we have many formats, we cannot afford anymore this confusion. For intance, WAV and external encoded formats will need a real reset when icecast restarts the connection but do not reset on new metadata..
Therefore, for 1.0, we should have a clear distinction between updating metadata, which may need to restart the encoder in some cases specific to the encoder and a real reset, which should be unconditional.