2009/1/17, Arjan <[email protected]>: > > > Op 18 jan 2009, om 00:54 heeft Franco Amato het volgende geschreven: > > > Hi to all, > > I have a problem that I can not solve. > > In my encoder I'm encoding video and audio, the problem comes with > > the audio > > part. > > My original audio raw samples are pcm float -1/+1 stereo. So I have > > 4 bytes > > (2 for the L channel and 2 for the R channel TOTAL = 4 bytes). > > floats are in fact 4 bytes -> 32bit > for a second of audio stored using float with a sample rate of 48Khz, > you would need 48000 * 2 chan * 4 bytes = 384000 bytes. > > > > > To encode an audio frame and use the avcodec_encode_audio ffmpeg > > need the > > samples to be > > signed short (2 bytes - 1 for the L channel and 1 for the R channel > > TOTAL = > > 2 bytes) so to use this routine I need to convert my original raw > > samples > > from float to signed short. > > I use this simple algorithm > > > > sample_signed_short = (signed short) sample_float * 32767; // this > > for every > > sample I have > > > > Doing this I'm sure I loose lots of quality because 1 byte can not > > store the > > information that 2 bytes contains right? In fact the quality of the > > audio of > > my produced mpeg is very bad. > > you should probably check if you are actually converting samples or > just parts of them.. > There should be no audiable loss when converting from 32- to 16bit > samples under standard conditions. > You may run into trouble when the source of audio is recorded on very > low levels (only using the lowest bits)
Yes it's so. The values of the original samples are very little. What can I do? I can post here the code where I do the conversion. Regards, - Arjan Franco _______________________________________________ libav-user mailing list [email protected] https://lists.mplayerhq.hu/mailman/listinfo/libav-user -- Franco Amato _______________________________________________ libav-user mailing list [email protected] https://lists.mplayerhq.hu/mailman/listinfo/libav-user
