2008-04-15 14:52:15 +00:00
/* packet-rfc2190.c
*
* Routines for RFC2190 - encapsulated H .263 dissection
*
2008-05-08 14:01:31 +00:00
* Copyright 2003 Niklas Ogren < niklas . ogren @ 7l . se >
2008-04-15 14:52:15 +00:00
* Seven Levels Consultants AB
*
* Copyright 2008 Richard van der Hoff , MX Telecom
* < richardv @ mxtelecom . com >
*
* Wireshark - Network traffic analyzer
* By Gerald Combs < gerald @ wireshark . org >
* Copyright 1998 Gerald Combs
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
2012-06-28 22:56:06 +00:00
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA .
2008-04-15 14:52:15 +00:00
*/
/*
* This dissector tries to dissect the H .263 protocol according to
* RFC 2190 , http : //www.ietf.org/rfc/rfc2190.txt
*/
2012-09-20 02:03:38 +00:00
# include "config.h"
2008-04-15 14:52:15 +00:00
# include <epan/packet.h>
# include <epan/rtp_pt.h>
# include <epan/iax2_codec_type.h>
# include "packet-h263.h"
2013-12-12 17:45:22 +00:00
void proto_register_rfc2190 ( void ) ;
void proto_reg_handoff_rfc2190 ( void ) ;
2008-04-15 14:52:15 +00:00
/* H.263 header fields */
2014-09-30 20:59:17 +00:00
static int proto_rfc2190 = - 1 ;
2008-04-15 14:52:15 +00:00
/* Mode A header */
2008-04-15 15:15:35 +00:00
static int hf_rfc2190_ftype = - 1 ;
static int hf_rfc2190_pbframes = - 1 ;
static int hf_rfc2190_sbit = - 1 ;
static int hf_rfc2190_ebit = - 1 ;
static int hf_rfc2190_srcformat = - 1 ;
2011-10-21 02:10:19 +00:00
static int hf_rfc2190_picture_coding_type = - 1 ;
2008-04-15 15:15:35 +00:00
static int hf_rfc2190_unrestricted_motion_vector = - 1 ;
static int hf_rfc2190_syntax_based_arithmetic = - 1 ;
static int hf_rfc2190_advanced_prediction = - 1 ;
static int hf_rfc2190_r = - 1 ;
static int hf_rfc2190_rr = - 1 ;
static int hf_rfc2190_dbq = - 1 ;
static int hf_rfc2190_trb = - 1 ;
static int hf_rfc2190_tr = - 1 ;
2008-04-15 14:52:15 +00:00
/* Additional fields for Mode B or C header */
2008-04-15 15:15:35 +00:00
static int hf_rfc2190_quant = - 1 ;
static int hf_rfc2190_gobn = - 1 ;
static int hf_rfc2190_mba = - 1 ;
static int hf_rfc2190_hmv1 = - 1 ;
static int hf_rfc2190_vmv1 = - 1 ;
static int hf_rfc2190_hmv2 = - 1 ;
static int hf_rfc2190_vmv2 = - 1 ;
2014-09-30 20:59:17 +00:00
static gint ett_rfc2190 = - 1 ;
2008-09-26 17:04:01 +00:00
static dissector_handle_t h263_handle ;
2008-04-15 14:52:15 +00:00
static void
2008-04-15 15:15:35 +00:00
dissect_rfc2190 ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree )
2008-04-15 14:52:15 +00:00
{
2014-09-30 20:59:17 +00:00
proto_item * ti = NULL ;
proto_tree * rfc2190_tree = NULL ;
int offset = 0 ;
unsigned int rfc2190_version = 0 ;
tvbuff_t * next_tvb ;
int hdr_len = 0 ;
2008-04-15 14:52:15 +00:00
2008-04-15 15:15:35 +00:00
rfc2190_version = ( tvb_get_guint8 ( tvb , offset ) & 0xc0 ) > > 6 ;
2008-04-15 14:52:15 +00:00
2009-08-09 07:59:51 +00:00
col_set_str ( pinfo - > cinfo , COL_PROTOCOL , " H.263 " ) ;
2008-04-15 14:52:15 +00:00
2014-09-30 20:59:17 +00:00
/* Three formats (mode A, mode B and mode C) are defined for H.263
* payload header . In mode A , an H .263 payload header of four bytes is
* present before actual compressed H .263 video bitstream in a packet .
* It allows fragmentation at GOB boundaries . In mode B , an eight byte
* H .263 payload header is used and each packet starts at MB boundaries
* without the PB - frames option . Finally , a twelve byte H .263 payload
* header is defined in mode C to support fragmentation at MB boundaries
* for frames that are coded with the PB - frames option .
*/
2008-04-15 15:15:35 +00:00
if ( rfc2190_version = = 0x00 ) {
2009-09-24 20:00:21 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " MODE A " ) ;
2014-09-30 20:59:17 +00:00
hdr_len = 4 ;
2008-04-15 14:52:15 +00:00
}
2008-04-15 15:15:35 +00:00
else if ( rfc2190_version = = 0x02 ) {
2009-09-24 20:00:21 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " MODE B " ) ;
2014-09-30 20:59:17 +00:00
hdr_len = 8 ;
2008-04-15 14:52:15 +00:00
}
2008-04-15 15:15:35 +00:00
else if ( rfc2190_version = = 0x03 ) {
2009-09-24 20:00:21 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " MODE C " ) ;
2014-09-30 20:59:17 +00:00
hdr_len = 12 ;
2008-04-15 14:52:15 +00:00
}
if ( tree ) {
2012-04-01 09:19:02 +00:00
ti = proto_tree_add_item ( tree , proto_rfc2190 , tvb , offset , hdr_len , ENC_NA ) ;
2008-04-15 15:15:35 +00:00
rfc2190_tree = proto_item_add_subtree ( ti , ett_rfc2190 ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
/* FBIT 1st octet, 1 bit */
2014-09-30 20:59:17 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_ftype , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
/* PBIT 1st octet, 1 bit */
2014-09-30 20:59:17 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_pbframes , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
/* SBIT 1st octet, 3 bits */
2014-09-30 20:59:17 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_sbit , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
/* EBIT 1st octet, 3 bits */
2014-09-30 20:59:17 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_ebit , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 14:52:15 +00:00
offset + + ;
2008-04-15 17:26:29 +00:00
/* SRC 2nd octet, 3 bits */
2014-09-30 20:59:17 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_srcformat , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
if ( rfc2190_version = = 0x00 ) { /* MODE A */
/* I flag, 1 bit */
2014-09-30 20:59:17 +00:00
proto_tree_add_bits_item ( rfc2190_tree , hf_rfc2190_picture_coding_type , tvb , ( offset < < 3 ) + 3 , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
/* U flag, 1 bit */
2014-09-30 20:59:17 +00:00
proto_tree_add_bits_item ( rfc2190_tree , hf_rfc2190_unrestricted_motion_vector , tvb , ( offset < < 3 ) + 4 , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
/* S flag, 1 bit */
2014-09-30 20:59:17 +00:00
proto_tree_add_bits_item ( rfc2190_tree , hf_rfc2190_syntax_based_arithmetic , tvb , ( offset < < 3 ) + 5 , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
/* A flag, 1 bit */
2014-09-30 20:59:17 +00:00
proto_tree_add_bits_item ( rfc2190_tree , hf_rfc2190_advanced_prediction , tvb , ( offset < < 3 ) + 6 , 1 , ENC_BIG_ENDIAN ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
/* Reserved 2nd octect, 1 bit + 3rd octect 3 bits */
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_r , tvb , offset , 2 , ( ( tvb_get_guint8 ( tvb , offset ) & 0x1 ) < < 3 ) + ( ( tvb_get_guint8 ( tvb , offset + 1 ) & 0xe0 ) > > 5 ) ) ;
offset + + ;
/* DBQ 3 octect, 2 bits */
2014-09-30 20:59:17 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_dbq , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
/* TRB 3 octect, 3 bits */
2014-09-30 20:59:17 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_trb , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
offset + + ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
/* TR 4 octect, 8 bits */
2015-05-22 02:20:29 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_tr , tvb , offset , 1 , ENC_NA ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
} else { /* MODE B or MODE C */
/* QUANT 2 octect, 5 bits */
2015-05-22 02:20:29 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_quant , tvb , offset , 1 , ENC_NA ) ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
/* GOBN 3 octect, 5 bits */
2015-05-22 02:20:29 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_gobn , tvb , offset , 1 , ENC_NA ) ;
2008-04-15 17:26:29 +00:00
/* MBA 3 octect, 3 bits + 4 octect 6 bits */
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_mba , tvb , offset , 2 , ( ( tvb_get_guint8 ( tvb , offset ) & 0x7 ) < < 6 ) + ( ( tvb_get_guint8 ( tvb , offset + 1 ) & 0xfc ) > > 2 ) ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
/* Reserved 4th octect, 2 bits */
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_r , tvb , offset , 1 , ( tvb_get_guint8 ( tvb , offset ) & 0x3 ) ) ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
/* I flag, 1 bit */
proto_tree_add_boolean ( rfc2190_tree , hf_rfc2190_picture_coding_type , tvb , offset , 1 , tvb_get_guint8 ( tvb , offset ) & 0x80 ) ;
/* U flag, 1 bit */
proto_tree_add_boolean ( rfc2190_tree , hf_rfc2190_unrestricted_motion_vector , tvb , offset , 1 , tvb_get_guint8 ( tvb , offset ) & 0x40 ) ;
/* S flag, 1 bit */
proto_tree_add_boolean ( rfc2190_tree , hf_rfc2190_syntax_based_arithmetic , tvb , offset , 1 , tvb_get_guint8 ( tvb , offset ) & 0x20 ) ;
/* A flag, 1 bit */
proto_tree_add_boolean ( rfc2190_tree , hf_rfc2190_advanced_prediction , tvb , offset , 1 , tvb_get_guint8 ( tvb , offset ) & 0x10 ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
/* HMV1 5th octect, 4 bits + 6th octect 3 bits*/
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_hmv1 , tvb , offset , 2 , ( ( tvb_get_guint8 ( tvb , offset ) & 0xf ) < < 3 ) + ( ( tvb_get_guint8 ( tvb , offset + 1 ) & 0xe0 ) > > 5 ) ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
/* VMV1 6th octect, 5 bits + 7th octect 2 bits*/
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_vmv1 , tvb , offset , 2 , ( ( tvb_get_guint8 ( tvb , offset ) & 0x1f ) < < 2 ) + ( ( tvb_get_guint8 ( tvb , offset + 1 ) & 0xc0 ) > > 6 ) ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
/* HMV2 7th octect, 6 bits + 8th octect 1 bit*/
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_hmv2 , tvb , offset , 2 , ( ( tvb_get_guint8 ( tvb , offset ) & 0x3f ) < < 1 ) + ( ( tvb_get_guint8 ( tvb , offset + 1 ) & 0xf0 ) > > 7 ) ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
/* VMV2 8th octect, 7 bits*/
2015-05-22 02:20:29 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_vmv2 , tvb , offset , 1 , ENC_NA ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
if ( rfc2190_version = = 0x03 ) { /* MODE C */
/* Reserved 9th to 11th octect, 8 + 8 + 3 bits */
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_rr , tvb , offset , 3 , ( tvb_get_guint8 ( tvb , offset ) < < 11 ) + ( tvb_get_guint8 ( tvb , offset + 1 ) < < 3 ) + ( ( tvb_get_guint8 ( tvb , offset + 2 ) & 0xe0 ) > > 5 ) ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
offset + = 2 ;
2008-04-15 14:52:15 +00:00
2008-04-15 17:26:29 +00:00
/* DBQ 11th octect, 2 bits */
2012-04-01 09:19:02 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_dbq , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2008-04-15 17:26:29 +00:00
/* TRB 11th octect, 3 bits */
2012-04-01 09:19:02 +00:00
proto_tree_add_item ( rfc2190_tree , hf_rfc2190_trb , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
/* TR 12th octect, 8 bits */
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_tr , tvb , offset , 1 , tvb_get_guint8 ( tvb , offset ) ) ;
2011-10-21 02:10:19 +00:00
2008-04-15 17:26:29 +00:00
offset + + ;
} /* end mode c */
} /* end not mode a */
} else {
switch ( rfc2190_version ) {
case 0x00 : /* MODE A */
offset + = 4 ;
break ;
case 0x01 : /* MODE B */
offset + = 8 ;
break ;
case 0x02 : /* MODE C */
offset + = 12 ;
break ;
}
}
2011-10-21 02:10:19 +00:00
2008-04-15 14:52:15 +00:00
/* The rest of the packet is the H.263 stream */
2012-04-01 09:19:02 +00:00
next_tvb = tvb_new_subset_remaining ( tvb , offset ) ;
2008-04-15 14:52:15 +00:00
call_dissector ( h263_handle , next_tvb , pinfo , tree ) ;
}
void
2008-04-15 15:15:35 +00:00
proto_reg_handoff_rfc2190 ( void )
2008-04-15 14:52:15 +00:00
{
2014-09-30 20:59:17 +00:00
dissector_handle_t rfc2190_handle ;
2008-04-15 14:52:15 +00:00
2014-09-30 20:59:17 +00:00
rfc2190_handle = find_dissector ( " rfc2190 " ) ;
dissector_add_uint ( " rtp.pt " , PT_H263 , rfc2190_handle ) ;
dissector_add_uint ( " iax2.codec " , AST_FORMAT_H263 , rfc2190_handle ) ;
2008-04-15 14:52:15 +00:00
2014-09-30 20:59:17 +00:00
h263_handle = find_dissector ( " h263data " ) ;
2008-04-15 14:52:15 +00:00
}
void
2008-04-15 15:15:35 +00:00
proto_register_rfc2190 ( void )
2008-04-15 14:52:15 +00:00
{
2014-09-30 20:59:17 +00:00
static hf_register_info hf [ ] = {
{
& hf_rfc2190_ftype ,
{
" F " ,
" rfc2190.ftype " ,
FT_BOOLEAN ,
8 ,
NULL ,
0x80 ,
" Indicates the mode of the payload header (MODE A or B/C) " , HFILL
}
} ,
{
& hf_rfc2190_pbframes ,
{
" p/b frame " ,
" rfc2190.pbframes " ,
FT_BOOLEAN ,
8 ,
NULL ,
0x40 ,
" Optional PB-frames mode as defined by H.263 (MODE C) " , HFILL
}
} ,
{
& hf_rfc2190_sbit ,
{
" Start bit position " ,
" rfc2190.sbit " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x38 ,
" Start bit position specifies number of most significant bits that shall be ignored in the first data byte. " , HFILL
}
} ,
{
& hf_rfc2190_ebit ,
{
" End bit position " ,
" rfc2190.ebit " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x7 ,
" End bit position specifies number of least significant bits that shall be ignored in the last data byte. " , HFILL
}
} ,
{
& hf_rfc2190_srcformat ,
{
" SRC format " ,
" rfc2190.srcformat " ,
FT_UINT8 ,
BASE_DEC ,
VALS ( h263_srcformat_vals ) ,
0xe0 ,
" Source format specifies the resolution of the current picture. " , HFILL
}
} ,
{
& hf_rfc2190_picture_coding_type ,
{
" Inter-coded frame " ,
" rfc2190.picture_coding_type " ,
FT_BOOLEAN ,
8 ,
NULL ,
0x0 ,
" Picture coding type, intra-coded (false) or inter-coded (true) " , HFILL
}
} ,
{
& hf_rfc2190_unrestricted_motion_vector ,
{
" Motion vector " ,
" rfc2190.unrestricted_motion_vector " ,
FT_BOOLEAN ,
8 ,
NULL ,
0x0 ,
" Unrestricted Motion Vector option for current picture " , HFILL
}
} ,
{
& hf_rfc2190_syntax_based_arithmetic ,
{
" Syntax-based arithmetic coding " ,
" rfc2190.syntax_based_arithmetic " ,
FT_BOOLEAN ,
8 ,
NULL ,
0x0 ,
" Syntax-based Arithmetic Coding option for current picture " , HFILL
}
} ,
{
& hf_rfc2190_advanced_prediction ,
{
" Advanced prediction option " ,
" rfc2190.advanced_prediction " ,
FT_BOOLEAN ,
8 ,
NULL ,
0x0 ,
" Advanced Prediction option for current picture " , HFILL
}
} ,
{
& hf_rfc2190_dbq ,
{
" Differential quantization parameter " ,
" rfc2190.dbq " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x18 ,
" Differential quantization parameter used to calculate quantizer for the B frame based on quantizer for the P frame, when PB-frames option is used. " , HFILL
}
} ,
{
& hf_rfc2190_trb ,
{
" Temporal Reference for B frames " ,
" rfc2190.trb " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x07 ,
" Temporal Reference for the B frame as defined by H.263 " , HFILL
}
} ,
{
& hf_rfc2190_tr ,
{
" Temporal Reference for P frames " ,
" rfc2190.tr " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
" Temporal Reference for the P frame as defined by H.263 " , HFILL
}
} ,
{
& hf_rfc2190_quant ,
{
" Quantizer " ,
" rfc2190.quant " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
2015-05-22 02:20:29 +00:00
0x1F ,
2014-09-30 20:59:17 +00:00
" Quantization value for the first MB coded at the starting of the packet. " , HFILL
}
} ,
{
& hf_rfc2190_gobn ,
{
" GOB Number " ,
" rfc2190.gobn " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
2015-05-22 02:20:29 +00:00
0xF8 ,
2014-09-30 20:59:17 +00:00
" GOB number in effect at the start of the packet. " , HFILL
}
} ,
{
& hf_rfc2190_mba ,
{
" Macroblock address " ,
" rfc2190.mba " ,
FT_UINT16 ,
BASE_DEC ,
NULL ,
0x0 ,
" The address within the GOB of the first MB in the packet, counting from zero in scan order. " , HFILL
}
} ,
{
& hf_rfc2190_hmv1 ,
{
" Horizontal motion vector 1 " ,
" rfc2190.hmv1 " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
" Horizontal motion vector predictor for the first MB in this packet " , HFILL
}
} ,
{
& hf_rfc2190_vmv1 ,
{
" Vertical motion vector 1 " ,
" rfc2190.vmv1 " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
" Vertical motion vector predictor for the first MB in this packet " , HFILL
}
} ,
{
& hf_rfc2190_hmv2 ,
{
" Horizontal motion vector 2 " ,
" rfc2190.hmv2 " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
" Horizontal motion vector predictor for block number 3 in the first MB in this packet when four motion vectors are used with the advanced prediction option. " , HFILL
}
} ,
{
& hf_rfc2190_vmv2 ,
{
" Vertical motion vector 2 " ,
" rfc2190.vmv2 " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
2015-05-22 02:20:29 +00:00
0x7F ,
2014-09-30 20:59:17 +00:00
" Vertical motion vector predictor for block number 3 in the first MB in this packet when four motion vectors are used with the advanced prediction option. " , HFILL
}
} ,
{
& hf_rfc2190_r ,
{
" Reserved field " ,
" rfc2190.r " ,
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
" Reserved field that should contain zeroes " , HFILL
}
} ,
{
& hf_rfc2190_rr ,
{
" Reserved field 2 " ,
" rfc2190.rr " ,
FT_UINT16 ,
BASE_DEC ,
NULL ,
0x0 ,
" Reserved field that should contain zeroes " , HFILL
}
} ,
} ;
static gint * ett [ ] = {
& ett_rfc2190 ,
} ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
proto_rfc2190 = proto_register_protocol ( " H.263 RTP Payload header (RFC2190) " ,
" RFC2190 " , " rfc2190 " ) ;
proto_register_field_array ( proto_rfc2190 , hf , array_length ( hf ) ) ;
register_dissector ( " rfc2190 " , dissect_rfc2190 , proto_rfc2190 ) ;
2008-04-15 14:52:15 +00:00
}
2014-09-30 20:59:17 +00:00
/*
* Editor modelines - http : //www.wireshark.org/tools/modelines.html
*
* Local variables :
* c - basic - offset : 4
* tab - width : 8
* indent - tabs - mode : nil
* End :
*
* vi : set shiftwidth = 4 tabstop = 8 expandtab :
* : indentSize = 4 : tabSize = 8 : noTabs = true :
*/