OSCL_EXPORT_REF int16 iGetM4VConfigInfo(uint8 *buffer, int32 length, int32 *width, int32 *height, int32 *display_width, int32 *display_height)
{
    int16 status;
    mp4StreamType psBits;
    psBits.data = buffer;
    psBits.numBytes = length;
    psBits.bitBuf = 0;
    psBits.bitPos = 32;
    psBits.bytePos = 0;
    psBits.dataBitPos = 0;
    *width = *height = *display_height = *display_width = 0;

    if (length == 0)
    {
        return MP4_INVALID_VOL_PARAM;
    }
    int32 profilelevel = 0; // dummy value discarded here
    /* Mobile Media Lab. Start */
	int32 is_valid = 0;
	uint32 tmp;
	/* 
	check input buffer has visual_object_sequence_start_code or 
	visual_object_start_code or video_object_start_code or
	video_object_layer_start_code or short video header 
	*/
	ShowBits(&psBits, 32, &tmp);
	if (tmp == VISUAL_OBJECT_SEQUENCE_START_CODE || 
		tmp == VISUAL_OBJECT_START_CODE || 
		(tmp >= 0x0100 && tmp <= 0x011F) || /* video_object_start_code */
		((tmp & 0x20) == 0x20))				/* video_object_layer_start_code */
	
	{
		/* check MPEG-4 start code */
		is_valid = 1;
	}
	else 
	{
		/* check short video header */
        ShowBits(&psBits, SHORT_VIDEO_START_MARKER_LENGTH, &tmp);
        if (tmp == SHORT_VIDEO_START_MARKER) is_valid = 1;
	}

	if (is_valid == 0)
	{
		/* this stream may have a garbage data */
		return MP4_INVALID_VOL_PARAM;
	}
	/* Mobile Media Lab. End */
    status = iDecodeVOLHeader(&psBits, width, height, display_width, display_height, &profilelevel);
    return status;
}
OSCL_EXPORT_REF int16 iGetM4VConfigInfo(uint8 *buffer, int32 length, int32 *width, int32 *height, int32 *display_width, int32 *display_height)
{
    int16 status;
    mp4StreamType psBits;
    psBits.data = buffer;
    psBits.numBytes = length;
    psBits.bitBuf = 0;
    psBits.bitPos = 32;
    psBits.bytePos = 0;
    psBits.dataBitPos = 0;
    *width = *height = *display_height = *display_width = 0;

    if (length == 0)
    {
        return MP4_INVALID_VOL_PARAM;
    }
    int32 profilelevel = 0; // dummy value discarded here
    status = iDecodeVOLHeader(&psBits, width, height, display_width, display_height, &profilelevel);
    return status;
}