Hi.I have the following case: I am receiving audio stream which consist of 2 channel float 32 (non planar) audio frames. Then I am trying to convert those into AV_SAMPLE_FMT_FLTP in order to encode with AAC codec. The problem is that I receive that data as packets of size different from what my AVFrame has. AVFrame for this codec has 2 buffers,each 1024 samples,which is 4096 bytes per channel (32bit sample size),right? So it looks like I have to fill the frame with all 4096 bytes before pushing it into encoder?Is it possible to submit 'custom' frames,with different amount of data from what I am getting in codec context? Second question:
I resample from non planar FLT to FLTP as follows: const unsigned char *srcplanes[2]; unsigned char *dstplanes[2]; srcplanes[0] = (unsigned char*)packet.data; srcplanes[1] = NULL; dstplanes[0] = (unsigned char*)mAudioInputFrame->data[0]; dstplanes[1] = (unsigned char*)mAudioInputFrame->data[1]; int framesToWrite = packet.dataSize / 8; int samples = (int)av_rescale_rnd(NumFramesWritten, 44100, 44100, AV_ROUND_UP); int samplesConverted = swr_convert(swrCxt, dstplanes, samples, srcplanes, framesToWrite ); Here, *packet.data* is the src audio data buffer from the stream,which has almost half of the size of the mAudioInputFrame, which has 4096 bytes per channel. So how does swr_convert know how many bytes to take from the srcplanes? Does it operate based on the size of the destination frame? If yes,then it means I have to provide *packet.data * with data size EXACTLY equal the size of the destination AVFrame buffers?
_______________________________________________ Libav-user mailing list Libav-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/libav-user