[Kdenlive-devel] [PATCH] Update FFV1 profiles

Till Theato root at ttill.de
Sun Jun 10 21:28:21 UTC 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 06/09/2012 06:19 PM, Dan Dennedy wrote:
> On Sat, Jun 9, 2012 at 1:05 AM, Till Theato <root at ttill.de> wrote: 
> On 06/09/2012 04:30 AM, Dan Dennedy wrote:
>>>> On Fri, Jun 8, 2012 at 6:57 PM, Lou <lou at lrcd.com> wrote:
>>>>> On Fri, 8 Jun 2012 08:25:45 -0700 Dan Dennedy
>>>>> <dan at dennedy.org> wrote:
>>>>> 
>>>>>> On Thu, Jun 7, 2012 at 10:47 PM, Simon A. Eugster 
>>>>>> <simon.eu at gmail.com> wrote:
>>>>>>> Thanks Lou, this worked.
>>>>>>> 
>>>>>>> @Devs, I get a message that pcm_s16le is not supported,
>>>>>>> and saw that although ffmpeg does support it, MLT does
>>>>>>> not (or at least it is not listed).
>>>>>>> 
>>>>>>> Why is this?
>>>>>> 
>>>>>> it does as far as I know, but maybe your MLT is old or
>>>>>> you have an incompatible version of libavcodec:
>>>>>> 
>>>>> 
>>>>> I also see the "Unsupported audio codec: pcm_s16le" message
>>>>> in Render > AVI DV for example on Arch Linux.
>>>>> 
>>>>> $ kdenlive --version Qt: 4.8.2 KDE Development Platform:
>>>>> 4.8.3 (4.8.3) Kdenlive: 0.9.2
>>>>> 
>>>>> $ melt --version melt 0.7.8
>>>> 
>>>> released Feb. 13, but the fix I noted is dated Feb. 25. The
>>>> newest version is 0.8.0
> 
> Hey,
> 
> I use latest MLT from git (0.8.1) and have the same problem with 
> ffmpeg 0.10.3
> 
>> I downloaded the release version of ffmpeg and reproduced the
>> problem. The problem is this commit in MLT:
> 
>> commit 0967c0dc30a4e91d26ef72c0d5cd2c69dda8613b Author: Brian
>> Matherly <pez4brian at yahoo.com> Date:   Sun Mar 18 14:18:47 2012
>> -0500
> 
>> Fix incorrect precompiler conditionals for libav/ffmpeg
>> versions.
> 
>> Needed to support ffmpeg 0.9 and 0.10 releases.
> 
>> diff --git a/src/modules/avformat/consumer_avformat.c 
>> b/src/modules/avformat/consumer_avformat.c index 0b0322e..424ad9f
>> 100644 --- a/src/modules/avformat/consumer_avformat.c +++
>> b/src/modules/avformat/consumer_avformat.c @@ -237,7 +237,7 @@
>> static int consumer_start( mlt_consumer consumer ) 
>> mlt_properties_set_data( properties, "acodec", codecs, 0, 
>> (mlt_destructor) mlt_properties_close, NULL ); 
>> mlt_properties_set_data( doc, "audio_codecs", codecs, 0, NULL,
>> NULL ); while ( ( codec = av_codec_next( codec ) ) ) -#if
>> LIBAVCODEC_VERSION_INT >= ((53<<16)+(34<<8)+0) +#if
>> LIBAVCODEC_VERSION_INT >= ((54<<16)+(0<<8)+0)
> 
>> ...
> 
>> Here is a part of the e-mail from Brian explaining the
>> rationale:
> 
>> We chose to check for avcodec version 53.34.0 because that is
>> when the encode2 field was added to libav. The problem is that
>> libav and ffmpeg were not consistent with the libavcodec version
>> when they released it. ffmpeg first released it in 0.10 with
>> avcodec 53.60.100 while libav released it with 0.8 at 53.35.0.
>> ffmpeg 0.9 was released without encode2 at 53.42.0 - which breaks
>> because we look for encode2 and it isn't there. So... I recommend
>> that we just switch to checking for 54.0.0 because that is when
>> they both started actually using it.
> 
>> ---
> 
>> MLT is obviously affected by this libav/ffmpeg fork and their 
>> differences in versioning. A couple of months ago I looked for a
>> way to differentiate the two at the time of pre-processing and
>> only came up with something obscure and possibly unreliable: #if 
>> defined(FFUDIV). Besides, I really don't want to add a bunch to
>> the ffmpeg vs. libav tests to the already numerous ifdefs. So,
>> the general policy I have taken with MLT is to require a version
>> where it exists in both. So, basically, no, FFmpeg 0.10.3 is not
>> supported, but it already has a 0.11 branch, and it works with
>> git head.

Thanks a lot for looking into it. Totally understandable that you
don't want to add yet another ifdef.

> 
> The issue seems to be present on Ubuntu with libav too: 
> http://www.kdenlive.org/forum/pcms16le-codec-not-found-even-though-it-there-fixed#comment-17620
>
> 
>> Seems a different problem with that particular version of
>> libavcodec indicating that pcm_s16le is usable for decoding only.
>> Looks like the best solution is to patch it at the libav package
>> level as suggested by sunab.
> 
>>>> 
>>>>> 
>>>>> $ ffmpeg ffmpeg version 0.10.3 Copyright (c) 2000-2012 the
>>>>> FFmpeg developers
>>>> 
>>>> released May 6. Aggressive adoption of a volatile project
>>>> like FFmpeg is bound to create problems.
>>>> 
>>>>> built on May  9 2012 17:51:07 with gcc 4.7.0 20120505 
>>>>> (prerelease) configuration: --prefix=/usr
>>>>> --enable-libmp3lame --enable-libvorbis --enable-libxvid
>>>>> --enable-libx264 --enable-libvpx --enable-libtheora
>>>>> --enable-libgsm --enable-libspeex --enable-postproc
>>>>> --enable-shared --enable-x11grab
>>>>> --enable-libopencore_amrnb --enable-libopencore_amrwb
>>>>> --enable-libschroedinger --enable-libopenjpeg
>>>>> --enable-librtmp --enable-libpulse --enable-gpl
>>>>> --enable-version3 --enable-runtime-cpudetect 
>>>>> --disable-debug --disable-static libavutil      51. 35.100
>>>>> / 51. 35.100 libavcodec     53. 61.100 / 53. 61.100
>>>>> libavformat    53. 32.100 / 53. 32.100 libavdevice    53.
>>>>> 4.100 / 53.  4.100 libavfilter     2. 61.100 /  2. 61.100
>>>>> libswscale      2.  1.100 /  2.  1.100 libswresample   0.
>>>>> 6.100 /  0.  6.100 libpostproc 52.  0.100 / 52.  0.100
>>>>> 
>>>>> $ ffmpeg -codecs | grep pcm_s16le DEA D  pcm_s16le
>>>>> PCM signed 16-bit little-endian
>>>> 
>>>> $ melt -query audio_codecs | grep pcm_s16le - pcm_s16le
>>>> 
>>>>> 
>>>>> This ffmpeg is from the repo although I usually compile my
>>>>> own and rarely use the repo version.
>>>> 
>>>> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)

iEYEARECAAYFAk/VEXMACgkQzwEyz7QP6nRSuwCcCP3EZXcodEWpZuAfdbARKDHC
UgYAoKYov6PbaIyFyUDAJEQ0iru5Ulyn
=bLIR
-----END PGP SIGNATURE-----




More information about the Kdenlive mailing list