<?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[mp3 frame-header]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe bereits mit Google einige THemen dazu gefunden und auch gelesen,<br />
da ich jedoch erst vor einigen Wochen angefangen habe mit C++, blicke ich da allmählich nicht mehr durch.</p>
<p>Also folgendes:<br />
ich will eine Mp3-Datei einlesen und dann die Größe (in Bytes) jedes Frames berechnen (die Formel dazu habe, auch wie der Frame-Header aufgebaut ist)</p>
<p>Ich weiß, dass ein Frame-Header aus 32 Bit besteht.</p>
<p>Ich lese also nun die 1. 4bytes ein.</p>
<p>Doch wie baue ich nun aus diesen 4 Bytes mir eine Struktur?</p>
<p>Google ergab diesen Code:</p>
<pre><code>typedef struct T_MP3HEADER{
  union{
    struct{
      unsigned int byte4:8;
      unsigned int byte3:8;
      unsigned int byte2:8;
      unsigned int byte1:8;
    }e;
    struct{
      unsigned int Emphasis    :  2;
      unsigned int Original    :  1;
      unsigned int Copyright   :  1;
      unsigned int Mode_Ext    :  2;
      unsigned int Mode        :  2;
      unsigned int Private     :  1;
      unsigned int Paddig      :  1;
      unsigned int Samplefrq   :  2;
      unsigned int Bitrate     :  4;
      unsigned int Protection  :  1;
      unsigned int MPEGLayer   :  2;
      unsigned int MPEGVersion :  1;
      unsigned int SyncWord    : 11;
    }a;
  }h;
}MP3HEADER;
</code></pre>
<p>hier kann man wohl die einzelnen Bits setzen, doch WIE mache ich das?<br />
Und wie lese daraus dann die Bitrate?</p>
<p>Die Tabelle dazu kenn ich schon, doch ich blicks nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>(Wie man eine Datei einliest weiß ich auch. Doch wie les ich aus einem Byte die bits?)</p>
<p>Grüsse,</p>
<p>ein Verwirrter FaaB</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205672/mp3-frame-header</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 04:35:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205672.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Feb 2008 17:13:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mp3 frame-header on Sat, 16 Feb 2008 17:13:39 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe bereits mit Google einige THemen dazu gefunden und auch gelesen,<br />
da ich jedoch erst vor einigen Wochen angefangen habe mit C++, blicke ich da allmählich nicht mehr durch.</p>
<p>Also folgendes:<br />
ich will eine Mp3-Datei einlesen und dann die Größe (in Bytes) jedes Frames berechnen (die Formel dazu habe, auch wie der Frame-Header aufgebaut ist)</p>
<p>Ich weiß, dass ein Frame-Header aus 32 Bit besteht.</p>
<p>Ich lese also nun die 1. 4bytes ein.</p>
<p>Doch wie baue ich nun aus diesen 4 Bytes mir eine Struktur?</p>
<p>Google ergab diesen Code:</p>
<pre><code>typedef struct T_MP3HEADER{
  union{
    struct{
      unsigned int byte4:8;
      unsigned int byte3:8;
      unsigned int byte2:8;
      unsigned int byte1:8;
    }e;
    struct{
      unsigned int Emphasis    :  2;
      unsigned int Original    :  1;
      unsigned int Copyright   :  1;
      unsigned int Mode_Ext    :  2;
      unsigned int Mode        :  2;
      unsigned int Private     :  1;
      unsigned int Paddig      :  1;
      unsigned int Samplefrq   :  2;
      unsigned int Bitrate     :  4;
      unsigned int Protection  :  1;
      unsigned int MPEGLayer   :  2;
      unsigned int MPEGVersion :  1;
      unsigned int SyncWord    : 11;
    }a;
  }h;
}MP3HEADER;
</code></pre>
<p>hier kann man wohl die einzelnen Bits setzen, doch WIE mache ich das?<br />
Und wie lese daraus dann die Bitrate?</p>
<p>Die Tabelle dazu kenn ich schon, doch ich blicks nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>(Wie man eine Datei einliest weiß ich auch. Doch wie les ich aus einem Byte die bits?)</p>
<p>Grüsse,</p>
<p>ein Verwirrter FaaB</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457185</guid><dc:creator><![CDATA[FaaB]]></dc:creator><pubDate>Sat, 16 Feb 2008 17:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to mp3 frame-header on Sat, 16 Feb 2008 17:31:20 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">MP3HEADER mp3header;

// mp3header füllen...

