FreeRDP
progressive.c File Reference
#include <winpr/crt.h>
#include <winpr/print.h>
#include <winpr/bitstream.h>
#include <freerdp/primitives.h>
#include <freerdp/codec/color.h>
#include <freerdp/codec/progressive.h>
#include <freerdp/codec/region.h>
#include <freerdp/log.h>
#include "rfx_differential.h"
#include "rfx_quantization.h"
#include "rfx_dwt.h"
#include "rfx_rlgr.h"
#include "progressive.h"

Macros

#define TAG   FREERDP_TAG("codec.progressive")
 

Functions

static const char * progressive_get_block_type_string (UINT16 blockType)
 
static INLINE void progressive_component_codec_quant_read (wStream *s, RFX_COMPONENT_CODEC_QUANT *quantVal)
 
static INLINE void progressive_rfx_quant_ladd (RFX_COMPONENT_CODEC_QUANT *q, int val)
 
static INLINE void progressive_rfx_quant_add (const RFX_COMPONENT_CODEC_QUANT *q1, const RFX_COMPONENT_CODEC_QUANT *q2, RFX_COMPONENT_CODEC_QUANT *dst)
 
static INLINE void progressive_rfx_quant_lsub (RFX_COMPONENT_CODEC_QUANT *q, int val)
 
static INLINE void progressive_rfx_quant_sub (const RFX_COMPONENT_CODEC_QUANT *q1, const RFX_COMPONENT_CODEC_QUANT *q2, RFX_COMPONENT_CODEC_QUANT *dst)
 
static INLINE BOOL progressive_rfx_quant_lcmp_less_equal (const RFX_COMPONENT_CODEC_QUANT *q, int val)
 
static INLINE BOOL progressive_rfx_quant_cmp_less_equal (const RFX_COMPONENT_CODEC_QUANT *q1, const RFX_COMPONENT_CODEC_QUANT *q2)
 
static INLINE BOOL progressive_rfx_quant_lcmp_greater_equal (const RFX_COMPONENT_CODEC_QUANT *q, int val)
 
static INLINE BOOL progressive_rfx_quant_cmp_greater_equal (const RFX_COMPONENT_CODEC_QUANT *q1, const RFX_COMPONENT_CODEC_QUANT *q2)
 
static INLINE BOOL progressive_rfx_quant_cmp_equal (const RFX_COMPONENT_CODEC_QUANT *q1, const RFX_COMPONENT_CODEC_QUANT *q2)
 
static INLINE BOOL progressive_set_surface_data (PROGRESSIVE_CONTEXT *progressive, UINT16 surfaceId, void *pData)
 
static INLINE PROGRESSIVE_SURFACE_CONTEXT * progressive_get_surface_data (PROGRESSIVE_CONTEXT *progressive, UINT16 surfaceId)
 
static void progressive_tile_free (RFX_PROGRESSIVE_TILE *tile)
 
static void progressive_surface_context_free (PROGRESSIVE_SURFACE_CONTEXT *surface)
 
static INLINE BOOL progressive_tile_allocate (RFX_PROGRESSIVE_TILE *tile)
 
static PROGRESSIVE_SURFACE_CONTEXT * progressive_surface_context_new (UINT16 surfaceId, UINT32 width, UINT32 height)
 
static BOOL progressive_surface_tile_replace (PROGRESSIVE_SURFACE_CONTEXT *surface, PROGRESSIVE_BLOCK_REGION *region, const RFX_PROGRESSIVE_TILE *tile, BOOL upgrade)
 
INT32 progressive_create_surface_context (PROGRESSIVE_CONTEXT *progressive, UINT16 surfaceId, UINT32 width, UINT32 height)
 
int progressive_delete_surface_context (PROGRESSIVE_CONTEXT *progressive, UINT16 surfaceId)
 
static INLINE void progressive_rfx_idwt_x (const INT16 *pLowBand, size_t nLowStep, const INT16 *pHighBand, size_t nHighStep, INT16 *pDstBand, size_t nDstStep, size_t nLowCount, size_t nHighCount, size_t nDstCount)
 
