<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Schifra Reed Solomon Encoder &#x2F; Decoder]]></title><description><![CDATA[<p>Hallo,<br />
auf der Suche nach einem Open Sourec Reed Solomon Codec bin ich auf Schifra (<a href="http://www.schifra.com/" rel="nofollow">http://www.schifra.com/</a>) gestoßen.</p>
<p>Das Teil kann wohl alles dementsprechend kompliziert ist es da irgendwie duchzublicken. (für mich zumindest)</p>
<p>ich verstehe nur eine kleinigkeit nicht, vielleicht kann mich jemand drauf hinweisen.<br />
Hier ein ausschnitt aus dem Example01</p>
<pre><code class="language-cpp">/* Finite Field Parameters */
   const std::size_t field_descriptor                 =   8;
   const std::size_t generator_polynommial_index      = 120;
   const std::size_t generator_polynommial_root_count =  32;

   /* Reed Solomon Code Parameters */
   const std::size_t code_length = 255;
   const std::size_t fec_length  =  32;
   const std::size_t data_length = code_length - fec_length;
</code></pre>
<p>field_descriptor = 8; ist wohl klar GF(2^8), immer 8 bit sind ein Symbol.</p>
<p>Doch danach hörte erst mal auf und das sind die beiden Zeilen die ich nicht verstehe :<br />
generator_polynommial_index = 120;<br />
generator_polynommial_root_count = 32;<br />
... hat sich von euch jemand das schon mal angeschaut, und weis was da eingestellt wird ?</p>
<p>ich würde ja sagen die 120 sind das primitive element, aber das wird später mit primitive_polynomial_size05 und primitive_polynomial05 ausgwählt<br />
hier der entsprechende Code</p>
<pre><code class="language-cpp">schifra::galois::field field(field_descriptor,schifra::galois::primitive_polynomial_size05,schifra::galois::primitive_polynomial05);
</code></pre>
<p>ok, es steht generator_polynomal davor :</p>
<p>wenn ich für meinen Code (255,239) nun ein Generatorpolynom habe das so aussieht :</p>
<p>g(x) = (x+λ<sup>0)*(x+λ</sup>1)*(x+λ<sup>2)*..*(x+λ</sup>15)</p>
<p>dann muss ich wohl bei generator_polynommial_root_count 16; eintragen.<br />
Aber was ich bei generator_polynommial_index angeben muss versteh ich net ganz ?</p>
<p>Danke<br />
flix</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183462/schifra-reed-solomon-encoder-decoder</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 06:23:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183462.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Jun 2007 09:42:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schifra Reed Solomon Encoder &#x2F; Decoder on Tue, 05 Jun 2007 09:42:38 GMT]]></title><description><![CDATA[<p>Hallo,<br />
auf der Suche nach einem Open Sourec Reed Solomon Codec bin ich auf Schifra (<a href="http://www.schifra.com/" rel="nofollow">http://www.schifra.com/</a>) gestoßen.</p>
<p>Das Teil kann wohl alles dementsprechend kompliziert ist es da irgendwie duchzublicken. (für mich zumindest)</p>
<p>ich verstehe nur eine kleinigkeit nicht, vielleicht kann mich jemand drauf hinweisen.<br />
Hier ein ausschnitt aus dem Example01</p>
<pre><code class="language-cpp">/* Finite Field Parameters */
   const std::size_t field_descriptor                 =   8;
   const std::size_t generator_polynommial_index      = 120;
   const std::size_t generator_polynommial_root_count =  32;

   /* Reed Solomon Code Parameters */
   const std::size_t code_length = 255;
   const std::size_t fec_length  =  32;
   const std::size_t data_length = code_length - fec_length;
</code></pre>
<p>field_descriptor = 8; ist wohl klar GF(2^8), immer 8 bit sind ein Symbol.</p>
<p>Doch danach hörte erst mal auf und das sind die beiden Zeilen die ich nicht verstehe :<br />
generator_polynommial_index = 120;<br />
generator_polynommial_root_count = 32;<br />
... hat sich von euch jemand das schon mal angeschaut, und weis was da eingestellt wird ?</p>
<p>ich würde ja sagen die 120 sind das primitive element, aber das wird später mit primitive_polynomial_size05 und primitive_polynomial05 ausgwählt<br />
hier der entsprechende Code</p>
<pre><code class="language-cpp">schifra::galois::field field(field_descriptor,schifra::galois::primitive_polynomial_size05,schifra::galois::primitive_polynomial05);
</code></pre>
<p>ok, es steht generator_polynomal davor :</p>
<p>wenn ich für meinen Code (255,239) nun ein Generatorpolynom habe das so aussieht :</p>
<p>g(x) = (x+λ<sup>0)*(x+λ</sup>1)*(x+λ<sup>2)*..*(x+λ</sup>15)</p>
<p>dann muss ich wohl bei generator_polynommial_root_count 16; eintragen.<br />
Aber was ich bei generator_polynommial_index angeben muss versteh ich net ganz ?</p>
<p>Danke<br />
flix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299137</guid><dc:creator><![CDATA[flix]]></dc:creator><pubDate>Tue, 05 Jun 2007 09:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to Schifra Reed Solomon Encoder &#x2F; Decoder on Tue, 05 Jun 2007 13:15:27 GMT]]></title><description><![CDATA[<p>hmm eig. ist das so nur die elegante Version um ein #define für feste Werte zu umgehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299308</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 05 Jun 2007 13:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Schifra Reed Solomon Encoder &#x2F; Decoder on Tue, 05 Jun 2007 14:16:36 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>irgendwie geht es mir gar nicht um das Programmiertechnische sondern um die Werte, die zugewiesen werden .... einfach gefragt, warum wird der Variablen der Wert 120 zugewiesen ? .... Dazu muss man sich halt mit RS Codes auskennen.</p>
<p>Wenn ich den Code weiterverfolge wird die 120 letztendlich zum berechnen des Generatorpolynoms verwendet :</p>
<pre><code class="language-cpp">initial_index=generator_polynommial_index;
num_elements=generator_polynommial_root_count ;
for(std::size_t i = initial_index; i &lt; initial_index + num_elements; ++i)
         {
            generator_polynomial *= (X + (ALPHA ^ static_cast&lt;int&gt;(i)));
         }
</code></pre>
<p>okay mein generatorpolynom lautet :<br />
g(x) = (x+λ<sup>0)*(x+λ</sup>1)*(x+λ<sup>2)*..*(x+λ</sup>15)</p>
<p>deswegen denk ich ich muss folgende Parameter einstellen :</p>
<p>generator_polynommial_index = 0;<br />
generator_polynommial_root_count = 16;</p>
<p>da gibts aber bei mir leider ein Fehler (Error - Critical encoding failure!)<br />
....</p>
<p>Danke,<br />
flix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299354</guid><dc:creator><![CDATA[flix]]></dc:creator><pubDate>Tue, 05 Jun 2007 14:16:36 GMT</pubDate></item></channel></rss>