From: Sergio B. <ser...@gm...> - 2013-02-17 23:00:56
|
On 16/02/13 04:40, fr...@us... wrote: > Revision: 4888 > http://sourceforge.net/p/fuse-emulator/code/4888 > Author: fredm > Date: 2013-02-16 03:40:21 +0000 (Sat, 16 Feb 2013) > Log Message: > ----------- > Check the codec supports signed 16 bit PCM samples before trying to use them. > Hi Fred, I think this check is not working right at all, e.g., 1. avcodec_find_encoder_by_name() in out_write_ffmpegheader() looks for a encoder, let's name it CODEC1. 2. check_sample_fmt() check the input format of CODEC1. 3. avcodec_find_encoder() in open_audio() looks for the *first* non-experimental encoder of the same type, or an experimental encoder if not available. Let's name it CODEC2. 4. fmfconv use CODEC2 for transcoding. So check_sample_fmt() could test the properties of a codec that is not used in the final encoding. Another problem is the non deterministic behaviour of --acodec switch, e.g., a user request the `aac' encoder but fmfconv ends using `libvo_aacenc' in a hidden way. I propose these fixes: - look for an encoder in out_write_ffmpegheader() and use the same encoder on later stages. - remove ffmpeg_acodec and ffmpeg_vcodec from the ipod profile, so av_guess_format() could suggest an encoder better than ffmpeg's `aac' (libvo_aacenc on windows). http://pastebin.com/K3MffVAS Cheers, Sergio |