static INLINE void progressive_rfx_idwt_y (const INT16 *pLowBand, size_t nLowStep, const INT16 *pHighBand, size_t nHighStep, INT16 *pDstBand, size_t nDstStep, size_t nLowCount, size_t nHighCount, size_t nDstCount)
 
static INLINE size_t progressive_rfx_get_band_l_count (size_t level)
 
static INLINE size_t progressive_rfx_get_band_h_count (size_t level)
 
static INLINE void progressive_rfx_dwt_2d_decode_block (INT16 *buffer, INT16 *temp, size_t level)
 
static INLINE int progressive_rfx_dwt_2d_decode (PROGRESSIVE_CONTEXT *progressive, INT16 *buffer, INT16 *current, BOOL coeffDiff, BOOL extrapolate, BOOL reverse)
 
static INLINE void progressive_rfx_decode_block (const primitives_t *prims, INT16 *buffer, UINT32 length, UINT32 shift)
 
static INLINE int progressive_rfx_decode_component (PROGRESSIVE_CONTEXT *progressive, const RFX_COMPONENT_CODEC_QUANT *shift, const BYTE *data, UINT32 length, INT16 *buffer, INT16 *current, INT16 *sign, BOOL coeffDiff, BOOL subbandDiff, BOOL extrapolate)
 
static INLINE int progressive_decompress_tile_first (PROGRESSIVE_CONTEXT *progressive, RFX_PROGRESSIVE_TILE *tile, PROGRESSIVE_BLOCK_REGION *region, const PROGRESSIVE_BLOCK_CONTEXT *context)
 
static INLINE INT16 progressive_rfx_srl_read (RFX_PROGRESSIVE_UPGRADE_STATE *state, UINT32 numBits)
 
static INLINE int progressive_rfx_upgrade_state_finish (RFX_PROGRESSIVE_UPGRADE_STATE *state)
 
static INLINE int progressive_rfx_upgrade_block (RFX_PROGRESSIVE_UPGRADE_STATE *state, INT16 *buffer, INT16 *sign, UINT32 length, UINT32 shift, UINT32 bitPos, UINT32 numBits)
 
static INLINE int progressive_rfx_upgrade_component (PROGRESSIVE_CONTEXT *progressive, const RFX_COMPONENT_CODEC_QUANT *shift, const RFX_COMPONENT_CODEC_QUANT *bitPos, const RFX_COMPONENT_CODEC_QUANT *numBits, INT16 *buffer, INT16 *current, INT16 *sign, const BYTE *srlData, UINT32 srlLen, const BYTE *rawData, UINT32 rawLen, BOOL coeffDiff, BOOL subbandDiff, BOOL extrapolate)
 
static INLINE int progressive_decompress_tile_upgrade (PROGRESSIVE_CONTEXT *progressive, RFX_PROGRESSIVE_TILE *tile, PROGRESSIVE_BLOCK_REGION *region, const PROGRESSIVE_BLOCK_CONTEXT *context)
 
static INLINE BOOL progressive_tile_read_upgrade (PROGRESSIVE_CONTEXT *progressive, wStream *s, UINT16 blockType, UINT32 blockLen, PROGRESSIVE_SURFACE_CONTEXT *surface, PROGRESSIVE_BLOCK_REGION *region, const PROGRESSIVE_BLOCK_CONTEXT *context)
 
static INLINE BOOL progressive_tile_read (PROGRESSIVE_CONTEXT *progressive, BOOL simple, wStream *s, UINT16 blockType, UINT32 blockLen, PROGRESSIVE_SURFACE_CONTEXT *surface, PROGRESSIVE_BLOCK_REGION *region, const PROGRESSIVE_BLOCK_CONTEXT *context)
 
static INLINE int progressive_process_tiles (PROGRESSIVE_CONTEXT *progressive, wStream *s, PROGRESSIVE_BLOCK_REGION *region, PROGRESSIVE_SURFACE_CONTEXT *surface, const PROGRESSIVE_BLOCK_CONTEXT *context)
 
static INLINE INT32 progressive_wb_sync (PROGRESSIVE_CONTEXT *progressive, wStream *s, UINT16 blockType, UINT32 blockLen)
 
static INLINE INT32 progressive_wb_frame_begin (PROGRESSIVE_CONTEXT *progressive, wStream *s, UINT16 blockType, UINT32 blockLen)
 
static INLINE INT32 progressive_wb_frame_end (PROGRESSIVE_CONTEXT *progressive, wStream *s, UINT16 blockType, UINT32 blockLen)
 
static INLINE int progressive_wb_context (PROGRESSIVE_CONTEXT *progressive, wStream *s, UINT16 blockType, UINT32 blockLen)
 
static INLINE INT32 progressive_wb_read_region_header (PROGRESSIVE_CONTEXT *progressive, wStream *s, UINT16 blockType, UINT32 blockLen, PROGRESSIVE_BLOCK_REGION *region)
 
static INLINE INT32 progressive_wb_skip_region (PROGRESSIVE_CONTEXT *progressive, wStream *s, UINT16 blockType, UINT32 blockLen)
 
static INLINE INT32 progressive_wb_region (PROGRESSIVE_CONTEXT *progressive, wStream *s, UINT16 blockType, UINT32 blockLen, PROGRESSIVE_SURFACE_CONTEXT *surface, PROGRESSIVE_BLOCK_REGION *region)
 
INT32 progressive_decompress (PROGRESSIVE_CONTEXT *progressive, const BYTE *pSrcData, UINT32 SrcSize, BYTE *pDstData, UINT32 DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, REGION16 *invalidRegion, UINT16 surfaceId, UINT32 frameId)
 
static BOOL progressive_rfx_write_message_progressive_simple (RFX_CONTEXT *context, wStream *s, RFX_MESSAGE *msg)
 
int progressive_compress (PROGRESSIVE_CONTEXT *progressive, const BYTE *pSrcData, UINT32 SrcSize, UINT32 SrcFormat, UINT32 Width, UINT32 Height, UINT32 ScanLine, const REGION16 *invalidRegion, BYTE **ppDstData, UINT32 *pDstSize)
 
BOOL progressive_context_reset (PROGRESSIVE_CONTEXT *progressive)
 
PROGRESSIVE_CONTEXT * progressive_context_new (BOOL Compressor)
 
void progressive_context_free (PROGRESSIVE_CONTEXT *progressive)
 

Macro Definition Documentation

◆ TAG

#define TAG   FREERDP_TAG("codec.progressive")

FreeRDP: A Remote Desktop Protocol Implementation Progressive Codec Bitmap Compression

Copyright 2014 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com Copyright 2019 Armin Novak armin.nosp@m..nov.nosp@m.ak@th.nosp@m.inca.nosp@m.st.co.nosp@m.m Copyright 2019 Thincast Technologies GmbH

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ progressive_component_codec_quant_read()

static INLINE void progressive_component_codec_quant_read ( wStream *  s,
RFX_COMPONENT_CODEC_QUANT *  quantVal 
)
static
Here is the caller graph for this function:

◆ progressive_compress()

