From cbac2f25105017ab164a945168302b62bbcb2ed4 Mon Sep 17 00:00:00 2001 From: Diego Waxemberg Date: Thu, 26 Sep 2013 01:08:52 -0400 Subject: [PATCH] now parse stream as rtp first and added more fields --- LuaScripts/NVStreamVideoPacket.lua | 50 ++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/LuaScripts/NVStreamVideoPacket.lua b/LuaScripts/NVStreamVideoPacket.lua index a208136a..c1b40b57 100644 --- a/LuaScripts/NVStreamVideoPacket.lua +++ b/LuaScripts/NVStreamVideoPacket.lua @@ -3,9 +3,11 @@ -- Diego Waxemberg -- video header -local nvHeader_unknown = ProtoField.bytes("nv.unknown", "Unknown") -- 12 bytes -local nvHeader_frame = ProtoField.uint16("nv.frame", "Frame", base.HEX) -- 2 bytes -local nvHeader_garbage = ProtoField.bytes("nv.garbage", "Garbage") --14 bytes +local nvHeader_frame = ProtoField.uint32("nv.frame", "Frame", base.HEX) -- 4 bytes +local nvHeader_pindex = ProtoField.uint16("nv.pindex", "Packet Index", base.HEX) -- 2 bytes +local nvHeader_empty = ProtoField.uint16("nv.empty", "Empty?", base.HEX) -- 2 bytes +local nvHeader_pframe = ProtoField.uint16("nv.pframe", "Packets in Frame", base.HEX) -- 2 bytes +local nvHeader_garbage = ProtoField.bytes("nv.garbage", "Garbage") -- 6 bytes local nvHeader_length = ProtoField.uint16("nv.length", "Length", base.HEX) -- 2 bytes local nvHeader_moregarbage = ProtoField.bytes("nv.moregarbage", "More Garbage") --23 bytes local nvHeader_start = ProtoField.uint32("nv.start", "Start", base.HEX) -- 4 bytes @@ -15,8 +17,10 @@ local nvVideo_data = ProtoField.bytes("nv.data", "Data") -- rest p_nv = Proto("nv", "Nvidia Video Stream Protocol") p_nv.fields = { - nvHeader_unknown, nvHeader_frame, + nvHeader_pindex, + nvHeader_empty, + nvHeader_pframe, nvHeader_garbage, nvHeader_length, nvHeader_moregarbage, @@ -29,20 +33,30 @@ function p_nv.dissector(buf, pkt, root) subtree = root:add(p_nv, buf(0)) i = 0 - -- unknown - unknown = buf(i, 12):bytes() - subtree:add(nvHeader_unknown, buf(i, 12)) - i = i + 12 - -- frame - frame = buf(i, 2):le_uint() - subtree:add(nvHeader_frame, buf(i, 2), frame) + frame = buf(i, 4):le_uint() + subtree:add(nvHeader_frame, buf(i, 4), frame) + i = i + 4 + + --pindex + pindex = buf(i, 2):le_uint() + subtree:add(nvHeader_pindex, buf(i, 2), pindex) i = i + 2 + --empty + empty = buf(i, 2):le_uint() + subtree:add(nvHeader_empty, buf(i, 2), empty) + i = i + 2 + + --pframe + pframe = buf(i, 2):le_uint() + subtree:add(nvHeader_pframe, buf(i, 2), pframe) + i = i + 2 + -- garbage - garbage = buf(i, 14):bytes() - subtree:add(nvHeader_garbage, buf(i, 14)) - i = i + 14 + garbage = buf(i, 6):bytes() + subtree:add(nvHeader_garbage, buf(i, 6)) + i = i + 6 -- length length = buf(i, 2):le_uint() @@ -67,5 +81,9 @@ end function p_nv.init() end -local udp_dissector_table = DissectorTable.get("udp.port") -udp_dissector_table:add(47998, p_nv) \ No newline at end of file + +local udp_dissector_table = DissectorTable.get("rtp.pt") +udp_dissector_table:add(96, p_nv) + + +