3 |
* XVID MPEG-4 VIDEO CODEC |
* XVID MPEG-4 VIDEO CODEC |
4 |
* - Native API implementation - |
* - Native API implementation - |
5 |
* |
* |
6 |
* Copyright(C) 2001-2004 Peter Ross <pross@xvid.org> |
* Copyright(C) 2001-2011 Peter Ross <pross@xvid.org> |
7 |
|
* 2002-2011 Michael Militzer <isibaar@xvid.org> |
8 |
* |
* |
9 |
* This program is free software ; you can redistribute it and/or modify |
* This program is free software ; you can redistribute it and/or modify |
10 |
* it under the terms of the GNU General Public License as published by |
* it under the terms of the GNU General Public License as published by |
20 |
* along with this program ; if not, write to the Free Software |
* along with this program ; if not, write to the Free Software |
21 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
22 |
* |
* |
23 |
* $Id: xvid.c,v 1.82 2009-06-05 07:58:41 Isibaar Exp $ |
* $Id$ |
24 |
* |
* |
25 |
****************************************************************************/ |
****************************************************************************/ |
26 |
|
|
181 |
|
|
182 |
|
|
183 |
/***************************************************************************** |
/***************************************************************************** |
184 |
* XviD Init Entry point |
* Xvid Init Entry point |
185 |
* |
* |
186 |
* Well this function initialize all internal function pointers according |
* Well this function initialize all internal function pointers according |
187 |
* to the CPU features forced by the library client or autodetected (depending |
* to the CPU features forced by the library client or autodetected (depending |
206 |
cpu_flags = (init->cpu_flags & XVID_CPU_FORCE) ? init->cpu_flags : detect_cpu_flags(); |
cpu_flags = (init->cpu_flags & XVID_CPU_FORCE) ? init->cpu_flags : detect_cpu_flags(); |
207 |
|
|
208 |
/* Initialize the function pointers */ |
/* Initialize the function pointers */ |
|
idct_int32_init(); |
|
209 |
init_vlc_tables(); |
init_vlc_tables(); |
210 |
|
|
211 |
/* Fixed Point Forward/Inverse DCT transformations */ |
/* Fixed Point Forward/Inverse DCT transformations */ |
338 |
sse8_16bit = sse8_16bit_c; |
sse8_16bit = sse8_16bit_c; |
339 |
sse8_8bit = sse8_8bit_c; |
sse8_8bit = sse8_8bit_c; |
340 |
|
|
341 |
|
sseh8_16bit = sseh8_16bit_c; |
342 |
|
coeff8_energy = coeff8_energy_c; |
343 |
|
blocksum8 = blocksum8_c; |
344 |
|
|
345 |
init_GMC(cpu_flags); |
init_GMC(cpu_flags); |
346 |
|
|
347 |
#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) |
#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) |
573 |
sad16 = sad16_sse2; |
sad16 = sad16_sse2; |
574 |
dev16 = dev16_sse2; |
dev16 = dev16_sse2; |
575 |
|
|
576 |
|
/* PSNR-HVS-M distortion metric */ |
577 |
|
sseh8_16bit = sseh8_16bit_sse2; |
578 |
|
coeff8_energy = coeff8_energy_sse2; |
579 |
|
blocksum8 = blocksum8_sse2; |
580 |
|
|
581 |
/* DCT operators */ |
/* DCT operators */ |
582 |
fdct = fdct_sse2_skal; |
fdct = fdct_sse2_skal; |
583 |
idct = idct_sse2_skal; /* Is now IEEE1180 and Walken compliant. */ |
idct = idct_sse2_skal; /* Is now IEEE1180 and Walken compliant. */ |
699 |
return XVID_ERR_VERSION; |
return XVID_ERR_VERSION; |
700 |
|
|
701 |
info->actual_version = XVID_VERSION; |
info->actual_version = XVID_VERSION; |
702 |
info->build = "xvid-1.3.0-dev"; |
info->build = "xvid-1.3.2"; |
703 |
info->cpu_flags = detect_cpu_flags(); |
info->cpu_flags = detect_cpu_flags(); |
704 |
info->num_threads = 0; /* single-thread */ |
info->num_threads = 0; /* single-thread */ |
705 |
|
|
775 |
convert->output.csp, convert->interlacing); |
convert->output.csp, convert->interlacing); |
776 |
break; |
break; |
777 |
|
|
778 |
|
case XVID_CSP_INTERNAL : |
779 |
|
img.y = (uint8_t*)convert->input.plane[0]; |
780 |
|
img.u = (uint8_t*)convert->input.plane[1]; |
781 |
|
img.v = (uint8_t*)convert->input.plane[2]; |
782 |
|
image_output(&img, width, height, convert->input.stride[0], |
783 |
|
(uint8_t**)convert->output.plane, convert->output.stride, |
784 |
|
convert->output.csp, convert->interlacing); |
785 |
|
break; |
786 |
|
|
787 |
default : |
default : |
788 |
return XVID_ERR_FORMAT; |
return XVID_ERR_FORMAT; |
789 |
} |
} |
794 |
} |
} |
795 |
|
|
796 |
/***************************************************************************** |
/***************************************************************************** |
797 |
* XviD Global Entry point |
* Xvid Global Entry point |
798 |
* |
* |
799 |
* Well this function initialize all internal function pointers according |
* Well this function initialize all internal function pointers according |
800 |
* to the CPU features forced by the library client or autodetected (depending |
* to the CPU features forced by the library client or autodetected (depending |
827 |
} |
} |
828 |
|
|
829 |
/***************************************************************************** |
/***************************************************************************** |
830 |
* XviD Native decoder entry point |
* Xvid Native decoder entry point |
831 |
* |
* |
832 |
* This function is just a wrapper to all the option cases. |
* This function is just a wrapper to all the option cases. |
833 |
* |
* |
859 |
|
|
860 |
|
|
861 |
/***************************************************************************** |
/***************************************************************************** |
862 |
* XviD Native encoder entry point |
* Xvid Native encoder entry point |
863 |
* |
* |
864 |
* This function is just a wrapper to all the option cases. |
* This function is just a wrapper to all the option cases. |
865 |
* |
* |