int progressive_compress ( PROGRESSIVE_CONTEXT *  progressive,
const BYTE pSrcData,
UINT32  SrcSize,
UINT32  SrcFormat,
UINT32  Width,
UINT32  Height,
UINT32  ScanLine,
const REGION16 *  invalidRegion,
BYTE **  ppDstData,
UINT32 *  pDstSize 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_context_free()

void progressive_context_free ( PROGRESSIVE_CONTEXT *  progressive)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_context_new()

PROGRESSIVE_CONTEXT* progressive_context_new ( BOOL  Compressor)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_context_reset()

BOOL progressive_context_reset ( PROGRESSIVE_CONTEXT *  progressive)
Here is the caller graph for this function:

◆ progressive_create_surface_context()

INT32 progressive_create_surface_context ( PROGRESSIVE_CONTEXT *  progressive,
UINT16  surfaceId,
UINT32  width,
UINT32  height 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_decompress()

INT32 progressive_decompress ( PROGRESSIVE_CONTEXT *  progressive,
const BYTE pSrcData,
UINT32  SrcSize,
BYTE pDstData,
UINT32  DstFormat,
UINT32  nDstStep,
UINT32  nXDst,
UINT32  nYDst,
REGION16 *  invalidRegion,
UINT16  surfaceId,
UINT32  frameId 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_decompress_tile_first()

static INLINE int progressive_decompress_tile_first ( PROGRESSIVE_CONTEXT *  progressive,
RFX_PROGRESSIVE_TILE *  tile,
PROGRESSIVE_BLOCK_REGION *  region,
const PROGRESSIVE_BLOCK_CONTEXT *  context 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_decompress_tile_upgrade()

static INLINE int progressive_decompress_tile_upgrade ( PROGRESSIVE_CONTEXT *  progressive,
RFX_PROGRESSIVE_TILE *  tile,
PROGRESSIVE_BLOCK_REGION *  region,
const PROGRESSIVE_BLOCK_CONTEXT *  context 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_delete_surface_context()

int progressive_delete_surface_context ( PROGRESSIVE_CONTEXT *  progressive,
UINT16  surfaceId 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_get_block_type_string()

static const char* progressive_get_block_type_string ( UINT16  blockType)
static
Here is the caller graph for this function:

◆ progressive_get_surface_data()

static INLINE PROGRESSIVE_SURFACE_CONTEXT* progressive_get_surface_data ( PROGRESSIVE_CONTEXT *  progressive,
UINT16  surfaceId 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_process_tiles()

static INLINE int progressive_process_tiles ( PROGRESSIVE_CONTEXT *  progressive,
wStream *  s,
PROGRESSIVE_BLOCK_REGION *  region,
PROGRESSIVE_SURFACE_CONTEXT *  surface,
const PROGRESSIVE_BLOCK_CONTEXT *  context 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_rfx_decode_block()

static INLINE void progressive_rfx_decode_block ( const primitives_t prims,
INT16 *  buffer,
UINT32  length,
UINT32  shift 
)
static
Here is the caller graph for this function:

◆ progressive_rfx_decode_component()

static INLINE int progressive_rfx_decode_component ( PROGRESSIVE_CONTEXT *  progressive,
const RFX_COMPONENT_CODEC_QUANT *  shift,
const BYTE data,
UINT32  length,
INT16 *  buffer,
INT16 *  current,
INT16 *  sign,
BOOL  coeffDiff,
BOOL  subbandDiff,
BOOL  extrapolate 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_rfx_dwt_2d_decode()

static INLINE int progressive_rfx_dwt_2d_decode ( PROGRESSIVE_CONTEXT *  progressive,
INT16 *  buffer,
INT16 *  current,
BOOL  coeffDiff,
BOOL  extrapolate,
BOOL  reverse 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_rfx_dwt_2d_decode_block()

static INLINE void progressive_rfx_dwt_2d_decode_block ( INT16 *  buffer,
INT16 *  temp,
size_t  level 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_rfx_get_band_h_count()

static INLINE size_t progressive_rfx_get_band_h_count ( size_t  level)
static
Here is the caller graph for this function:

◆ progressive_rfx_get_band_l_count()

static INLINE size_t progressive_rfx_get_band_l_count ( size_t  level)
static
Here is the caller graph for this function:

◆ progressive_rfx_idwt_x()

static INLINE void progressive_rfx_idwt_x ( const INT16 *  pLowBand,
size_t  nLowStep,
const INT16 *  pHighBand,
size_t  nHighStep,
INT16 *  pDstBand,
size_t  nDstStep,
size_t  nLowCount,
size_t  nHighCount,
size_t  nDstCount 
)
static
Here is the caller graph for this function:

◆ progressive_rfx_idwt_y()

static INLINE void progressive_rfx_idwt_y ( const INT16 *  pLowBand,
size_t  nLowStep,
const INT16 *  pHighBand,
size_t  nHighStep,
INT16 *  pDstBand,
size_t  nDstStep,
size_t  nLowCount,
size_t  nHighCount,
size_t  nDstCount 
)
static
Here is the caller graph for this function:

◆ progressive_rfx_quant_add()

static INLINE void progressive_rfx_quant_add ( const RFX_COMPONENT_CODEC_QUANT *  q1,
const RFX_COMPONENT_CODEC_QUANT *  q2,
RFX_COMPONENT_CODEC_QUANT *  dst 
)
static
Here is the caller graph for this function:

◆ progressive_rfx_quant_cmp_equal()

static INLINE BOOL progressive_rfx_quant_cmp_equal ( const RFX_COMPONENT_CODEC_QUANT *  q1,
const RFX_COMPONENT_CODEC_QUANT *  q2 
)
static
Here is the caller graph for this function:

◆ progressive_rfx_quant_cmp_greater_equal()

static INLINE BOOL progressive_rfx_quant_cmp_greater_equal ( const RFX_COMPONENT_CODEC_QUANT *  q1,
const RFX_COMPONENT_CODEC_QUANT *  q2 
)
static

◆ progressive_rfx_quant_cmp_less_equal()

static INLINE BOOL progressive_rfx_quant_cmp_less_equal ( const RFX_COMPONENT_CODEC_QUANT *  q1,
const RFX_COMPONENT_CODEC_QUANT *  q2 
)
static

◆ progressive_rfx_quant_ladd()

static INLINE void progressive_rfx_quant_ladd ( RFX_COMPONENT_CODEC_QUANT *  q,
int  val 
)
static

◆ progressive_rfx_quant_lcmp_greater_equal()

static INLINE BOOL progressive_rfx_quant_lcmp_greater_equal ( const RFX_COMPONENT_CODEC_QUANT *  q,
int  val 
)
static
Here is the caller graph for this function:

◆ progressive_rfx_quant_lcmp_less_equal()

static INLINE BOOL progressive_rfx_quant_lcmp_less_equal ( const RFX_COMPONENT_CODEC_QUANT *  q,
int  val 
)
static
Here is the caller graph for this function:

◆ progressive_rfx_quant_lsub()

static INLINE void progressive_rfx_quant_lsub ( RFX_COMPONENT_CODEC_QUANT *  q,
int  val 
)
static
Here is the caller graph for this function:

◆ progressive_rfx_quant_sub()

static INLINE void progressive_rfx_quant_sub ( const RFX_COMPONENT_CODEC_QUANT *  q1,
const RFX_COMPONENT_CODEC_QUANT *  q2,
RFX_COMPONENT_CODEC_QUANT *  dst 
)
static
Here is the caller graph for this function:

◆ progressive_rfx_srl_read()

static INLINE INT16 progressive_rfx_srl_read ( RFX_PROGRESSIVE_UPGRADE_STATE *  state,
UINT32  numBits 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_rfx_upgrade_block()

static INLINE int progressive_rfx_upgrade_block ( RFX_PROGRESSIVE_UPGRADE_STATE *  state,
INT16 *  buffer,
INT16 *  sign,
UINT32  length,
UINT32  shift,
UINT32  bitPos,
UINT32  numBits 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_rfx_upgrade_component()

static INLINE int progressive_rfx_upgrade_component ( PROGRESSIVE_CONTEXT *  progressive,
const RFX_COMPONENT_CODEC_QUANT *  shift,
const RFX_COMPONENT_CODEC_QUANT *  bitPos,
const RFX_COMPONENT_CODEC_QUANT *  numBits,
INT16 *  buffer,
INT16 *  current,
INT16 *  sign,
const BYTE srlData,
UINT32  srlLen,
const BYTE rawData,
UINT32  rawLen,
BOOL  coeffDiff,
BOOL  subbandDiff,
BOOL  extrapolate 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_rfx_upgrade_state_finish()

static INLINE int progressive_rfx_upgrade_state_finish ( RFX_PROGRESSIVE_UPGRADE_STATE *  state)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_rfx_write_message_progressive_simple()

static BOOL progressive_rfx_write_message_progressive_simple ( RFX_CONTEXT *  context,
wStream *  s,
RFX_MESSAGE *  msg 
)
static

Note: The RFX_COMPONENT_CODEC_QUANT structure differs from the TS_RFX_CODEC_QUANT ([MS-RDPRFX] section 2.2.2.1.5) structure with respect to the order of the bands. 0 1 2 3 4 5 6 7 8 9 RDPRFX: LL3, LH3, HL3, HH3, LH2, HL2, HH2, LH1, HL1, HH1 RDPEGFX: LL3, HL3, LH3, HH3, HL2, LH2, HH2, HL1, LH1, HH1

Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_set_surface_data()

static INLINE BOOL progressive_set_surface_data ( PROGRESSIVE_CONTEXT *  progressive,
UINT16  surfaceId,
void *  pData 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_surface_context_free()

static void progressive_surface_context_free ( PROGRESSIVE_SURFACE_CONTEXT *  surface)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_surface_context_new()

static PROGRESSIVE_SURFACE_CONTEXT* progressive_surface_context_new ( UINT16  surfaceId,
UINT32  width,
UINT32  height 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_surface_tile_replace()

static BOOL progressive_surface_tile_replace ( PROGRESSIVE_SURFACE_CONTEXT *  surface,
PROGRESSIVE_BLOCK_REGION *  region,
const RFX_PROGRESSIVE_TILE *  tile,
BOOL  upgrade 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_tile_allocate()

static INLINE BOOL progressive_tile_allocate ( RFX_PROGRESSIVE_TILE *  tile)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_tile_free()

static void progressive_tile_free ( RFX_PROGRESSIVE_TILE *  tile)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_tile_read()

static INLINE BOOL progressive_tile_read ( PROGRESSIVE_CONTEXT *  progressive,
BOOL  simple,
wStream *  s,
UINT16  blockType,
UINT32  blockLen,
PROGRESSIVE_SURFACE_CONTEXT *  surface,
PROGRESSIVE_BLOCK_REGION *  region,
const PROGRESSIVE_BLOCK_CONTEXT *  context 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_tile_read_upgrade()

static INLINE BOOL progressive_tile_read_upgrade ( PROGRESSIVE_CONTEXT *  progressive,
wStream *  s,
UINT16  blockType,
UINT32  blockLen,
PROGRESSIVE_SURFACE_CONTEXT *  surface,
PROGRESSIVE_BLOCK_REGION *  region,
const PROGRESSIVE_BLOCK_CONTEXT *  context 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_wb_context()

static INLINE int progressive_wb_context ( PROGRESSIVE_CONTEXT *  progressive,
wStream *  s,
UINT16  blockType,
UINT32  blockLen 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_wb_frame_begin()

static INLINE INT32 progressive_wb_frame_begin ( PROGRESSIVE_CONTEXT *  progressive,
wStream *  s,
UINT16  blockType,
UINT32  blockLen 
)
static

If the number of elements specified by the regionCount field is larger than the actual number of elements in the regions field, the decoder SHOULD ignore this inconsistency.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_wb_frame_end()

static INLINE INT32 progressive_wb_frame_end ( PROGRESSIVE_CONTEXT *  progressive,
wStream *  s,
UINT16  blockType,
UINT32  blockLen 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_wb_read_region_header()

static INLINE INT32 progressive_wb_read_region_header ( PROGRESSIVE_CONTEXT *  progressive,
wStream *  s,
UINT16  blockType,
UINT32  blockLen,
PROGRESSIVE_BLOCK_REGION *  region 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_wb_region()

static INLINE INT32 progressive_wb_region ( PROGRESSIVE_CONTEXT *  progressive,
wStream *  s,
UINT16  blockType,
UINT32  blockLen,
PROGRESSIVE_SURFACE_CONTEXT *  surface,
PROGRESSIVE_BLOCK_REGION *  region 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_wb_skip_region()

static INLINE INT32 progressive_wb_skip_region ( PROGRESSIVE_CONTEXT *  progressive,
wStream *  s,
UINT16  blockType,
UINT32  blockLen 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressive_wb_sync()

static INLINE INT32 progressive_wb_sync ( PROGRESSIVE_CONTEXT *  progressive,
wStream *  s,
UINT16  blockType,
UINT32  blockLen 
)
static
Here is the call graph for this function:
Here is the caller graph for this function: