  Streaming codes (SCs) are packet-level codes that recover erased packets
within a strict decoding-delay deadline. Streaming codes for various packet
erasure channel models such as sliding-window (SW) channel models that admit
random or burst erasures in any SW of a fixed length have been studied in the
literature, and the optimal rate as well as rate-optimal code constructions of
SCs over such channel models are known. In this paper, we study
error-correcting streaming codes ($\text{SC}_{\text{ERR}}$s), i.e.,
packet-level codes which recover erroneous packets within a delay constraint.
We study $\text{SC}_{\text{ERR}}$s for two classes of SW channel models, one
that admits random packet errors, and another that admits multiple bursts of
packet errors, in any SW of a fixed length. For the case of random packet
errors, we establish the equivalence of an $\text{SC}_{\text{ERR}}$ and a
corresponding SC that recovers from random packet erasures, thus determining
the optimal rate of an $\text{SC}_{\text{ERR}}$ for this setting, and providing
a rate-optimal code construction for all parameters. We then focus on SCs that
recover from multiple erasure bursts and derive a rate-upper-bound for such
SCs. We show the necessity of a divisibility constraint for the existence of an
SC constructed by the popular diagonal embedding technique, that achieves this
rate-bound under a stringent delay requirement. We then show that a
construction known in the literature achieves this rate-bound when the
divisibility constraint is met. We further show the equivalence of the SCs
considered and $\text{SC}_{\text{ERR}}$s for the setting of multiple error
bursts, under a stringent delay requirement.
