The affine filter does not set any of the "transition.*" or "use_normalized" 
properties when it is initialized. You need to set them 
yourself:https://github.com/mltframework/mlt/blob/master/src/modules/plus/filter_affine.c#L157

In the absence of setting the "transition.*" properties, the encapsulated 
affine transition will use its own default parameters. But those are not 
reflected by the affine filter 
automatically:https://github.com/mltframework/mlt/blob/master/src/modules/plus/transition_affine.c#L694

In the absence of setting the "use_normalized" property, the properties object 
will return "0" 
(false):https://github.com/mltframework/mlt/blob/9c3bb7d997a78fed3142c2ef95988623d21dce15/src/modules/plus/filter_affine.c#L98

~Brian


    On Saturday, January 1, 2022, 10:10:25 AM CST, José María García Pérez 
<josemaria.alk...@gmail.com> wrote:  
 
 I managed to write a pure C example, and I am getting something similar to 
what I get with NIm:// $ gcc ex02.c -I/usr/include/mlt-7 -lmlt-7 -o ex02// 
Inspired by: 
https://stackoverflow.com/questions/62983626/how-to-compile-a-simple-mlt-example-in-c#include
 <stdio.h>#include <unistd.h>#include <framework/mlt.h>
int main( int argc, char *argv[] ){ // Initialise the factory if ( 
mlt_factory_init( "/usr/lib/mlt-7" ) > 0 ) { mlt_profile p = 
mlt_profile_init("hdv_720_50p"); // Create the default consumer mlt_consumer 
hello = mlt_factory_consumer( p, "sdl2", NULL ); 
mlt_properties_set_int(mlt_consumer_properties(hello), "terminate_on_pause", 1);
 // Create via the default producer mlt_producer world = mlt_factory_producer( 
p, NULL, argv[ 1 ] );
 // Create filter mlt_filter aff = mlt_factory_filter( p, "affine", NULL );
 mlt_properties affprop = mlt_filter_properties(aff); for(int i=0; 
i<mlt_properties_count(affprop); ++i) { printf( "%d %s",i, 
mlt_properties_get_name(affprop, i ) ); printf("\n"); }
 // if (mlt_properties_exists(mlt_filter_properties(aff), "background") > 0) { 
// printf("background exists\n"); // } int res = 
mlt_service_attach(mlt_producer_service(world), aff);

 // Connect the producer to the consumer mlt_consumer_connect( hello, 
mlt_producer_service( world ) );
 // Start the consumer mlt_consumer_start( hello );

 // Wait for the consumer to terminate while( !mlt_consumer_is_stopped( hello ) 
) sleep( 1 );
 // Close the consumer mlt_consumer_close( hello );
 // Close the producer mlt_producer_close( world );
 // Close the factory mlt_factory_close( ); } else { // Report an error during 
initialisation fprintf( stderr, "Unable to locate factory modules\n" ); }
 // End of program return 0;}
With this example I get:$ gcc ex02.c -I/usr/include/mlt-7 -lmlt-7 -o ex02
$ ./ex02 example.mp4 
0 _events
1 mlt_type
2 in
3 out
4 background
5 _unique_id
6 mlt_service
7 _profile

As I said, I cannot see neither  "transition" nor "use_normalised". What do I 
need to do in C language to make them appear?
Kind regards,José M.
El vie, 31 dic 2021 a las 9:24, José María García Pérez 
(<josemaria.alk...@gmail.com>) escribió:

I think that my problem is that I am not handling properly nested properties, 
but before that I don't see the keys a would expect for the "affine" filter:
When I print the keys for the affine filter, I get the following:
_events
mlt_type
in
out
background
_unique_id
mlt_service
_profile

I am not seeing neither "transition" nor "use_normalised" keys that I would 
expect in accordance with 
https://www.mltframework.org/plugins/FilterAffine/#transition.
Any clue about what might be going on?

El jue, 30 dic 2021 a las 19:53, José María García Pérez 
(<josemaria.alk...@gmail.com>) escribió:

I was expecting a rotated image. The output was the video unmodified.
El jue, 30 dic 2021 a las 19:52, Brian Matherly (<brian.mathe...@yahoo.com>) 
escribió:

 > My first attempt wasn't very successful
What result did you expect, and what was the actual result?
    On Thursday, December 30, 2021, 12:28:42 PM CST, José María García Pérez 
<josemaria.alk...@gmail.com> wrote:  
 
 I wasn't aware about Shotcut doing so. Good to know.
My first attempt wasn't very successful. I did the following:# nim c 
--threads:on -r ex23_loader_videoimport mltimport oslet f = 
initFactory("/usr/lib/mlt-7")
# Create the consumerlet p = newProfile("hdv_720_50p")var sdl = 
newFactoryConsumer(p, "sdl2")
sdl["terminate_on_pause"] = 1 # Stop the consumer when finished
# Create via the default producervar clip1 = p.newMedia( 
"./resources/sygic.mp4")

var filter = newFactoryFilter(p, "affine")filter["transition.fill"] = 
1filter["transition.distort"] = 0filter["transition.rect"] = "339.703 126.468 
1430.3 953.532 1"filter["transition.valign"] = 
"middle"filter["transition.halign"] = "center"filter["transition.threads"] = 
0filter["transition.fix_rotate_x"] = 340.0
#[ <property name="background">color:#00000000</property> <property 
name="mlt_service">affine</property> <property 
name="shotcut:filter">affineSizePosition</property> <property 
name="transition.fill">1</property> <property 
name="transition.distort">0</property> <property name="transition.rect">339.703 
126.468 1430.3 953.532 1</property> <property 
name="transition.valign">middle</property> <property 
name="transition.halign">center</property> <property 
name="shotcut:animIn">00:00:00.000</property> <property 
name="shotcut:animOut">00:00:00.000</property> <property 
name="transition.threads">0</property> <property 
name="transition.fix_rotate_x">340.304</property>
]#clip1.attach(filter)clip1 > sdl
sdl.start # Start the consumer
while not sdl.stopped: sleep(1)
Do you spot something obvious that might be wrong?
El jue, 30 dic 2021 a las 18:52, Dan Dennedy (<d...@dennedy.org>) escribió:

You can use a tool like Shotcut and study it’s XML output to understand the 
properties for a filter. The affine filter is called Size, Position & Rotate. 
To get the XML use File > Save. 
On Thu, Dec 30, 2021 at 9:47 AM José María García Pérez 
<josemaria.alk...@gmail.com> wrote:

I don't understand how to use the affine filter: 
https://www.mltframework.org/plugins/FilterAffine/#transition
Could you post a basic C example using it? It would be nice to cover both the 
static and an animation case.
I had the following example about using a filter using Nim:import mlt, osvar f 
= initFactory()
# Create the default consumervar p = newProfile()var sdl = 
newFactoryConsumer(p, "sdl2")
# Create via the default producervar clip = newFactoryProducer(p, resource = 
"avformat:/home/jose/Descargas/sygic.mp4")
var filter = newFactoryFilter(p, "frei0r.pixeliz0r")filter["BlockSizeX"] = 
0.1filter["BlockSizeY"] = 0.2
clip.attach( filter )clip > sdl
# Start the consumersdl.start
while not sdl.stopped: sleep(1)_______________________________________________
Mlt-devel mailing list
Mlt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlt-devel


_______________________________________________
Mlt-devel mailing list
Mlt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlt-devel
  


  
_______________________________________________
Mlt-devel mailing list
Mlt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlt-devel

Reply via email to