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

Reply via email to