Re: [Mlt-devel] melt / kdenlive just crashes after startup on PPC [solved] [hackfixed]
Brought to you by:
ddennedy,
lilo_booter
From: Dan D. <da...@de...> - 2009-08-29 23:40:05
|
On Sat, Aug 29, 2009 at 3:52 PM, Christoph Rudorff<ch...@u-...> wrote: > Hi Dan! > > I do assembly but I don't x86. So I read about SSE (wikipedia) it seems > that it needs alignment, too. So I would remove the #ifdef and make it Agreed. It will not hurt. > default. And I remembered the correct gcc macro: > > > // align to 16 byte in case we toss buffers to external assembly > // optimized libraries (sse/altivec) > // > // I don't start a flame war about pointer arithmetics here. > > typedef struct __attribute__ ((aligned (16))) mlt_release_s { > mlt_pool pool; > int references; > } > *mlt_release; > > > So u are also into kdenlive? So far it's running stable here ;) but there Yes > are some "little" endian issues: false colors in the gui. If you can explain more, I can help direct you more to the problem area. If you say, "GUI" then to me it means not in the rendered/shown video - like perhaps misinterpretation of a color value. > Are there any handcoded color conversations yuv->rgb in mlt or kdenlive or > are they _all_ done by other libraries? Mostly in MLT. see src/modules/core/filter_imageconvert.c. Most operations are done byte-wise, so should be safe. MLT defines mlt_image_rgb24 to be literally R8 G8 B8, and mlt_image_rgb24a as R8 G8 B8 A8. When interfacing with some libs, it is not always clear what you are working with. Such libs include libavcodec, gtk2, qt, and frei0r. In src/framework/mlt_property.c:mlt_property_atoi() there is a conversion from color string value to an int that might be used in various places. > greets from Amsterdam > > chris > Thank you for your help. > > Dan Dennedy schrieb: >> On Sat, Aug 29, 2009 at 8:11 AM, Christoph Rudorff<ch...@u-...> wrote: >>> mh ... and there is another bug: >>> >>> src/framework/mlt_pool.c >>> >>> @@ -266,7 +278,7 @@ void *mlt_pool_alloc( int size ) >>> int index = 8; >>> >>> // Minimum size pooled is 256 bytes >>> - size = size + sizeof( mlt_release ); >>> + size = size + sizeof( struct mlt_release_s ); >>> while ( ( 1 << index ) < size ) >>> index ++; >>> >> >> very good catch. your patches are applied. >> > -- +-DRD-+ |