return ret;
}
+static PangoFT2FontMap *fontmap = NULL;
+
mlt_producer producer_pango_init( const char *filename )
{
producer_pango this = calloc( sizeof( struct producer_pango_s ), 1 );
{
mlt_producer producer = &this->parent;
+ // THIS SHOULD BE MUTEXED...
+ if ( fontmap == NULL )
+ fontmap = (PangoFT2FontMap*) pango_ft2_font_map_new();
+
producer->get_frame = producer_get_frame;
producer->close = ( mlt_destructor )producer_close;
{
// Clone our image
uint8_t *copy = mlt_pool_alloc( size );
- if ( copy != NULL )
+ if ( copy != NULL && image != NULL )
memcpy( copy, image, size );
// We're going to pass the copy on
// Set producer-specific frame properties
mlt_properties_set_int( properties, "progressive", 1 );
- mlt_properties_set_double( properties, "aspect_ratio", 1 );
+ mlt_properties_set_double( properties, "aspect_ratio", 0 );
// Set alpha call back
( *frame )->get_alpha_mask = producer_get_alpha_mask;
static GdkPixbuf *pango_get_pixbuf( const char *markup, const char *text, const char *font, rgba_color fg, rgba_color bg, int pad, int align, int weight, int size )
{
- PangoFT2FontMap *fontmap = (PangoFT2FontMap*) pango_ft2_font_map_new();
PangoContext *context = pango_ft2_font_map_create_context( fontmap );
PangoLayout *layout = pango_layout_new( context );
int w, h, x;
src += bitmap.pitch;
}
mlt_pool_release( bitmap.buffer );
+ pango_font_description_free( desc );
g_object_unref( layout );
g_object_unref( context );
- g_object_unref( fontmap );
return pixbuf;
}