On Sat, 28 Nov 2009 10:25:13 +0100
>>>>>> "Francesco" == Francesco Romani <from...@gmail.com> wrote:

Francesco> the rgb24 internal format should'nt be used if the source
Francesco> material is already in yuv420 colorspace because doing the
Francesco> conversion is slower and (slightly) degrades the quality,
Francesco> that's the only reason.

I'm told it's slower, wasn't sure about degrading the quality.


Francesco> > > cmove asm decode_mpeg2.c  libmpeg2 acceleration: mmxext
Francesco> > > /usr/bin/dvdcpics: line 263: 17694 Segmentation
Francesco> > > fault ...  
Francesco> > transcode wants to use mmxext instruction set while my cpu
Francesco> > (i7 860) does not provide it
Francesco> 
Francesco> More precisely, libmpeg2 wants to.
Francesco> If that's the root of the problem, then it's a libmpeg2
Francesco> problem and there is little than we (as transcode team) we
Francesco> can do.

Hmm, I was looking at libmpeg2's configure, but didn't see any option
to enable/disable mmxext set. :-(

Francesco> However. I must admit than I know the i7 cpus only by
Francesco> reading docs, but I'm an hardware junkie and so I'm pretty
Francesco> confident that your cpu provides such instructions.

Heh, see below:

[g...@gaura-nitai gour] cat /proc/cpuinfo | grep flags flags: fpu vme
de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm
constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable
nonstop_tsc pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr
pdcm sse4_1 sse4_2 popcnt lahf_lm ida tpr_shadow vnmi flexpriority ept
vpid

Francesco> `mmxext' is deep jargon (mostly found on linux field AFAIK)
Francesco> for some MMX extended instructions that aren't explicitly
Francesco> advertised; I can't recall the exact details but those were
Francesco> added together with the first round of SSE or something like
Francesco> that.

I also do not have any knowledge about it.

Francesco> So, unless I missing something huge, the core i7 definitley
Francesco> support them :)

Is cpuingo lying then?

Francesco> Uhm, looks like an unconventional choice of flags to me;

Well, I've followed distro's default and bumping to 1.1.5.

Francesco> However, as written above, the libmpeg2 asm acceleration is
Francesco> mostly out of control of transcode.

OK.

So 

> cmove asm decode_mpeg2.c  libmpeg2 acceleration: mmxext

means that libmpeg2 is wrongly detecting accelaration capabilities.

By inspecting libmpeg2's sources, I've found the following:

#if defined(ARCH_X86) || defined(ARCH_X86_64)
static inline uint32_t arch_accel (uint32_t accel)
{
    if (accel & (MPEG2_ACCEL_X86_3DNOW | MPEG2_ACCEL_X86_MMXEXT))
        accel |= MPEG2_ACCEL_X86_MMX;
        
    if (accel & (MPEG2_ACCEL_X86_SSE2 | MPEG2_ACCEL_X86_SSE3))
        accel |= MPEG2_ACCEL_X86_MMXEXT;
        
    if (accel & (MPEG2_ACCEL_X86_SSE3))
        accel |= MPEG2_ACCEL_X86_SSE2;


and it looks that the above code is wrong assuming, if I'm correct,
that MPEG2_ACCEL_X86_SSE2 | MPEG2_ACCEL_X86_SSE3 means there are
MMXEXT available, right?

Francesco> > I've tried to set --accel C, but it does not help.
Francesco> > Any hint?
Francesco> 
Francesco> Recompile libmpeg2.

I already did it, but it crashes.

Francesco> The other (and independent) way to go is patching the
Francesco> transcode's mpeg2 import module.

Don't know what it would involve, but I'll inform libmpeg2 crew.


Sincerely,
Gour

-- 

Gour  | Hlapicina, Croatia  | GPG key: F96FF5F6
----------------------------------------------------------------

Attachment: signature.asc
Description: PGP signature

Reply via email to