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:
Annex I (Advanced INTRA Coding mode) improves error resilience and compression efficiency.
Annex J (Deblocking Filter mode) improves compression efficiency.
Annex K (Slice Structured mode without Rectangular Slice submode) improves error resilience.
Annex T (Modified Quantization mode) improves compression efficiency.
These annexes characterize the Version 2 (H.263+) Interactive and Streaming Wireless Profile, designated as profile 3 in the H.263 Annex X Recommendation.
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.
The H.263+ profile 3 parameters for the 3G-324M Interface are specified in the MH263CAPABILITY and MH263CAPABILITYOPTIONS structures in avoptions.h.
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.
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.