lbxdeltastr.h
上传用户:lctgjx
上传日期:2022-06-04
资源大小:8887k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /* $Xorg: lbxdeltastr.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
  2. /*
  3.  * Copyright 1993 Network Computing Devices
  4.  *
  5.  * Permission to use, copy, modify, distribute, and sell this software and its
  6.  * documentation for any purpose is hereby granted without fee, provided that
  7.  * the above copyright notice appear in all copies and that both that
  8.  * copyright notice and this permission notice appear in supporting
  9.  * documentation, and that the name of NCD. not be used in advertising or
  10.  * publicity pertaining to distribution of the software without specific,
  11.  * written prior permission.  NCD. makes no representations about the
  12.  * suitability of this software for any purpose.  It is provided "as is"
  13.  * without express or implied warranty.
  14.  *
  15.  * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
  16.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
  17.  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  18.  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
  19.  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
  20.  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  21.  *
  22.  */
  23. #ifndef LBX_DELTA_STRUCT_H
  24. #define LBX_DELTA_STRUCT_H
  25. #define MIN_CACHEABLE_LEN 8
  26. #define DELTA_CACHEABLE(pcache, len)
  27. ((len) > MIN_CACHEABLE_LEN && (len) <= (pcache)->maxDeltasize)
  28. /*
  29.  * An entry in the delta compactor cache
  30.  */
  31. typedef struct _LBXDeltaElem {
  32.     int length;
  33.     unsigned char *buf;
  34. } LBXDeltaElemRec, *LBXDeltaElemPtr;
  35. /*
  36.  * Delta compactor cache
  37.  */
  38. typedef struct _LBXDeltas {
  39.     unsigned short nDeltas;
  40.     unsigned short maxDeltasize;
  41.     LBXDeltaElemPtr deltas;
  42.     unsigned short nextDelta;
  43.     unsigned short activeDeltas; /* only needed for outgoing */
  44. } LBXDeltasRec, *LBXDeltasPtr;
  45. /*
  46.  * Motion delta cache
  47.  */
  48. typedef struct {
  49.     BYTE swapped;
  50.     BYTE detail;
  51.     CARD16 sequenceNumber B16;
  52.     Time time B32;
  53.     Window root B32, event B32, child B32;
  54.     INT16 rootX B16, rootY B16, eventX B16, eventY B16;
  55.     KeyButMask state B16;
  56.     BOOL sameScreen;
  57. } lbxMotionCache;
  58. /*
  59.  * Motion delta events
  60.  */
  61. typedef struct {
  62.     BYTE type; /* always eventBase + LbxQuickMotionDeltaEvent */
  63.     CARD8 deltaTime;
  64.     INT8 deltaX;
  65.     INT8 deltaY;
  66. } lbxQuickMotionDeltaEvent;
  67. #define sz_lbxQuickMotionDeltaEvent 4
  68. typedef struct {
  69.     BYTE type; /* always eventBase + LbxEvent */
  70.     BYTE lbxType; /* LbxMotionDeltaEvent */
  71.     INT8 deltaX;
  72.     INT8 deltaY;
  73.     CARD16 deltaTime B16;
  74.     CARD16 deltaSequence B16;
  75. } lbxMotionDeltaEvent;
  76. #define sz_lbxMotionDeltaEvent 8
  77. extern int LBXInitDeltaCache ( LBXDeltasPtr pcache, int nDeltas, 
  78.        int maxDeltasize );
  79. extern void LBXFreeDeltaCache ( LBXDeltasPtr pcache );
  80. extern int LBXDeltaMinDiffs ( LBXDeltasPtr pcache, unsigned char *inmsg, 
  81.       int inmsglen, int maxdiff, int *pindex );
  82. extern void LBXEncodeDelta ( LBXDeltasPtr pcache, unsigned char *inmsg, 
  83.      int ndiff, int index, unsigned char *buf );
  84. extern int LBXDecodeDelta ( LBXDeltasPtr pcache, xLbxDiffItem *deltas, 
  85.     int ndiff, int index, unsigned char **buf );
  86. extern void LBXAddDeltaOut ( LBXDeltasPtr pcache, unsigned char *inmsg, 
  87.      int inmsglen );
  88. extern void LBXAddDeltaIn ( LBXDeltasPtr pcache, unsigned char *inmsg, 
  89.     int inmsglen );
  90. #endif /* LBX_DELTA_STRUCT_H */