Negotiating H.263+ profile 3

As documented in 3GPP TR 26.911, optional annexes of ITU-T Recommendation H.263 are useful for improving the compression efficiency and error resilience of the codec. 3GPP recommends that an ITU-T Recommendation H.263 video decoder support the following annexes:

These annexes characterize the Version 2 (H.263+) Interactive and Streaming Wireless Profile, designated as profile 3 in the H.263 Annex X Recommendation.

3G-324M Interface support for H.263+ profile 3

The 3G-324M Interface supports H.263+ profile 3. To enable H.263+ profile 3 in a Video Access application, set the bit_mask field in the MH263CAPABILITY structure to h263_profile3_enabled (0x0001). The H.324M Middleware then negotiates with the remote terminal to see if it also supports H.263+ profile 3:

If the remote terminal...

Then the H.324M Middleware

Supports H.263+ profile 3

Uses the H.263+ profile 3 codec.

Does not support H.263_ profile 3

 Falls back to H.263 baseline (profile 0).

The application can obtain the outcome of the H.263 negotiation by checking the value of the bit_mask field in the MH263CAPABILITYOPTIONS structure. If h263_profile3_enabled (0x0001) is set, an H.263+ profile 3 decoder is required to decode the video stream sent by the peer. The application can then check the advancedIntraCodingMode, deblockingFilterMode, slicesInOrder_NonRect, and modifiedQuantizationMode fields to find out which H.323 annexes are used by the remote terminal.

For more information, see MH263CAPABILITYOPTIONS structure.

Note: The application must use RFC 2429 RTP packetization to transport H.263+ profile 3 video. RFC 2190 cannot be used for this purpose.

H.263+ profile 3 parameters

The H.263+ profile 3 parameters for the 3G-324M Interface are specified in the MH263CAPABILITY and MH263CAPABILITYOPTIONS structures in avoptions.h.

MH263CAPABILITY structure

The MH263CAPABILITY structure defines the H.324M local terminal capabilities for the H.263 codec. Set the bit_mask field to h263_profile3_enabled (0x0001) to enable H.263+ profile 3:

typedef struct _MH263CAPABILITY
{
    unsigned short  bit_mask;

....

#define h263_profile3_enabled               0x0001

...
}

MH263CAPABILITY is a substructure to the MEDIA_UNION structure, which itself is a substructure to the H324_LCD structure and the H324_TERM_CAPS structure. For more information, see H324_LCD or H324_TERM_CAPS.

MH263CAPABILITYOPTIONS structure

The MH263CAPABILITYOPTIONS structure enables the application to check which H.263+ profile 3 annex (I, J, K, or T) is used by the remote terminal, if H.263+ profile 3 codec was negotiated:

typedef struct MH263CAPABILITYOPTIONS
{
     unsigned int bit_mask;
     H245_BOOL advancedIntraCodingMode;      // Annex I
     H245_BOOL deblockingFilterMode;         // Annex J
     H245_BOOL improvedPBFramesMode;
     H245_BOOL unlimitedMotionVectors;
     
     H245_BOOL fullPictureFreeze;
     H245_BOOL partialPictureFreezeAndRelease;
     H245_BOOL resizingPartPicFreezeAndRelease;
     H245_BOOL fullPictureSnapshot;
     H245_BOOL partialPictureSnapshot;
     H245_BOOL videoSegmentTagging;
     H245_BOOL progressiveRefinement;
     H245_BOOL dynamicPictureResizingByFour;
     H245_BOOL dynamicPictureResizingSixteenthPel;
     H245_BOOL dynamicWarpingHalfPel;
     H245_BOOL dynamicWarpingSixteenthPel;
     H245_BOOL independentSegmentDecoding;
     H245_BOOL slicesInOrder_NonRect;        // Annex K
     H245_BOOL slicesInOrder_Rect;
     H245_BOOL slicesNoOrder_NonRect;
     H245_BOOL slicesNoOrder_Rect;
     H245_BOOL alternateInterVLCMode;
     H245_BOOL modifiedQuantizationMode;     // Annex T
     H245_BOOL reducedResolutionUpdate;
} MH263CAPABILITYOPTIONS;

MH263CAPABILITYOPTIONS is a substructure to the H324_LCD structure, which is carried with the video OLC event (H324EVN_LCD). For more information, see H324_LCD.