Many new features! Have to be used.
This commit is contained in:
104
units/ecc.pas
Normal file
104
units/ecc.pas
Normal file
@@ -0,0 +1,104 @@
|
||||
unit ecc;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
uCommon;
|
||||
|
||||
const
|
||||
L1_RAW = 24;
|
||||
L1_Q = 4;
|
||||
L1_P = 4;
|
||||
|
||||
L2_RAW = (1024 * 2);
|
||||
L2_Q = (26 * 2 * 2);
|
||||
L2_P = (43 * 2 * 2);
|
||||
|
||||
Procedure encode_L2_Q(Data: PBytesArray);
|
||||
Procedure encode_L2_P(Data: PBytesArray);
|
||||
|
||||
implementation
|
||||
|
||||
{$INCLUDE l2sq_table.pas}
|
||||
|
||||
Procedure encode_L2_Q(Data: PBytesArray);
|
||||
var
|
||||
i, j, PQ, PD, PD_S, PD_P: Integer;
|
||||
a, b: Word;
|
||||
begin
|
||||
// unsigned char inout[4 + L2_RAW + 4 + 8 + L2_P + L2_Q];
|
||||
|
||||
PD := 0;
|
||||
PQ := PD + 4 + L2_RAW + 4 + 8 + L2_P;
|
||||
// Q := Pointer(LongWord(Data) + 4 + L2_RAW + 4 + 8 + L2_P);
|
||||
PD_S := PD;
|
||||
For j := 0 To 26 - 1 do
|
||||
begin
|
||||
a := 0;
|
||||
b := 0;
|
||||
PD_P := PD_S;
|
||||
For i := 0 To 43 - 1 do
|
||||
begin
|
||||
(* LSB *)
|
||||
a := a XOR L2sq[i][Data^[PD_P]];
|
||||
Inc(PD_P);
|
||||
|
||||
(* MSB *)
|
||||
b := b XOR L2sq[i][Data^[PD_P]];
|
||||
|
||||
Inc(PD_P, 2 * 44 - 1);
|
||||
if PD_P >= PD + (4 + L2_RAW + 4 + 8 + L2_P) Then
|
||||
Dec(PD_P, (4 + L2_RAW + 4 + 8 + L2_P));
|
||||
end;
|
||||
Data^[PQ + 0] := a SHR 8;
|
||||
Move(a, Data^[PQ + 26 * 2], 1);
|
||||
// Q^[26*2] := a;
|
||||
Data^[PQ + 1] := b SHR 8;
|
||||
Move(b, Data^[PQ + 26 * 2 + 1], 1);
|
||||
// Q^[26*2+1] := b;
|
||||
|
||||
Inc(PQ, 2);
|
||||
Inc(PD_S, 2 * 43);
|
||||
end;
|
||||
end;
|
||||
|
||||
Procedure encode_L2_P(Data: PBytesArray);
|
||||
// unsigned char inout[4 + L2_RAW + 4 + 8 + L2_P];
|
||||
var
|
||||
i, j, PD, PD_PP, PD_P: Integer;
|
||||
a, b: Word;
|
||||
begin
|
||||
|
||||
PD := 0;
|
||||
PD_PP := PD + 4 + L2_RAW + 4 + 8;
|
||||
// LongWord(P) := PD + 4 + L2_RAW + 4 + 8;
|
||||
|
||||
For j := 0 To 43 - 1 do
|
||||
begin
|
||||
a := 0;
|
||||
b := 0;
|
||||
PD_P := PD;
|
||||
For i := 19 to 43 - 1 do
|
||||
begin
|
||||
(* LSB *)
|
||||
a := a xor L2sq[i][Data^[PD_P]];
|
||||
Inc(PD_P);
|
||||
|
||||
(* MSB *)
|
||||
b := b xor L2sq[i][Data^[PD_P]];
|
||||
|
||||
Inc(PD_P, 2 * 43 - 1);
|
||||
end;
|
||||
Data^[PD_PP + 0] := a SHR 8;
|
||||
Move(a, Data^[PD_PP + 43 * 2], SizeOf(a));
|
||||
// P^[43*2] := a;
|
||||
Data^[PD_PP + 1] := b SHR 8;
|
||||
Move(b, Data^[PD_PP + 43 * 2 + 1], SizeOf(b));
|
||||
// P^[43*2+1] := b;
|
||||
|
||||
Inc(PD_PP, 2);
|
||||
Inc(PD, 2);
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user