unsigned int Bitrate = mp3header.h.a.Bitrate;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1457193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457193</guid><dc:creator><![CDATA[~Bits]]></dc:creator><pubDate>Sat, 16 Feb 2008 17:31:20 GMT</pubDate></item><item><title><![CDATA[Reply to mp3 frame-header on Sat, 16 Feb 2008 17:54:58 GMT]]></title><description><![CDATA[<p>~Bits schrieb:</p>
<blockquote>
<pre><code class="language-cpp">MP3HEADER mp3header;

// mp3header füllen...

unsigned int Bitrate = mp3header.h.a.Bitrate;
</code></pre>
</blockquote>
<p>ok damit hol ich mir n integer aus der struktur der für die bitrate steht, das ist jedoch dann immer noch nicht die bitrate. @@</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457204</guid><dc:creator><![CDATA[FaaB]]></dc:creator><pubDate>Sat, 16 Feb 2008 17:54:58 GMT</pubDate></item><item><title><![CDATA[Reply to mp3 frame-header on Sun, 17 Feb 2008 10:27:51 GMT]]></title><description><![CDATA[<p>// gelöscht, war unsinnig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457243</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Sun, 17 Feb 2008 10:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to mp3 frame-header on Sun, 17 Feb 2008 10:18:48 GMT]]></title><description><![CDATA[<blockquote>
<p>ok damit hol ich mir n integer aus der struktur der für die bitrate steht, das ist jedoch dann immer noch nicht die bitrate. @@</p>
</blockquote>
<p>s. <a href="http://de.wikipedia.org/wiki/MP3" rel="nofollow">http://de.wikipedia.org/wiki/MP3</a><br />
Dort gibt es eine Tabelle mit den 16 möglichen Werten je Layer-Format.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457406</guid><dc:creator><![CDATA[~Bitrate]]></dc:creator><pubDate>Sun, 17 Feb 2008 10:18:48 GMT</pubDate></item><item><title><![CDATA[Reply to mp3 frame-header on Sun, 17 Feb 2008 10:59:26 GMT]]></title><description><![CDATA[<p>das heisst ich muss den Bitrate Wert als Binär interpretieren und daraus errechnen welche bitrate es nun ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457439</guid><dc:creator><![CDATA[FaaB]]></dc:creator><pubDate>Sun, 17 Feb 2008 10:59:26 GMT</pubDate></item><item><title><![CDATA[Reply to mp3 frame-header on Sun, 17 Feb 2008 11:41:01 GMT]]></title><description><![CDATA[<p>Mir scheint, du solltest dich erst mit einfacheren Dingen beschäftigen.</p>
<p>Du weißt anscheinend nicht, was die Schreibweise &quot;unsigned int Bitrate: 4;&quot; bedeutet. Damit werden genau 4 Bits innerhalb der Struktur reserviert.<br />
Dies bedeutet, daß dort genau einer der Werte 0 bis 15 (d.h. 2^4 = 16) stehen kann.<br />
Und diesen Wert liest du dann mittels meines ersten Postings aus.<br />
Dann erzeugst du dir ein Array entsprechend der Bitraten-Tabelle und greifst mit der Bitrate als Index darauf zu und schon hast du die gewünschte Bitrate.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457461</guid><dc:creator><![CDATA[~Bits]]></dc:creator><pubDate>Sun, 17 Feb 2008 11:41:01 GMT</pubDate></item><item><title><![CDATA[Reply to mp3 frame-header on Sun, 17 Feb 2008 12:04:55 GMT]]></title><description><![CDATA[<p>du hast reht, ich weiß nicht, was unsigned int bedeutet - kann es mir jetzt nach deinem posting halb wegs denken und weiß, wonach ich nun weiter suchen muss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>aber mit einfacheren dingen beschäftigen ist nicht so meine art..<br />
ich suche mir immer große sachen aus um daran zu lernen, da es mich mehr fordert und mich dadurch auch mehr motiviert.</p>
<p>ich habe in c++ bereits sockets geschrieben (und verstehe sogar, WAS ich da geschrieben habe :D)</p>
<p>danke nochmal für deinen tipp ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457474</guid><dc:creator><![CDATA[FaaB]]></dc:creator><pubDate>Sun, 17 Feb 2008 12:04:55 GMT</pubDate></item><item><title><![CDATA[Reply to mp3 frame-header on Sun, 17 Feb 2008 12:11:31 GMT]]></title><description><![CDATA[<p>FaaB schrieb:</p>
<blockquote>
<p>aber mit einfacheren dingen beschäftigen ist nicht so meine art..</p>
</blockquote>
<p>sollte es vllt. aber werden</p>
<p>FaaB schrieb:</p>
<blockquote>
<p>ich suche mir immer große sachen aus um daran zu lernen, da es mich mehr fordert und mich dadurch auch mehr motiviert.</p>
</blockquote>
<p>und wenn es zu groß ist, elendig daran zu scheitern und zu verzweifeln</p>
<p>FaaB schrieb:</p>
<blockquote>
<p>ich habe in c++ bereits sockets geschrieben (und verstehe sogar, WAS ich da geschrieben habe :D)</p>
</blockquote>
<p>ist jetzt auch nicht das schwierigste, aber ich finde das schonmal nicht schlecht...</p>
<p>naja jedem das seine, ich lass dir mal deine lernmethode, vllt. haste ja glück und/oder bist extremst begabt...aber ein grundlagentutorial schadet nie...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457479</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Sun, 17 Feb 2008 12:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to mp3 frame-header on Sun, 17 Feb 2008 12:27:24 GMT]]></title><description><![CDATA[<p>Ich hatte angefangen ein C tutorial zu lesen (woher ich auch weiß was ein Vektor ist, was ein pointer is etc). Jedoch kamen dann immer nur noch sachen, die ich von anderen Scriptsprachen schon kenne.</p>
<p>insgesammt habe ich schon min. 10 C/C++ Tutorials voraugen gehabt, aber bei allen ging es nur um wahres anfänger zeugs wie &quot;Was ist eine Variable..&quot; oder &quot;Wie gebe ich etwas aus&quot;</p>
<p>Und das war bisher bei allem, was ich gelernt habe (PHP, TCL, MSL, <a href="http://VB.NET" rel="nofollow">VB.NET</a>)</p>
<p>Das mit den Sockets war echt hart ^^<br />
Ich hatte dazu ein Tutorial gefunden, jedoch war der Author nicht sehr begabt in sachen C++ - weshalb sein Code nicht funktionierte - das konnte ich dann aber mit hilfe von MAN Pages zum laufen bringen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457493</guid><dc:creator><![CDATA[FaaB]]></dc:creator><pubDate>Sun, 17 Feb 2008 12:27:24 GMT</pubDate></item></channel></rss>