So, I tried to clarify a bit that we have display aspect ratio selectable,
updated cingg team copyright year, added even more finegrained sar/dar
reporting (guessed, container detected, codec detected).
I tried to use libavutil function for reporting SAR in setformat.C but it
need some dynamic gui subwindow/object, not static BCTitle... so just
prototype that does not update as you update window, only calculated on
window objects create time, so each time you reopen set format window.
3 new git diff patches hopefully for application
0003 should be applied on top of
0001-Add-guessed-detected-SAR-DAR-values-to-ffmpeg-asset-.patch
from another thread
one plain diff patch just for showing where SAR info might surface if I
ever learn now to create dynamic text subwindows :)
diff --git a/cinelerra-5.1/cinelerra/setformat.C
b/cinelerra-5.1/cinelerra/setformat.C
index 4d96a607..9de59765 100644
--- a/cinelerra-5.1/cinelerra/setformat.C
+++ b/cinelerra-5.1/cinelerra/setformat.C
@@ -45,6 +45,10 @@
#include "vwindow.h"
#include "vwindowgui.h"
+extern "C"
+{
+#include <libavutil/rational.h>
+}
SetFormat::SetFormat(MWindow *mwindow)
@@ -454,6 +458,21 @@ void SetFormatWindow::create_objects()
(ArrayList<BC_ListBoxItem*>*)&mwindow->interlace_project_modes,
mwindow->theme->setformat_x4 + textbox->get_w(), y));
y += mwindow->theme->setformat_margin;
+
+
+ char sar_string[BCTEXTLEN];
+ float aspect_w = thread->new_settings->session->aspect_w;
+ float aspect_h = thread->new_settings->session->aspect_h;
+ int w = thread->dimension[0];
+ int h = thread->dimension[1];
+ int sar_num = (aspect_w/aspect_h)*w;
+ int sar_den = (aspect_w/aspect_h)*h;
+ int s_num = 0, s_den = 0;
+ int ret = av_reduce(&s_num, &s_den, sar_num, sar_den, 1000);
+ sprintf(sar_string, "SAR: %i:%i \n", s_num, s_den);
+ add_subwindow(new BC_Title(mwindow->theme->setformat_x3,
+ y,
+ (const char *)sar_string));
BC_OKTextButton *ok;
BC_CancelTextButton *cancel;
From 26186a1eb9b082216daaec51414eb61d01fe59af Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <[email protected]>
Date: Tue, 9 Jan 2024 05:31:44 +0300
Subject: [PATCH 4/5] Clarify in setformat.C that we have Display aspect ratio
selectable
---
cinelerra-5.1/cinelerra/setformat.C | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cinelerra-5.1/cinelerra/setformat.C b/cinelerra-5.1/cinelerra/setformat.C
index 4d96a607..ec6a5c82 100644
--- a/cinelerra-5.1/cinelerra/setformat.C
+++ b/cinelerra-5.1/cinelerra/setformat.C
@@ -421,7 +421,7 @@ void SetFormatWindow::create_objects()
y += mwindow->theme->setformat_margin;
add_subwindow(new BC_Title(mwindow->theme->setformat_x3,
y,
- _("Aspect ratio:")));
+ _("Disp. Aspect ratio:")));
y += mwindow->theme->setformat_margin;
x = mwindow->theme->setformat_x3;
add_subwindow(aspect_w = new ScaleAspectText(x, y, thread,
--
2.43.0
From 8c4e058187f8e653dc42967e954aea91d4e8fd5c Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <[email protected]>
Date: Tue, 9 Jan 2024 05:34:07 +0300
Subject: [PATCH 5/5] Update cingg team copyright info for 2024
---
cinelerra-5.1/cinelerra/versioninfo.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cinelerra-5.1/cinelerra/versioninfo.h b/cinelerra-5.1/cinelerra/versioninfo.h
index 7e2a528f..852542f5 100644
--- a/cinelerra-5.1/cinelerra/versioninfo.h
+++ b/cinelerra-5.1/cinelerra/versioninfo.h
@@ -9,7 +9,7 @@
#define COPYRIGHTTEXT1 "(c) 2006-2019 Heroine Virtual Ltd. by Adam Williams\n"
#define COPYRIGHTTEXT2 "2007-2020 mods for Cinelerra-GG by W.P.Morrow aka goodguy\n"
#define COPYRIGHTTEXT3 "2003-2017 mods for Cinelerra-CV by CinelerraCV team\n"
-#define COPYRIGHTTEXT4 "2015-2023 mods for Cinelerra-GG by Cinelerra-GG team\n"
+#define COPYRIGHTTEXT4 "2015-2024 mods for Cinelerra-GG by Cinelerra-GG team\n"
#undef COMPILEDATE
--
2.43.0
From 40e41e3569648ba2f70208b2ed1fbedf1156ca83 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <[email protected]>
Date: Tue, 9 Jan 2024 05:30:15 +0300
Subject: [PATCH 3/5] Add diff between codec sar/dar and container sar/dar,
mostly for troubleshooting aspect ratio problesms
---
cinelerra-5.1/cinelerra/ffmpeg.C | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C
index 47e811b2..51171a01 100644
--- a/cinelerra-5.1/cinelerra/ffmpeg.C
+++ b/cinelerra-5.1/cinelerra/ffmpeg.C
@@ -2546,8 +2546,9 @@ int FFMPEG::info(char *text, int len)
report("/ range:%s\n", rg ? rg : unkn);
AVRational sar = av_guess_sample_aspect_ratio(fmt_ctx, st, NULL);
- if(sar.num) {
AVRational display_aspect_ratio;
+ if(sar.num) {
+
av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den,
st->codecpar->width * (int64_t)sar.num,
st->codecpar->height * (int64_t)sar.den,
@@ -2555,15 +2556,21 @@ int FFMPEG::info(char *text, int len)
report(" Guessed SAR: %d:%d, ", sar.num, sar.den );
report("DAR: %d:%d \n", display_aspect_ratio.num, display_aspect_ratio.den);
}
- if (st->sample_aspect_ratio.num &&
- av_cmp_q(st->sample_aspect_ratio, st->codecpar->sample_aspect_ratio))
+ if (st->sample_aspect_ratio.num)
{
- AVRational display_aspect_ratio;
av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den,
st->codecpar->width * (int64_t)st->sample_aspect_ratio.num,
st->codecpar->height * (int64_t)st->sample_aspect_ratio.den,
1024 * 1024);
- report(" Detected SAR: %d:%d , DAR %d:%d \n", st->sample_aspect_ratio.num, st->sample_aspect_ratio.den, display_aspect_ratio.num, display_aspect_ratio.den);
+ report(" container Detected SAR: %d:%d , DAR %d:%d \n", st->sample_aspect_ratio.num, st->sample_aspect_ratio.den, display_aspect_ratio.num, display_aspect_ratio.den);
+ }
+ if (st->codecpar->sample_aspect_ratio.num)
+ {
+ av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den,
+ st->codecpar->width * (int64_t)st->codecpar->sample_aspect_ratio.num,
+ st->codecpar->height * (int64_t)st->codecpar->sample_aspect_ratio.den,
+ 1024 * 1024);
+ report(" codec Detected SAR: %d:%d , DAR %d:%d \n", st->codecpar->sample_aspect_ratio.num, st->codecpar->sample_aspect_ratio.den, display_aspect_ratio.num, display_aspect_ratio.den);
}
double secs = to_secs(st->duration, st->time_base);
int64_t length = secs * vid->frame_rate + 0.5;
--
2.43.0
--
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin