diff --git a/README.md b/README.md index 86db52e..e0f4786 100644 --- a/README.md +++ b/README.md @@ -1300,9 +1300,9 @@ The `player` object in [`stream/start`](#server--client-streamstart) has this st The format MUST be one the client listed in its [`supported_formats`](#client--server-clienthello-playerv1-support-object). -When the `player` object changes the format of an active stream, chunks sent before this message are in the previous format and chunks sent after it are in the new format. Servers MUST timestamp the first chunk in the new format to follow the last chunk in the previous format on the existing timeline, and MUST NOT resend audio already sent. +When the `player` object changes the format of an active stream, chunks sent before this message are in the previous format and chunks sent after it are in the new format. Servers SHOULD timestamp the first chunk in the new format to start where the last chunk in the previous format ends on the existing timeline, MUST NOT timestamp it to start earlier, and MUST NOT resend audio already sent. -Clients MUST keep buffered chunks and decode each chunk in the format that was in effect when it was received. A player that cannot switch its output between the formats it lists without a gap SHOULD list a single `sample_rate` and `channels` in [`supported_formats`](#client--server-clienthello-playerv1-support-object), in which case the server resamples for it. +Clients MUST keep buffered chunks and decode each chunk in the format that was in effect when it was received, and SHOULD switch their output between formats without adding a gap. A player that cannot switch its output between the formats it lists without a gap SHOULD list a single `sample_rate` and `channels` in [`supported_formats`](#client--server-clienthello-playerv1-support-object), in which case the server resamples for it. ### Server → Client: `stream/clear` player diff --git a/roles/player/v1.md b/roles/player/v1.md index e98c053..0acd2a5 100644 --- a/roles/player/v1.md +++ b/roles/player/v1.md @@ -93,9 +93,9 @@ The `player` object in [`stream/start`](../../messaging.md#server--client-stream The format MUST be one the client listed in its [`supported_formats`](#client--server-clienthello-playerv1-support-object). -When the `player` object changes the format of an active stream, chunks sent before this message are in the previous format and chunks sent after it are in the new format. Servers MUST timestamp the first chunk in the new format to follow the last chunk in the previous format on the existing timeline, and MUST NOT resend audio already sent. +When the `player` object changes the format of an active stream, chunks sent before this message are in the previous format and chunks sent after it are in the new format. Servers SHOULD timestamp the first chunk in the new format to start where the last chunk in the previous format ends on the existing timeline, MUST NOT timestamp it to start earlier, and MUST NOT resend audio already sent. -Clients MUST keep buffered chunks and decode each chunk in the format that was in effect when it was received. A player that cannot switch its output between the formats it lists without a gap SHOULD list a single `sample_rate` and `channels` in [`supported_formats`](#client--server-clienthello-playerv1-support-object), in which case the server resamples for it. +Clients MUST keep buffered chunks and decode each chunk in the format that was in effect when it was received, and SHOULD switch their output between formats without adding a gap. A player that cannot switch its output between the formats it lists without a gap SHOULD list a single `sample_rate` and `channels` in [`supported_formats`](#client--server-clienthello-playerv1-support-object), in which case the server resamples for it. ### Server → Client: `stream/clear` player