On Apr 28, 2013, at 12:22 PM, Bruce Wheaton <[email protected]> wrote:

> Why don't you just check the addresses of the data planes and know it? It's 2 
> minutes to check a few times.

Bruce...thanks for the advice. The data in both channel 1 and channel 2 (and as 
a whole), planar or not, and both in the captured sample buffer and in the 
source data buffer is 32-byte aligned (has been all along). I tested both. 
Beyond that, just for good measure, I went through the exercise of moving 
sample values anyway from the capture buffer to the FFmpeg-allocated source 
data buffer created with av_samples_alloc_array_and_samples -- so by definition 
it should have been aligned (checked it still though)....same result, data 
aligned just as before,  but same distortion. 

It appears however I've found the problem. First, after reading that aac is 
apparently a dead codec, I dumped it and went to libmp3lame. Ran it, same 
problem. Did some further debugging...revisited this. In avcodec.h, there is 
this doc above the frame_rate variable: 

     * Number of samples per channel in an audio frame.
     *
     * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame
     *   except the last must contain exactly frame_size samples per channel.
     *   May be 0 when the codec has CODEC_CAP_VARIABLE_FRAME_SIZE set, then the
     *   frame size is not restricted.

In creating the destination data buffer for resampling and the eventual frame 
to be streamed, I'd been using the frame_size value computed by libavcodec in 
avcodec_open2 as my destination number of samples (which the doc would suggest 
is what should be done -- and in my journeys through code snippets and blogs 
encountered in the series of tubes, it was suggested this was a proper 
approach). I otherwise would not have thought anything of it had I not been 
checking this computed value and noticed that libmp3lame results in a value of 
1152, which was different than what I'd seen coming off other codecs. So I 
ditched using the frame_size, went back to using the number of samples as 
received by capture. Don't know what to make of the doc above. My frames 
contain 512 samples, while the frame_size of the codec context is 1152. 

Result, clear audio, both alone and combined with video, both written to a 
local file and streamed. More tests are needed to verify consistently 
problem-free function, but seems to work as desired. 

Brad

_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to