Skip to content

Commit

Permalink
Tight: export SendCompressedData and SendTightHeader functions
Browse files Browse the repository at this point in the history
These functions can be used to send already compressed jpegs to a
client, circumventing the usual rect/region update methods which
operate on a raw rgb framebuffer. Rename the functions with the usual
rfb prefix and add the prototypes in rfb.h.

Signed-off-by: Eddie James <[email protected]>
  • Loading branch information
eddiejames committed Jun 20, 2018
1 parent a67e22d commit dd873fc
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 14 deletions.
25 changes: 11 additions & 14 deletions libvncserver/tight.c
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,6 @@ static rfbBool CheckSolidTile32 (rfbClientPtr cl, int x, int y, int w, int h,

static rfbBool SendRectSimple (rfbClientPtr cl, int x, int y, int w, int h);
static rfbBool SendSubrect (rfbClientPtr cl, int x, int y, int w, int h);
static rfbBool SendTightHeader (rfbClientPtr cl, int x, int y, int w, int h);

static rfbBool SendSolidRect (rfbClientPtr cl);
static rfbBool SendMonoRect (rfbClientPtr cl, int x, int y, int w, int h);
Expand All @@ -200,8 +199,6 @@ static rfbBool SendFullColorRect (rfbClientPtr cl, int x, int y, int w, int h);

static rfbBool CompressData (rfbClientPtr cl, int streamId, int dataLen,
int zlibLevel, int zlibStrategy);
static rfbBool SendCompressedData (rfbClientPtr cl, char *buf,
int compressedLen);

static void FillPalette8 (int count);
static void FillPalette16 (int count);
Expand Down Expand Up @@ -430,7 +427,7 @@ SendRectEncodingTight(rfbClientPtr cl,

/* Send solid-color rectangle. */

if (!SendTightHeader(cl, x_best, y_best, w_best, h_best))
if (!rfbSendTightHeader(cl, x_best, y_best, w_best, h_best))
return FALSE;

fbptr = (cl->scaledScreen->frameBuffer +
Expand Down Expand Up @@ -683,7 +680,7 @@ SendSubrect(rfbClientPtr cl,
return FALSE;
}

if (!SendTightHeader(cl, x, y, w, h))
if (!rfbSendTightHeader(cl, x, y, w, h))
return FALSE;

fbptr = (cl->scaledScreen->frameBuffer
Expand Down Expand Up @@ -767,8 +764,8 @@ SendSubrect(rfbClientPtr cl,
return success;
}

static rfbBool
SendTightHeader(rfbClientPtr cl,
rfbBool
rfbSendTightHeader(rfbClientPtr cl,
int x,
int y,
int w,
Expand Down Expand Up @@ -1044,7 +1041,7 @@ CompressData(rfbClientPtr cl,
}

if (zlibLevel == 0)
return SendCompressedData (cl, tightBeforeBuf, dataLen);
return rfbSendCompressedDataTight(cl, tightBeforeBuf, dataLen);

pz = &cl->zsStruct[streamId];

Expand Down Expand Up @@ -1083,12 +1080,12 @@ CompressData(rfbClientPtr cl,
return FALSE;
}

return SendCompressedData(cl, tightAfterBuf,
tightAfterBufSize - pz->avail_out);
return rfbSendCompressedDataTight(cl, tightAfterBuf,
tightAfterBufSize - pz->avail_out);
}

static rfbBool SendCompressedData(rfbClientPtr cl, char *buf,
int compressedLen)
rfbBool rfbSendCompressedDataTight(rfbClientPtr cl, char *buf,
int compressedLen)
{
int i, portionLen;

Expand Down Expand Up @@ -1665,7 +1662,7 @@ SendJpegRect(rfbClientPtr cl, int x, int y, int w, int h, int quality)
cl->updateBuf[cl->ublen++] = (char)(rfbTightJpeg << 4);
rfbStatRecordEncodingSentAdd(cl, cl->tightEncoding, 1);

return SendCompressedData(cl, tightAfterBuf, (int)size);
return rfbSendCompressedDataTight(cl, tightAfterBuf, (int)size);
}

static void
Expand Down Expand Up @@ -1899,6 +1896,6 @@ static rfbBool SendPngRect(rfbClientPtr cl, int x, int y, int w, int h) {
rfbStatRecordEncodingSentAdd(cl, cl->tightEncoding, 1);

/* rfbLog("<< SendPngRect\n"); */
return SendCompressedData(cl, tightAfterBuf, pngDstDataLen);
return rfbSendCompressedDataTight(cl, tightAfterBuf, pngDstDataLen);
}
#endif
2 changes: 2 additions & 0 deletions rfb/rfb.h
Original file line number Diff line number Diff line change
Expand Up @@ -895,6 +895,8 @@ extern rfbBool rfbTightDisableGradient;
extern int rfbNumCodedRectsTight(rfbClientPtr cl, int x,int y,int w,int h);

extern rfbBool rfbSendRectEncodingTight(rfbClientPtr cl, int x,int y,int w,int h);
extern rfbBool rfbSendTightHeader(rfbClientPtr cl, int x, int y, int w, int h);
extern rfbBool rfbSendCompressedDataTight(rfbClientPtr cl, char *buf, int compressedLen);

#if defined(LIBVNCSERVER_HAVE_LIBPNG)
extern rfbBool rfbSendRectEncodingTightPng(rfbClientPtr cl, int x,int y,int w,int h);
Expand Down

0 comments on commit dd873fc

Please sign in to comment.