2011-12-16 2 views
1

x264 lib рушится на Windows, как всегда. Теперь я пытаюсь это исправить, и я ничего не понимаю. В коде мы можем видеть только сигнатуру функции:x264_coeff_last64_sse2

int x264_coeff_last64_sse2(dctcoef *dct); 

Но, нет реализации в * .h, * .c или * Источник .asm. Как это возможно ???

(функция вызывается и разбился, поэтому он должен быть связан с)

ответ

1

Они быть немного сложнее :) Это на самом деле определяется как макрос в quant.c строке 356 с моей мерзавца проверки.

Вот определение:

#define last(num)\ 
static int x264_coeff_last##num(dctcoef *l)\ 
{\ 
    int i_last = num-1;\ 
    while(i_last >= 0 && l[i_last] == 0)\ 
     i_last--;\ 
    return i_last;\ 
} 

EDIT: Я думаю, что это код сборки вы искали в строках (1317-1363) в x264\common\x86\quant-a.asm:

%ifndef ARCH_X86_64 
cglobal coeff_last64, 1, 5-mmsize/16 
    pxor m2, m2 
    LAST_MASK 16, r2d, r0+SIZEOF_DCTCOEF* 32, r4d 
    LAST_MASK 16, r3d, r0+SIZEOF_DCTCOEF* 48, r4d 
    shl r3d, 16 
    or r2d, r3d 
    xor r2d, -1 
    jne .secondhalf 
    LAST_MASK 16, r1d, r0+SIZEOF_DCTCOEF* 0, r4d 
    LAST_MASK 16, r3d, r0+SIZEOF_DCTCOEF*16, r4d 
    shl r3d, 16 
    or r1d, r3d 
    not r1d 
    BSR eax, r1d, 0x1f 
    RET 
.secondhalf: 
    BSR eax, r2d, 0x1f 
    add eax, 32 
    RET 
%else 
cglobal coeff_last64, 1,4 
    pxor m2, m2 
    LAST_MASK 16, r1d, r0+SIZEOF_DCTCOEF* 0 
    LAST_MASK 16, r2d, r0+SIZEOF_DCTCOEF*16 
    LAST_MASK 16, r3d, r0+SIZEOF_DCTCOEF*32 
    LAST_MASK 16, r0d, r0+SIZEOF_DCTCOEF*48 
    shl r2d, 16 
    shl r0d, 16 
    or r1d, r2d 
    or r3d, r0d 
    shl r3, 32 
    or r1, r3 
    not r1 
    BSR rax, r1, 0x3f 
    RET 
%endif 
%endmacro 

%ifndef ARCH_X86_64 
INIT_MMX mmx2 
COEFF_LAST 
%endif 
INIT_XMM sse2 
COEFF_LAST 
INIT_XMM sse2, lzcnt 
COEFF_LAST 

Надежда, что помогает !

+0

Я считаю, что это называется, когда вы исключаете использование asm. Проблематичный написан в asm (по крайней мере, я так полагаю). И у него есть суффикс sse2. – moose

+1

Является ли обновленная сборка тем, что вы искали? – mevatron

+0

Хм, если это так ... Какая связь между x264_coeff_last64_sse2() и coeff_last64? – moose

 Смежные вопросы

  • Нет связанных вопросов^_^