overte-thingvellir/tools/dissectors/2-hf-audio.lua
Dale Glass c06a60eaea Fix wireshark dissector, update with new packet types.
Probably still incomplete, but getting closer.
2024-07-18 16:39:37 +02:00

46 lines
1.5 KiB
Lua

print("Loading hf-audio")
bit32 = require("bit32")
-- create the audio protocol
p_hf_audio = Proto("hf-audio", "HF Audio Protocol")
-- audio packet fields
local f_audio_sequence_number = ProtoField.uint16("hf_audio.sequence_number", "Sequence Number")
local f_audio_codec_size = ProtoField.uint32("hf_audio.codec_size", "Codec Size")
local f_audio_codec = ProtoField.string("hf_audio.codec", "Codec")
local f_audio_is_stereo = ProtoField.bool("hf_audio.is_stereo", "Is Stereo")
local f_audio_num_silent_samples = ProtoField.uint16("hf_audio.num_silent_samples", "Num Silent Samples")
p_hf_audio.fields = {
f_audio_sequence_number, f_audio_codec_size, f_audio_codec,
f_audio_is_stereo, f_audio_num_silent_samples
}
local packet_type_extractor = Field.new('hfudt.type_text')
function p_hf_audio.dissector(buf, pinfo, tree)
pinfo.cols.protocol = p_hf_audio.name
audio_subtree = tree:add(p_hf_audio, buf())
local i = 0
audio_subtree:add_le(f_audio_sequence_number, buf(i, 2))
i = i + 2
-- figure out the number of bytes the codec name takes
local codec_name_bytes = buf(i, 4):le_uint()
audio_subtree:add_le(f_audio_codec_size, buf(i, 4))
i = i + 4
audio_subtree:add(f_audio_codec, buf(i, codec_name_bytes))
i = i + codec_name_bytes
local packet_type = packet_type_extractor().value
if packet_type == "SilentAudioFrame" then
audio_subtree:add_le(f_audio_num_silent_samples, buf(i, 2))
i = i + 2
else
audio_subtree:add_le(f_audio_is_stereo, buf(i, 1))
i = i + 1
end
end