This involved a review of the Firefox parsing code along with the official specifcation, and setting these fields to the specified default values. Most notably, I have found that recent browsers do not need the 8 ms pre skip, and it seems to remove some audio lag to switch to 0. Signed-off-by: Jeremy White <jwhite@xxxxxxxxxxxxxxx> --- webm.js | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/webm.js b/webm.js index 789da14..72c1853 100644 --- a/webm.js +++ b/webm.js @@ -393,28 +393,39 @@ webm_SeekHead.prototype = function webm_AudioTrackEntry() { + /* + ** In general, we follow this specification: + ** https://www.matroska.org/technical/specs/index.html + ** we supply the mandatory values, and a comment notes + ** where we differ from the default + ** There is one RECOMMENDED guideline we are omitting; + ** the OPUS codec_delay is recommended to be 80ms. + ** However, the spice server does not currently provide time + ** stamps that are offset by 80ms, so you effectively get an + ** 80ms lag with this setting. + */ this.id = WEBM_TRACK_ENTRY; this.number = 1; this.uid = 1; this.type = 2; // Audio this.flag_enabled = 1; this.flag_default = 1; - this.flag_forced = 1; - this.flag_lacing = 0; - this.min_cache = 0; // fixme - check + this.flag_forced = 1; // Different than default; we wish to force + this.flag_lacing = 1; + this.min_cache = 0; this.max_block_addition_id = 0; - this.codec_decode_all = 0; // fixme - check - this.seek_pre_roll = 0; // 80000000; // fixme - check - this.codec_delay = 80000000; // Must match codec_private.preskip + this.seek_pre_roll = 0; + this.codec_delay = 0; // Must match codec_private.preskip this.codec_id = "A_OPUS"; + this.codec_decode_all = 1; this.audio = new webm_Audio(OPUS_FREQUENCY); // See: http://tools.ietf.org/html/draft-terriberry-oggopus-01 this.codec_private = [ 0x4f, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64, // OpusHead 0x01, // Version OPUS_CHANNELS, - 0x00, 0x0F, // Preskip - 3840 samples - should be 8ms at 48kHz - 0x80, 0xbb, 0x00, 0x00, // 48000 + 0x00, 0x00, // Preskip - 3840 samples would be 8ms at 48kHz + 0x80, 0xbb, 0x00, 0x00, // nominal rate - 48000 0x00, 0x00, // Output gain 0x00 // Channel mapping family ]; -- 2.1.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel