mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 00:54:14 +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 {EncodeUpdateStringTable, ParseUpdateStringTable} from '../Packet/UpdateStringTable';
|
||||||
import {ParseUserMessage} from '../Packet/UserMessage';
|
import {ParseUserMessage} from '../Packet/UserMessage';
|
||||||
import {ParseVoiceData} from '../Packet/VoiceData';
|
import {ParseVoiceData} from '../Packet/VoiceData';
|
||||||
import {ParseVoiceInit} from '../Packet/VoiceInit';
|
import {EncodeVoiceInit, ParseVoiceInit} from '../Packet/VoiceInit';
|
||||||
import {Parser} from './Parser';
|
import {Parser} from './Parser';
|
||||||
|
|
||||||
import {Packet as IPacket} from '../../Data/Packet';
|
import {Packet as IPacket} from '../../Data/Packet';
|
||||||
|
|
@ -43,7 +43,7 @@ export class Packet extends Parser {
|
||||||
11: make('setPause', 'paused{b}'),
|
11: make('setPause', 'paused{b}'),
|
||||||
12: {parser: ParseCreateStringTable, encoder: EncodeCreateStringTable},
|
12: {parser: ParseCreateStringTable, encoder: EncodeCreateStringTable},
|
||||||
13: {parser: ParseUpdateStringTable, encoder: EncodeUpdateStringTable},
|
13: {parser: ParseUpdateStringTable, encoder: EncodeUpdateStringTable},
|
||||||
14: {parser: ParseVoiceInit, encoder: voidEncoder},
|
14: {parser: ParseVoiceInit, encoder: EncodeVoiceInit},
|
||||||
15: {parser: ParseVoiceData, encoder: voidEncoder},
|
15: {parser: ParseVoiceData, encoder: voidEncoder},
|
||||||
17: {parser: ParseParseSounds, encoder: voidEncoder},
|
17: {parser: ParseParseSounds, encoder: voidEncoder},
|
||||||
18: make('setView', 'index{11}'),
|
18: make('setView', 'index{11}'),
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,10 @@ import {VoiceInitPacket} from '../../Data/Packet';
|
||||||
export function ParseVoiceInit(stream: BitStream): VoiceInitPacket {
|
export function ParseVoiceInit(stream: BitStream): VoiceInitPacket {
|
||||||
const codec = stream.readASCIIString();
|
const codec = stream.readASCIIString();
|
||||||
const quality = stream.readUint8();
|
const quality = stream.readUint8();
|
||||||
|
|
||||||
// no clue, from 2017-2-14 update
|
// no clue, from 2017-2-14 update
|
||||||
const extraData = (codec === 'vaudio_celt' && quality === 255) ? stream.readUint16() : 0;
|
const extraData = (codec === 'vaudio_celt' && quality === 255) ? stream.readUint16() : 0;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
packetType: 'voiceInit',
|
packetType: 'voiceInit',
|
||||||
codec,
|
codec,
|
||||||
|
|
@ -13,3 +15,11 @@ export function ParseVoiceInit(stream: BitStream): VoiceInitPacket {
|
||||||
extraData,
|
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