File: rsbep.1

package info (click to toggle)
dvbackup 0.0.4rj1-6
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, sarge
  • size: 1,112 kB
  • ctags: 193
  • sloc: sh: 3,458; ansic: 2,949; asm: 123; makefile: 36
file content (169 lines) | stat: -rw-r--r-- 5,679 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
.\" $Header: /aolnet/dev/src/CVS/sgml/docbook-to-man/cmd/docbook-to-man.sh,v 1.1.1.1 1998/11/13 21:31:59 db3l Exp $
.\"
.\"	transcript compatibility for postscript use.
.\"
.\"	synopsis:  .P! <file.ps>
.\"
.de P!
.fl
\!!1 setgray
.fl
\\&.\"
.fl
\!!0 setgray
.fl			\" force out current output buffer
\!!save /psv exch def currentpoint translate 0 0 moveto
\!!/showpage{}def
.fl			\" prolog
.sy sed -e 's/^/!/' \\$1\" bring in postscript file
\!!psv restore
.
.de pF
.ie     \\*(f1 .ds f1 \\n(.f
.el .ie \\*(f2 .ds f2 \\n(.f
.el .ie \\*(f3 .ds f3 \\n(.f
.el .ie \\*(f4 .ds f4 \\n(.f
.el .tm ? font overflow
.ft \\$1
..
.de fP
.ie     !\\*(f4 \{\
.	ft \\*(f4
.	ds f4\"
'	br \}
.el .ie !\\*(f3 \{\
.	ft \\*(f3
.	ds f3\"
'	br \}
.el .ie !\\*(f2 \{\
.	ft \\*(f2
.	ds f2\"
'	br \}
.el .ie !\\*(f1 \{\
.	ft \\*(f1
.	ds f1\"
'	br \}
.el .tm ? font underflow
..
.ds f1\"
.ds f2\"
.ds f3\"
.ds f4\"
'\" t 
.ta 8n 16n 24n 32n 40n 48n 56n 64n 72n  
.TH "RSBEP" "1" 
.SH "NAME" 
rsbep \(em Reed-Solomon FEC (forward error correction) with 
byte-spreading 
 
.SH "SYNOPSIS" 
.PP 
\fBrsbep\fR [\fB-d\fP]  [\fB-v\fP]  [\fB-q\fP]  [\fB-B x\fP]  [\fB-D y\fP]  [\fB-R z\fP]  
.SH "DESCRIPTION" 
.PP 
This manual page documents briefly the 
\fBrsbep\fR tool. 
.PP 
This manual page was written for the \fBDebian\fP distribution 
because the original program does not have a manual page. 
.PP 
\fBrsbep\fRis a tool that protects the data-stream 
from stdin with Reed-Solomon FEC (forward error correction) and additional 
it spreads the bytes of the resulting blocks out to give some protection 
against burst errors (e.g from tape-recordings). 
.PP 
The Reed-Solomon-code is from Phil Karn (see REAMDE.rsbep.RS32), and 
it's a special version for i386 (and compatible) to get enough performance 
for realtime encoding/decoding making it suitable for use with the tool 
"dvbackup" - which requires 3,6MByte/sec of data to feed the 
MiniDV-Camcorder.  It is hardwired for (255,223)-RS. 
.PP 
The burst error protection is done by encoding ERR_BURST_LEN blocks 
of 255 bytes and placing the Bytes of an RS-block with distance 
ERR_BURST_LEN withing a buffer of ERR_BURST_LEN*255 bytes size.  (This is 
the minimum output size of rsbep) 
.PP 
During decoding the blocks are reassembled and then decoded by RS32. 
If any error occured in the data it is corrected if possible, otherwise 
written as is, the number of corrected failures and uncorrectable blocks is 
printed if >0 or according to commandline options (v,q). 
.PP 
The first line of each encoded output block contains 
.PP 
"rsbep 255 223 765 MAGIC_NUM" 
.PP 
which is the identifier for 
rsbep, the Reed-Solomon block-size, data-size and the ERR_BURST_LEN (that is 
a number >=block-size and exact multiple of block-size).  MAGIC_NUM is used 
to resynchronize if the stream is completly broken, which makes it possible 
to recover later files in your (tar-)archive. 
.SH "ERROR CORRECTION" 
.PP 
Now how much errors can it correct? 
.PP 
RS(255,223) can correct up to 16 incorrect bytes in 
unknown positions. 
.PP 
However, the problem is, that typical communications and storage 
errors are also burst errors - which is that a lot of subsequent bytes are 
lost.  That would mean, if more than 16 subsequent bytes are damaged, the 
data are irreparably damaged. 
.PP 
The method above spreads those bytes so far out, that up to 
16*255*3=12240 subsequent bytes can get garbled without loosing valuable data 
at all! 
.PP 
Test with dvbackup and the LongPlay mode of my camcorder showed that 
more than enough to use it - it corrected Kilo-Bytes of errors in Giga-Bytes 
of data. 
.PP 
Of course there is a probability, that the failure has just that rate, 
that it hit's always the bytes of the same block - i leave it to the 
mathematicians among you to calculate it ;-) 
.SH "LIMITATIONS" 
.PP 
* It does'nt make use of "erasures" - that would double the recover 
rate. 
.PP 
* It is hardcoded for RS(255,223)*(<=255) bytes, if you change the 
code you may not be able to recover old data with different 
RS-values 
.PP 
* The resynchronisation takes so much CPU that it will fillup the 
buffer soon and anything will fall apart, (running the program 'offline'  
might help) - it needs a lot of work to  
be really of use... 
.PP 
* Failures in the header-line might have drastic consequences, 
mathematically spoken: Those bytes contain more information 
.PP 
* The error correction works only from stream with failures,  
not erasures, dvbackup has the option '-r' to take care of this to the  
extend MiniDV allows. 
.SH "OPTIONS" 
.IP "\fB-d\fP         " 10 
Decode. The default is to encode. 
.IP "\fB-v\fP         " 10 
Verbose. Talks about the errors it encounters and gives  
statistics at the end. 
.IP "\fB-q\fP         " 10 
Quiet. Output only a minimum of messages. 
.IP "\fB-B x\fP         " 10 
Override the default Reed-Solomon blocksize of 255 and use 'x' 
instead.  
.IP "\fB-D y\fP         " 10 
Override the default Reed-Solomon datasize of 223 and use 'y' 
instead.  
.IP "\fB-R z\fP         " 10 
Override the default ERR_BURST_LEN (used to spread the data) of 
765 and use 'z' instead. 
.SH "AUTHOR" 
.PP 
This manual page was written by Robert Jordens jordens@debian.org for the 
\fBDebian\fP system (but may be used by others). The text is based on  
information from Guido Fiala. Permission is granted 
to copy, distribute and/or modify this document under the terms of 
the GNU General Public License, Version 2. On 
Debian systems, the full text of this license can be found in the 
file /usr/share/common-licenses/GPL-2. 
.\" created by instant / docbook-to-man, Wed 25 Feb 2004, 21:18