2016-10-23 1 views
2

Ich arbeite an PCM als Anfänger, und ich benutze Naudio-Bibliothek. Also habe ich mich gefragt, ob die Speicherung von PCM-Daten von Little Endian und Big Endian abhängt oder ob nicht der Speicher hängt, dann hängt die Speicheradressierung von diesem Big und Little Endian ab, weil ein PCM-Datenleastwertiges Byte und natürlich höchstwertiges Byte erhalten hat und da ich weiß, dass Little Endian und Big Endian eine andere Möglichkeit hatten, diese Bytes im Speicher zu speichern, kann das Lesen der Daten von der Platte in den Speicher falsche Werte erzeugen, bis ich das Array umkehre und es dann in short umwandelte.Ist die Speicherung von PCM-Daten von Mp3 File von Big Endian und Little Endian abhängig?

Nur Sie verstehen, was ich rede, ist hier ein kurzes Beispiel:

Ein sehr kurzen PCM-Daten von nur 4 Bytes

Address Value 
1000 90 
1001 AB 
1002 12 
1003 CD 

Dies ist die Lagerung in einem in großer Endianer. und das folgende ist die Lagerung in kleinen Endian

Address Value 
1000 CD 
1001 12 
1002 AB 
1003 90 

so ist dies der Bytes umgekehrt passieren, wenn Sie PCM lesen NAudio mit? weil ich Little Endian, wenn die BitConverter überprüfen ist oder nicht, das nach ich meine Array von Bytes umgekehrt, der Art wie folgt aus:

    Int16 Left_Sample = BitConverter.ToInt16(Buffer, i); 
        Int16 Right_Sample = BitConverter.ToInt16(Buffer, i + 2); 
        Int16 Final_Sample = (Int16)(0.5f * ((float)Left_Sample + (float)Right_Sample)); 
        byte[] Final_Byte = BitConverter.GetBytes(Final_Sample); 
        if (BitConverter.IsLittleEndian){ Array.Reverse(Final_Byte); } 

Also zusammenfassend:

Q: Ist der Big und Little Endian beeinflusst den Byte-Speicher?

Frage: Muss ich die Anweisung if(BitConverter.IsLittleEndian) verwenden, um das Array umzukehren?

Antwort

2

In WAV-Dateien werden PCM-Samples als Little-Endian gespeichert.

MP3-Dateien sind ein komprimiertes Audioformat, daher ist es nicht wirklich sinnvoll zu sagen, welche Endianness verwendet wird, aber wenn NAudio in PCM konvertiert, wird es wieder Little-Endian sein.

AIFF-Dateien speichern normalerweise Samples als Big-Endian, aber auch hier wird NAudio das für Sie erledigen.

Ohne mehr von Ihrem Code zu sehen, ist es schwer zu sagen, aber ich bezweifle, dass Sie irgendeine Byte-Reihenfolge selbst austauschen müssen, wenn Sie NAudio normalerweise verwenden.

Verwandte Themen