[Spice-devel] [PATCH spice-html5] Review the webm audio track header and remove the fixmes.
Jeremy White
jwhite at codeweavers.com
Tue Aug 13 13:38:28 UTC 2019
On 8/11/19 4:32 AM, Frediano Ziglio wrote:
> Hi,
> why this was not merged ?
I completely missed the ack at the time.
I do think the patch is fundamentally correct and an improvement. This
one arguably deserves a reprise of the audit I performed at the time to
ensure that the results are still correct. I was planning to do that in
September (and resubmit the uid patch at the same time).
For the record, I have an internal todo list of patches that were missed
to circle back to. You've now caught most of them, thank you
(websockets being the big one). I believe I still have one or two
patches to argument parsing on libcacard, and I do not have a patch, but
a concern, on the removal of the spice-controller. I also have a large
separate patch set against the kernel providing usbredir support.
Cheers,
Jeremy
>
> Frediano
>
>> Ack
>>
>> Thanks,
>> Pavel
>>
>> On Fri, 2016-12-23 at 10:53 -0600, Jeremy White wrote:
>>> 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 at codeweavers.com>
>>> ---
>>> 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
>>> ];
More information about the Spice-devel
mailing list