[Cin] Cannot render above 60FPS

Andrew Randrianasulu randrianasulu at gmail.com
Mon Jun 14 13:27:38 CEST 2021


On Monday, June 14, 2021, gorge rankin via Cin <cin at lists.cinelerra-gg.org>
wrote:

> Hello,
>
> I cannot seem to figure out how to render video over 60FPS.
>


Yes,  i can confirm this bug.. Just set project/timeline to 100 fps and got
this..
After inspecting cinelerram/ffmpeg.C I tried few things, but working one
was just replacing this check_framerate function with std. function from
libavcodec:

https://ffmpeg.org/doxygen/3.2/group__lavu__math__rational.html#ga7dfd5ba1eb1edf5845ac32b338de9e76

AVRational FFMPEG::to_sample_aspect_ratio(Asset *asset)
@@ -2917,7 +2919,8 @@ int FFMPEG::open_encoder(const char *type, const char
*spec)
                        int mask_h = (1<<desc->log2_chroma_h)-1;
                        ctx->height = (vid->height+mask_h) & ~mask_h;
                        ctx->sample_aspect_ratio =
to_sample_aspect_ratio(asset);
- AVRational frame_rate = check_frame_rate(codec->supported_framerates,
vid->frame_rate);
+ //AVRational frame_rate = check_frame_rate(codec->supported_framerates,
vid->frame_rate);
+ AVRational frame_rate = av_d2q(vid->frame_rate, 1000);
                        if( !frame_rate.num || !frame_rate.den ) {
                                eprintf(_("check_frame_rate failed %s\n"),
filename);
                                ret = 1;
I tested 29.97 encoding and 100 and 1000 fps encoding - they come out
correctly, according to ffprobe/mediainfo.

Not sure why such strange convolved method of checking framerate was
choosen... Only mpeg1/2 in ffmpeg-4.4 set those .supported->framerates
arrays.. (grep supported_framerates libavcodec/*.c)


$ grep supported_framerates thirdparty/ffmpeg-4.4/libavcodec/*.c
thirdparty/ffmpeg-4.4/libavcodec/mpeg12enc.c: .supported_framerates =
ff_mpeg12_frame_rate_tab + 1,
thirdparty/ffmpeg-4.4/libavcodec/mpeg12enc.c: .supported_framerates =
ff_mpeg2_frame_rate_tab,
$

In theory this fix should also 'fix' high-fps proxies with mpeg2
(non-standart stream, but only ffmpeg supposed to read it..) Just checked
ffmpeg/mpeg type and it works....




> I can do 60 FPS and below with no issue.  Everything is rock solid stable
> and very performant.
>
> I am using Cin gg latest on Ubuntu.
>
> My source video is 2560x1440 at 90FPS.
>
> What I've been doing:
> - start new project
> - Settings -> Format, manually type 90.000 in "Frame Rate".  Ensure that
> 2560 and 1440 are in Width and Height accordingly.  Then I  click apply,
> then click OK.
> - load my file through resources. right click on thumb of my video in
> resources, and choose "match all".
>
> Then when I render my project with "File Format" of "FFMPEG" and "type" of
> "mp4" I get these error message windows/errors:
>
> One error window with:
> ------------
> "Couldn't open /path/to/outfile.mp4"
> ------------
>
> and another window titled "Cinelerra: Messages" with this in it:
> --------------
> int FFMPEG:open_encoder(const char*, const char*):
>     check_frame_rate failed /path/to/outfile.mp4
> ---------
>
>
> Am I doing something wrong?
>
> Thank you in advance.
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20210614/b637da16/attachment.htm>


More information about the Cin mailing list