<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt; font-family: Verdana,Geneva,sans-serif'>
<p>Just to add more data, this is an example of what I'm reading from my mp3 file.  While many of the values appear to be correct (and a graph I've made of the data appears to mostly match what I'm getting from the same audio sample in .wav format), I'm getting a lot of byte sequences that do not belong there - especially 0xeefeeefe. This data is taken from channel 0, stepped by every 64 samples:</p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"> </p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">f4 8f 94 bd : -0.072540</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">a4 61 69 bd : -0.056978</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">15 8e 77 3d : 0.060438</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">07 31 32 be : -0.174015</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">af c4 92 3d : 0.071664</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">c0 dc 45 3d : 0.048306</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">14 ee 38 bd : -0.045149</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">67 88 a9 3e : 0.331119</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">c0 04 c4 2f : 0.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">ab ab ab ab : -0.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">c5 76 7e 75 : 322571370690696392781073674665984.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">5c d4 fb 09 : 0.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">ee fe ee fe : -158839966806181746533156862930074992640.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">7b cb 3c 91 : -0.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">ee fe ee fe : -158839966806181746533156862930074992640.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">65 55 7e 6f : 78712428148303660770110996480.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">30 ef fc 6e : 39139691209729015717184929792.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">0e 2e 00 be : -0.125176</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">19 8d 08 bb : -0.002084</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">89 1f da bd : -0.106505</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">70 c3 23 bb : -0.002499</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">0e 2e 28 3d : 0.041060</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">2d d3 28 bd : -0.041217</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">c8 6c 30 be : -0.172290</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">61 0f 17 3e : 0.147520</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">75 a0 15 3d : 0.036530</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">ee fe ee fe : -158839966806181746533156862930074992640.000000</span></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #000000;">ee fe ee fe : -158839966806181746533156862930074992640.000000</span></p>
<p><br /></p>
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"> </p>
<p id="reply-intro">On 2019-12-03 07:56, Mark McKay wrote:</p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<div id="replybody1">
<div style="font-size: 10pt; font-family: Verdana,Geneva,sans-serif;">
<p>I'm trying to use libav to read in audio PCM data.  I've got it to read in my .wav sample data correctly (the byte format is <span style="color: #800080;">AV_SAMPLE_FMT_S16</span>). However, my .mp3 sample is getting a lot of strange spikes in the data.  The sample format for the .mp3 is <span style="color: #800080;">AV_SAMPLE_FMT_FLTP and while most of the samples appear to be correct, about 10% of them have very large magnitudes.  I'm wondering what's going wrong, and if this might have something to do with the exponent of the floating point number being translated incorrectly.  It's not clear to me what the difference between AV_SAMPLE_FMT_FLT and AV_SAMPLE_FMT_FLTP is.<br /></span></p>
<p><span style="color: #800080;">This is a sample of the bit of my code that reads the data from the frame.  Am I reading it correctly?</span></p>
<p><br /></p>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">        </span><span style="color: #808000;">int</span><span style="color: #c0c0c0;"> </span><span style="color: #092e64;">bufferSize</span><span style="color: #c0c0c0;"> </span>=<span style="color: #c0c0c0;"> </span><span style="color: #00677c;">av_samples_get_buffer_size</span>(<span style="color: #000080;">NULL</span>,</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                                   </span><span style="color: #800000;">aCodecCtx</span>-><span style="color: #800000;">channels</span>,</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                                   </span><span style="color: #800000;">aFrame</span>-><span style="color: #800000;">nb_samples</span>,</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                                   </span><span style="color: #800000;">aCodecCtx</span>-><span style="color: #800000;">sample_fmt</span>,</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                                   </span><span style="color: #000080;">1</span>);</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">        </span><span style="color: #800080;">uint8_t</span><span style="color: #c0c0c0;"> </span>*<span style="color: #092e64;">dataBuf</span><span style="color: #c0c0c0;"> </span>=<span style="color: #c0c0c0;"> </span><span style="color: #800000;">aFrame</span>-><span style="color: #800000;">data</span>[<span style="color: #000080;">0</span>];</pre>
<pre style="-qt-paragraph-type: empty; -qt-block-indent: 0; text-indent: 0px; margin: 0px;"> </pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">        </span><span style="color: #808000;">for</span><span style="color: #c0c0c0;"> </span>(<span style="color: #808000;">int</span><span style="color: #c0c0c0;"> </span><span style="color: #092e64;">i</span><span style="color: #c0c0c0;"> </span>=<span style="color: #c0c0c0;"> </span><span style="color: #000080;">0</span>;<span style="color: #c0c0c0;"> </span><span style="color: #092e64;">i</span><span style="color: #c0c0c0;"> </span><<span style="color: #c0c0c0;"> </span><span style="color: #800000;">aFrame</span>-><span style="color: #800000;">nb_samples</span>;<span style="color: #c0c0c0;"> </span><span style="color: #092e64;">i</span>++)</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">        </span>{</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">            </span><span style="color: #808000;">for</span><span style="color: #c0c0c0;"> </span>(<span style="color: #808000;">int</span><span style="color: #c0c0c0;"> </span><span style="color: #092e64;">ch</span><span style="color: #c0c0c0;"> </span>=<span style="color: #c0c0c0;"> </span><span style="color: #000080;">0</span>;<span style="color: #c0c0c0;"> </span><span style="color: #092e64;">ch</span><span style="color: #c0c0c0;"> </span><<span style="color: #c0c0c0;"> </span><span style="color: #092e64;">numChannels</span>;<span style="color: #c0c0c0;"> </span><span style="color: #092e64;">ch</span>++)</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">            </span>{</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                </span><span style="color: #808000;">float</span><span style="color: #c0c0c0;"> </span><span style="color: #092e64;">val</span><span style="color: #c0c0c0;"> </span>=<span style="color: #c0c0c0;"> </span><span style="color: #000080;">0</span>;</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                </span><span style="color: #808000;">switch</span><span style="color: #c0c0c0;"> </span>(<span style="color: #800000;">aCodecCtx</span>-><span style="color: #800000;">sample_fmt</span>)</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                </span>{<br />                 ...</pre>
<pre style="-qt-paragraph-type: empty; -qt-block-indent: 0; text-indent: 0px; margin: 0px;"> </pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                </span><span style="color: #808000;">case</span><span style="color: #c0c0c0;"> </span><span style="color: #800080;">AV_SAMPLE_FMT_FLT</span>:</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                </span><span style="color: #808000;">case</span><span style="color: #c0c0c0;"> </span><span style="color: #800080;">AV_SAMPLE_FMT_FLTP</span>:</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                </span>{</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                    </span><span style="color: #092e64;">val</span><span style="color: #c0c0c0;"> </span>=<span style="color: #c0c0c0;"> </span>((<span style="color: #808000;">float</span>*)<span style="color: #092e64;">dataBuf</span>)[<span style="color: #092e64;">ch</span><span style="color: #c0c0c0;"> </span>+<span style="color: #c0c0c0;"> </span><span style="color: #092e64;">i</span><span style="color: #c0c0c0;"> </span>*<span style="color: #c0c0c0;"> </span><span style="color: #092e64;">numChannels</span>];</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #008000;"></span><span style="color: #808000;">if</span><span style="color: #c0c0c0;"> </span>(<span style="color: #092e64;">val</span><span style="color: #c0c0c0;"> </span>><span style="color: #c0c0c0;"> </span><span style="color: #000080;">1</span><span style="color: #c0c0c0;"> </span>||<span style="color: #c0c0c0;"> </span><span style="color: #092e64;">val</span><span style="color: #c0c0c0;"> </span><<span style="color: #c0c0c0;"> </span>-<span style="color: #000080;">1</span>)</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;">{</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">    qDebug("Sample out of range %f", val);<br /></span><span style="color: #008000;"></span></pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">    </span><span style="color: #092e64;">val</span><span style="color: #c0c0c0;"> </span>=<span style="color: #c0c0c0;"> </span><span style="color: #000080;">0</span>;</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;">}</pre>
<pre style="-qt-paragraph-type: empty; -qt-block-indent: 0; text-indent: 0px; margin: 0px;"> </pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                    </span><span style="color: #808000;">break</span>;</pre>
<pre style="-qt-block-indent: 0; text-indent: 0px; margin: 0px;"><span style="color: #c0c0c0;">                </span>}</pre>
<pre style="-qt-paragraph-type: empty; -qt-block-indent: 0; text-indent: 0px; margin: 0px;"> </pre>
<p><br /></p>
<div id="v1signature">
<div class="v1pre" style="margin: 0; padding: 0; font-family: monospace;">---<br /><a href="http://www.kitfox.com" target="_blank" rel="noopener noreferrer">http://www.kitfox.com</a></div>
<div class="v1pre" style="margin: 0; padding: 0; font-family: monospace;"> </div>
</div>
</div>
</div>
<br />
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">_______________________________________________<br />Libav-user mailing list<br /><a href="mailto:Libav-user@ffmpeg.org">Libav-user@ffmpeg.org</a><br /><a href="https://ffmpeg.org/mailman/listinfo/libav-user" target="_blank" rel="noopener noreferrer">https://ffmpeg.org/mailman/listinfo/libav-user</a><br /><br />To unsubscribe, visit link above, or email<br /><a href="mailto:libav-user-request@ffmpeg.org">libav-user-request@ffmpeg.org</a> with subject "unsubscribe".</div>
</blockquote>
</body></html>