[Cin] Interlace driving me mad .....

Andrew Randrianasulu randrianasulu at gmail.com
Wed Dec 2 05:37:28 CET 2020


В сообщении от Wednesday 02 December 2020 02:27:43 Phyllis Smith via Cin написал(а):
> Andrew,
> I could not reproduce the crash I got the other day so have finally *checked
> into GIT interlace_aspect_autodetect-12.patch *(from the ru download
> site).  I tested and saw the correct interlace mode in the Resources window
> media folder "info" and under Settings->Format.  Also looked at the code
> but I do not know much about C++.  But the one thing that I for sure do not
> comprehend in the patch is the section in fileffmpeg.C about the Fixups
> (maybe this was explained in a different email though):

Well, if you try to bring up 'format options' for say mkv or qt format CinGG will complain without this patch
Just names used  for format (container) not always match what libavcodec/libavformat use ...
This code tries to fix up difference, so you can set some of container options via GUI now.

> 
>         Asset *asset = fmt_config->asset;
>         char *format_name = asset->fformat;
> +       char *replace_name0 = "mov";
> +       char *replace_name1 = "mpegts";
> +       char *replace_name2 = "matroska";
> +       if (!strcmp(format_name, "qt"))
> +               format_name = replace_name0; // fixup
> +       if (!strcmp(format_name, "m2ts"))
> +               format_name = replace_name1; // fixup
> +       if (!strcmp(format_name, "mkv"))
> +               format_name = replace_name2; // fixup
> 
> And in mwindow.C, why is it needed to specifically add the following?:

well, in theory  this must be function, not code duplication ..
this just sets session (display) aspect ratio   (so if you bring up 'mainwindow menu->Format' you 
will see correcty-picked up values, not default 4:3)

I'm a bit confused between session vs asset, because encoding for example seems to use 
asset's parameters (or may be they just stored there).

> 
> +       float ar = asset->aspect_ratio;
> +       if (ar) {
> +       //printf ("Aspect ratio from asset: %f \n", ar);
> +       if( EQUIV(ar, 1.3333) ) { session->aspect_w = 4;  session->aspect_h
> = 3;  }
> +       if( EQUIV(ar, 1.7777) ) { session->aspect_w = 16; session->aspect_h
> = 9;   }
> +       if( EQUIV(ar, 2.1111) ) { session->aspect_w = 19; session->aspect_h
> = 9;  }
> +       if( EQUIV(ar, 2.2222) ) { session->aspect_w = 20; session->aspect_h
> = 9;   }
> +       if( EQUIV(ar, 2.3333) ) { session->aspect_w = 21; session->aspect_h
> = 9;   }
> +       if( EQUIV(ar, 2.370370) ) { session->aspect_w = 64;
> session->aspect_h = 27; }
> 




More information about the Cin mailing list