Subversion Repositories Kolibri OS

Rev

Rev 1681 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1681 Rev 1713
Line 179... Line 179...
179
;* Call: ***************************************************************
179
;* Call: ***************************************************************
180
CEncoder_Init:
180
CEncoder_Init:
181
;RangeEncoder_Init
181
;RangeEncoder_Init
182
	and	dword [low],0
182
	and	dword [low],0
183
	and	dword [low+4],0
183
	and	dword [low+4],0
184
	or	dword [range],0xFFFFFFFF
184
	or	dword [_range],0xFFFFFFFF
185
	push	ebx
185
	push	ebx
186
	push	esi
186
	push	esi
187
	push	edi
187
	push	edi
188
	xor	eax,eax
188
	xor	eax,eax
189
	mov	edi,_repDistances
189
	mov	edi,_repDistances
Line 1882... Line 1882...
1882
	mov	esi,eax
1882
	mov	esi,eax
1883
	jmp	.labl_02
1883
	jmp	.labl_02
1884
;----------------------------------------------------------
1884
;----------------------------------------------------------
1885
.labl_00:
1885
.labl_00:
1886
	mov	eax,[esp+8]
1886
	mov	eax,[esp+8]
1887
	shr	dword [range],1
1887
	shr	dword [_range],1
1888
	dec	esi
1888
	dec	esi
1889
	mov	ecx,esi
1889
	mov	ecx,esi
1890
	shr	eax,cl
1890
	shr	eax,cl
1891
	test	al,1
1891
	test	al,1
1892
	je	.labl_01
1892
	je	.labl_01
Line 1893... Line 1893...
1893
 
1893
 
1894
	mov	eax,[range]
1894
	mov	eax,[_range]
1895
	add	[low],eax	
1895
	add	[low],eax	
1896
	adc	dword [low+4],0
1896
	adc	dword [low+4],0
1897
;----------------------------------------------------------
1897
;----------------------------------------------------------
1898
.labl_01:
1898
.labl_01:
1899
	cmp	dword [range],0x1000000
1899
	cmp	dword [_range],0x1000000
Line 1900... Line 1900...
1900
	jnb	.labl_02
1900
	jnb	.labl_02
1901
 
1901
 
1902
	shl	dword [range],8
1902
	shl	dword [_range],8
1903
	call	RangeEncoder_ShiftLow
1903
	call	RangeEncoder_ShiftLow
1904
;----------------------------------------------------------
1904
;----------------------------------------------------------
1905
.labl_02:
1905
.labl_02:
Line 3177... Line 3177...
3177
	ret	
3177
	ret	
3178
;***********************************************************************
3178
;***********************************************************************
Line 3179... Line 3179...
3179
 
3179
 
3180
;* Call: ***************************************************************
3180
;* Call: ***************************************************************
3181
CMyBitEncoder_Encode:
3181
CMyBitEncoder_Encode:
3182
	mov	ecx,[range]
3182
	mov	ecx,[_range]
3183
	mov	eax,[edx]
3183
	mov	eax,[edx]
3184
	shr	ecx,0xB
3184
	shr	ecx,0xB
3185
	imul	ecx,eax
3185
	imul	ecx,eax
3186
	cmp	dword [esp+4],0
3186
	cmp	dword [esp+4],0
Line 3187... Line 3187...
3187
	jne	.labl_00
3187
	jne	.labl_00
3188
 
3188
 
3189
	mov	[range],ecx
3189
	mov	[_range],ecx
3190
	mov	ecx,2048
3190
	mov	ecx,2048
3191
	sub	ecx,eax
3191
	sub	ecx,eax
3192
	shr	ecx,5
3192
	shr	ecx,5
3193
	add	ecx,eax
3193
	add	ecx,eax
3194
	mov	[edx],ecx
3194
	mov	[edx],ecx
3195
	jmp	.labl_01
3195
	jmp	.labl_01
3196
;----------------------------------------------------------
3196
;----------------------------------------------------------
3197
.labl_00:
3197
.labl_00:
3198
	add	[low],ecx
3198
	add	[low],ecx
3199
	adc	dword [low+4],0
3199
	adc	dword [low+4],0
3200
	sub	[range],ecx
3200
	sub	[_range],ecx
3201
	mov	ecx,eax
3201
	mov	ecx,eax
3202
	shr	ecx,5
3202
	shr	ecx,5
3203
	sub	eax,ecx
3203
	sub	eax,ecx
3204
	mov	[edx],eax
3204
	mov	[edx],eax
3205
;----------------------------------------------------------
3205
;----------------------------------------------------------
3206
.labl_01:
3206
.labl_01:
Line 3207... Line 3207...
3207
	cmp	dword [range],0x1000000
3207
	cmp	dword [_range],0x1000000
3208
	jnb	.labl_02
3208
	jnb	.labl_02
3209
 
3209
 
3210
	shl	dword [range],8
3210
	shl	dword [_range],8
3211
	call	RangeEncoder_ShiftLow
3211
	call	RangeEncoder_ShiftLow
3212
;----------------------------------------------------------
3212
;----------------------------------------------------------