EVS: Support decoding Primary 32.0 kbps packets

This commit is contained in:
Nan Xiao 2022-03-23 17:05:20 +08:00 committed by A Wireshark GitLab Utility
parent 2fc8c0e36b
commit 33e97e6130
1 changed files with 45 additions and 0 deletions

View File

@ -56,6 +56,7 @@ static int hf_evs_132_bwctrf_idx = -1;
static int hf_evs_28_frame_type = -1;
static int hf_evs_28_bw_ppp_nelp = -1;
static int hf_evs_72_80_bwct_idx = -1;
static int hf_evs_320_bwct_idx = -1;
static int ett_evs = -1;
static int ett_evs_header = -1;
@ -421,6 +422,25 @@ static const value_string evs_72_80_bwct_idx_vals[] = {
{ 0, NULL }
};
static const value_string evs_320_bwct_idx_vals[] = {
{ 0x0, "WB generic" },
{ 0x1, "WB transition" },
{ 0x2, "WB inactive" },
{ 0x3, "SWB generic" },
{ 0x4, "SWB transition" },
{ 0x5, "SWB inactive" },
{ 0x6, "FB generic" },
{ 0x7, "FB transition" },
{ 0x8, "FB inactive" },
{ 0x9, "WB generic" },
{ 0xa, "WB transition" },
{ 0xb, "SWB generic" },
{ 0xc, "SWB transition" },
{ 0xd, "FB generic" },
{ 0xe, "FB transition" },
{ 0, NULL }
};
static void
dissect_evs_cmr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *evs_tree, int offset, guint8 cmr_oct)
{
@ -707,6 +727,26 @@ dissect_evs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
/* Reserved 1 bit */
proto_tree_add_bits_item(vd_tree, hf_evs_reserved_1bit, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
break;
case 80: /* 640 EVS Primary 32 */
/* 7.1.4 Bit allocation at 32 kbps */
/* CELP/MDCT core flag 1 */
proto_tree_add_bits_ret_val(vd_tree, hf_evs_celp_mdct_core, tvb, bit_offset, 1, &value, ENC_BIG_ENDIAN);
bit_offset++;
/* In the case of MDCT-based core, the next bit decides whether HQ-MDCT core or TCX core is used */
if (value == 1) {
/* MDCT-based core*/
proto_tree_add_bits_ret_val(vd_tree, hf_evs_tcx_or_hq_mdct_core, tvb, bit_offset, 1, &value, ENC_BIG_ENDIAN);
bit_offset++;
if (value == 1) {
/* TCX core */
/* BW 2 bits */
proto_tree_add_bits_item(vd_tree, hf_evs_bw, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
}
} else {
/* BW, CT, 4*/
proto_tree_add_bits_item(vd_tree, hf_evs_320_bwct_idx, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
}
break;
case 120: /* 960 EVS Primary 48 */
case 240: /* 1920 EVS Primary 96 */
case 320: /* 2560 EVS Primary 128 */
@ -970,6 +1010,11 @@ proto_register_evs(void)
FT_UINT8, BASE_DEC, VALS(evs_72_80_bwct_idx_vals), 0x0,
NULL, HFILL }
},
{ &hf_evs_320_bwct_idx,
{ "BW CT Index", "evs.320.bwct_idx",
FT_UINT8, BASE_DEC, VALS(evs_320_bwct_idx_vals), 0x0,
NULL, HFILL }
},
};