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 <glib.h>
# 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 */
2008-04-15 15:15:35 +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 ;
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
{
proto_item * ti = NULL ;
2012-04-01 09:19:02 +00:00
proto_tree * rfc2190_tree = NULL ;
int offset = 0 ;
unsigned int rfc2190_version = 0 ;
2008-04-15 14:52:15 +00:00
tvbuff_t * next_tvb ;
2012-04-01 09:19:02 +00:00
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
2012-04-01 09:19:02 +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 " ) ;
2012-04-01 09:19:02 +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 " ) ;
2012-04-01 09:19:02 +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 " ) ;
2012-04-01 09:19:02 +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 */
2012-04-01 09:19:02 +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 */
2012-04-01 09:19:02 +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 */
2012-04-01 09:19:02 +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 */
2012-04-01 09:19:02 +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 */
2012-04-01 09:19:02 +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 */
2012-04-01 09:19:02 +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 */
2012-04-01 09:19:02 +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 */
2012-04-01 09:19:02 +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 */
2012-04-01 09:19:02 +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 */
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 3 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 ) ;
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 */
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 + + ;
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 */
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_quant , tvb , offset , 1 , tvb_get_guint8 ( tvb , offset ) & 0x1f ) ;
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 */
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_gobn , tvb , offset , 1 , ( tvb_get_guint8 ( tvb , offset ) & 0xf8 ) > > 3 ) ;
/* 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*/
proto_tree_add_uint ( rfc2190_tree , hf_rfc2190_vmv2 , tvb , offset , 1 , tvb_get_guint8 ( tvb , offset ) & 0x7f ) ;
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
{
dissector_handle_t rfc2190_handle ;
2008-04-15 15:15:35 +00:00
rfc2190_handle = find_dissector ( " rfc2190 " ) ;
2010-12-20 05:35:29 +00:00
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
h263_handle = find_dissector ( " h263data " ) ;
}
void
2008-04-15 15:15:35 +00:00
proto_register_rfc2190 ( void )
2008-04-15 14:52:15 +00:00
{
static hf_register_info hf [ ] =
{
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_ftype ,
2008-04-15 14:52:15 +00:00
{
" F " ,
2008-04-15 15:15:35 +00:00
" rfc2190.ftype " ,
2008-04-15 14:52:15 +00:00
FT_BOOLEAN ,
2012-04-01 09:19:02 +00:00
8 ,
2008-04-15 14:52:15 +00:00
NULL ,
2012-04-01 09:19:02 +00:00
0x80 ,
2008-04-15 14:52:15 +00:00
" Indicates the mode of the payload header (MODE A or B/C) " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_pbframes ,
2008-04-15 14:52:15 +00:00
{
" p/b frame " ,
2008-04-15 15:15:35 +00:00
" rfc2190.pbframes " ,
2008-04-15 14:52:15 +00:00
FT_BOOLEAN ,
2012-04-01 09:19:02 +00:00
8 ,
2008-04-15 14:52:15 +00:00
NULL ,
2012-04-01 09:19:02 +00:00
0x40 ,
2008-04-15 14:52:15 +00:00
" Optional PB-frames mode as defined by H.263 (MODE C) " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_sbit ,
2008-04-15 14:52:15 +00:00
{
" Start bit position " ,
2008-04-15 15:15:35 +00:00
" rfc2190.sbit " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
2012-04-01 09:19:02 +00:00
0x38 ,
2008-04-15 14:52:15 +00:00
" Start bit position specifies number of most significant bits that shall be ignored in the first data byte. " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_ebit ,
2008-04-15 14:52:15 +00:00
{
" End bit position " ,
2008-04-15 15:15:35 +00:00
" rfc2190.ebit " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
2012-04-01 09:19:02 +00:00
0x7 ,
2008-04-15 14:52:15 +00:00
" End bit position specifies number of least significant bits that shall be ignored in the last data byte. " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_srcformat ,
2008-04-15 14:52:15 +00:00
{
" SRC format " ,
2008-04-15 15:15:35 +00:00
" rfc2190.srcformat " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
VALS ( h263_srcformat_vals ) ,
2012-04-01 09:19:02 +00:00
0xe0 ,
2008-04-15 14:52:15 +00:00
" Source format specifies the resolution of the current picture. " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_picture_coding_type ,
2008-04-15 14:52:15 +00:00
{
" Inter-coded frame " ,
2008-04-15 15:15:35 +00:00
" rfc2190.picture_coding_type " ,
2008-04-15 14:52:15 +00:00
FT_BOOLEAN ,
2012-04-01 09:19:02 +00:00
8 ,
2008-04-15 14:52:15 +00:00
NULL ,
0x0 ,
" Picture coding type, intra-coded (false) or inter-coded (true) " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_unrestricted_motion_vector ,
2008-04-15 14:52:15 +00:00
{
" Motion vector " ,
2008-04-15 15:15:35 +00:00
" rfc2190.unrestricted_motion_vector " ,
2008-04-15 14:52:15 +00:00
FT_BOOLEAN ,
2012-04-01 09:19:02 +00:00
8 ,
2008-04-15 14:52:15 +00:00
NULL ,
0x0 ,
" Unrestricted Motion Vector option for current picture " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_syntax_based_arithmetic ,
2008-04-15 14:52:15 +00:00
{
" Syntax-based arithmetic coding " ,
2008-04-15 15:15:35 +00:00
" rfc2190.syntax_based_arithmetic " ,
2008-04-15 14:52:15 +00:00
FT_BOOLEAN ,
2012-04-01 09:19:02 +00:00
8 ,
2008-04-15 14:52:15 +00:00
NULL ,
0x0 ,
" Syntax-based Arithmetic Coding option for current picture " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_advanced_prediction ,
2008-04-15 14:52:15 +00:00
{
" Advanced prediction option " ,
2008-04-15 15:15:35 +00:00
" rfc2190.advanced_prediction " ,
2008-04-15 14:52:15 +00:00
FT_BOOLEAN ,
2012-04-01 09:19:02 +00:00
8 ,
2008-04-15 14:52:15 +00:00
NULL ,
0x0 ,
" Advanced Prediction option for current picture " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_dbq ,
2008-04-15 14:52:15 +00:00
{
" Differential quantization parameter " ,
2008-04-15 15:15:35 +00:00
" rfc2190.dbq " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
2012-04-01 09:19:02 +00:00
0x18 ,
2008-04-15 14:52:15 +00:00
" 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
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_trb ,
2008-04-15 14:52:15 +00:00
{
" Temporal Reference for B frames " ,
2008-04-15 15:15:35 +00:00
" rfc2190.trb " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
2012-04-01 09:19:02 +00:00
0x07 ,
2008-04-15 14:52:15 +00:00
" Temporal Reference for the B frame as defined by H.263 " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_tr ,
2008-04-15 14:52:15 +00:00
{
" Temporal Reference for P frames " ,
2008-04-15 15:15:35 +00:00
" rfc2190.tr " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
" Temporal Reference for the P frame as defined by H.263 " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_quant ,
2008-04-15 14:52:15 +00:00
{
" Quantizer " ,
2008-04-15 15:15:35 +00:00
" rfc2190.quant " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
" Quantization value for the first MB coded at the starting of the packet. " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_gobn ,
2008-04-15 14:52:15 +00:00
{
" GOB Number " ,
2008-04-15 15:15:35 +00:00
" rfc2190.gobn " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
" GOB number in effect at the start of the packet. " , HFILL
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_mba ,
2008-04-15 14:52:15 +00:00
{
" Macroblock address " ,
2008-04-15 15:15:35 +00:00
" rfc2190.mba " ,
2008-04-15 14:52:15 +00:00
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
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_hmv1 ,
2008-04-15 14:52:15 +00:00
{
" Horizontal motion vector 1 " ,
2008-04-15 15:15:35 +00:00
" rfc2190.hmv1 " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
" Horizontal motion vector predictor for the first MB in this packet " , HFILL
2008-04-15 14:52:15 +00:00
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_vmv1 ,
2008-04-15 14:52:15 +00:00
{
" Vertical motion vector 1 " ,
2008-04-15 15:15:35 +00:00
" rfc2190.vmv1 " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
" Vertical motion vector predictor for the first MB in this packet " , HFILL
2008-04-15 14:52:15 +00:00
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_hmv2 ,
2008-04-15 14:52:15 +00:00
{
" Horizontal motion vector 2 " ,
2008-04-15 15:15:35 +00:00
" rfc2190.hmv2 " ,
2008-04-15 14:52:15 +00:00
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
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_vmv2 ,
2008-04-15 14:52:15 +00:00
{
" Vertical motion vector 2 " ,
2008-04-15 15:15:35 +00:00
" rfc2190.vmv2 " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
" 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
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_r ,
2008-04-15 14:52:15 +00:00
{
" Reserved field " ,
2008-04-15 15:15:35 +00:00
" rfc2190.r " ,
2008-04-15 14:52:15 +00:00
FT_UINT8 ,
BASE_DEC ,
NULL ,
0x0 ,
2008-12-20 00:09:02 +00:00
" Reserved field that should contain zeroes " , HFILL
2008-04-15 14:52:15 +00:00
}
} ,
{
2008-04-15 15:15:35 +00:00
& hf_rfc2190_rr ,
2008-04-15 14:52:15 +00:00
{
" Reserved field 2 " ,
2008-04-15 15:15:35 +00:00
" rfc2190.rr " ,
2008-04-15 14:52:15 +00:00
FT_UINT16 ,
BASE_DEC ,
NULL ,
0x0 ,
" Reserved field that should contain zeroes " , HFILL
}
} ,
} ;
static gint * ett [ ] =
{
2008-04-15 15:15:35 +00:00
& ett_rfc2190 ,
2008-04-15 14:52:15 +00:00
} ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
2008-04-15 15:15:35 +00:00
proto_rfc2190 = proto_register_protocol ( " H.263 RTP Payload header (RFC2190) " ,
" RFC2190 " , " rfc2190 " ) ;
2008-04-15 14:52:15 +00:00
2008-04-15 15:15:35 +00:00
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
}