mirror of
https://github.com/demostf/demo.js
synced 2026-06-03 16:44:12 +02:00
add encoder for voiceInit
This commit is contained in:
parent
ae79b6a0d4
commit
7f2d702ab0
3 changed files with 39 additions and 4 deletions
|
|
@ -16,7 +16,7 @@ import {ParseTempEntities} from '../Packet/TempEntities';
|
|||
import {EncodeUpdateStringTable, ParseUpdateStringTable} from '../Packet/UpdateStringTable';
|
||||
import {ParseUserMessage} from '../Packet/UserMessage';
|
||||
import {ParseVoiceData} from '../Packet/VoiceData';
|
||||
import {ParseVoiceInit} from '../Packet/VoiceInit';
|
||||
import {EncodeVoiceInit, ParseVoiceInit} from '../Packet/VoiceInit';
|
||||
import {Parser} from './Parser';
|
||||
|
||||
import {Packet as IPacket} from '../../Data/Packet';
|
||||
|
|
@ -43,7 +43,7 @@ export class Packet extends Parser {
|
|||
11: make('setPause', 'paused{b}'),
|
||||
12: {parser: ParseCreateStringTable, encoder: EncodeCreateStringTable},
|
||||
13: {parser: ParseUpdateStringTable, encoder: EncodeUpdateStringTable},
|
||||
14: {parser: ParseVoiceInit, encoder: voidEncoder},
|
||||
14: {parser: ParseVoiceInit, encoder: EncodeVoiceInit},
|
||||
15: {parser: ParseVoiceData, encoder: voidEncoder},
|
||||
17: {parser: ParseParseSounds, encoder: voidEncoder},
|
||||
18: make('setView', 'index{11}'),
|
||||
|
|
|
|||
|
|
@ -2,10 +2,12 @@ import {BitStream} from 'bit-buffer';
|
|||
import {VoiceInitPacket} from '../../Data/Packet';
|
||||
|
||||
export function ParseVoiceInit(stream: BitStream): VoiceInitPacket {
|
||||
const codec = stream.readASCIIString();
|
||||
const quality = stream.readUint8();
|
||||
const codec = stream.readASCIIString();
|
||||
const quality = stream.readUint8();
|
||||
|
||||
// no clue, from 2017-2-14 update
|
||||
const extraData = (codec === 'vaudio_celt' && quality === 255) ? stream.readUint16() : 0;
|
||||
|
||||
return {
|
||||
packetType: 'voiceInit',
|
||||
codec,
|
||||
|
|
@ -13,3 +15,11 @@ export function ParseVoiceInit(stream: BitStream): VoiceInitPacket {
|
|||
extraData,
|
||||
};
|
||||
}
|
||||
|
||||
export function EncodeVoiceInit(packet: VoiceInitPacket, stream: BitStream) {
|
||||
stream.writeASCIIString(packet.codec);
|
||||
stream.writeUint8(packet.quality);
|
||||
if (packet.extraData) {
|
||||
stream.writeUint16(packet.extraData);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
25
src/tests/unit/Parser/Packet/VoiceInitTest.ts
Normal file
25
src/tests/unit/Parser/Packet/VoiceInitTest.ts
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import {BitStream} from 'bit-buffer';
|
||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
||||
import {EncodeVoiceInit, ParseVoiceInit} from '../../../../Parser/Packet/VoiceInit';
|
||||
|
||||
const data = [118, 97, 117, 100, 105, 111, 95, 99, 101, 108, 116, 0, 255, 34, 86];
|
||||
|
||||
suite('VoiceInit', () => {
|
||||
test('Parse voiceInit', () => {
|
||||
assertParser(ParseVoiceInit, getStream(data), {
|
||||
packetType: 'voiceInit',
|
||||
codec: 'vaudio_celt',
|
||||
quality: 255,
|
||||
extraData: 22050
|
||||
}, 120);
|
||||
});
|
||||
|
||||
test('Encode voiceInit', () => {
|
||||
assertEncoder(ParseVoiceInit, EncodeVoiceInit, {
|
||||
packetType: 'voiceInit',
|
||||
codec: 'vaudio_celt',
|
||||
quality: 255,
|
||||
extraData: 22050
|
||||
}, 120);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue