media/libtheora/lib/arm/armint.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/media/libtheora/lib/arm/armint.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,126 @@
     1.4 +/********************************************************************
     1.5 + *                                                                  *
     1.6 + * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *
     1.7 + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
     1.8 + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
     1.9 + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
    1.10 + *                                                                  *
    1.11 + * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2010                *
    1.12 + * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
    1.13 + *                                                                  *
    1.14 + ********************************************************************
    1.15 +
    1.16 +  function:
    1.17 +    last mod: $Id: x86int.h 17344 2010-07-21 01:42:18Z tterribe $
    1.18 +
    1.19 + ********************************************************************/
    1.20 +#if !defined(_arm_armint_H)
    1.21 +# define _arm_armint_H (1)
    1.22 +# include "../internal.h"
    1.23 +
    1.24 +# if defined(OC_ARM_ASM)
    1.25 +
    1.26 +#  if defined(__ARMEB__)
    1.27 +#   error "Big-endian configurations are not supported by the ARM asm. " \
    1.28 + "Reconfigure with --disable-asm or undefine OC_ARM_ASM."
    1.29 +#  endif
    1.30 +
    1.31 +#  define oc_state_accel_init oc_state_accel_init_arm
    1.32 +/*This function is implemented entirely in asm, so it's helpful to pull out all
    1.33 +   of the things that depend on structure offsets.
    1.34 +  We reuse the function pointer with the wrong prototype, though.*/
    1.35 +#  define oc_state_loop_filter_frag_rows(_state,_bv,_refi,_pli, \
    1.36 + _fragy0,_fragy_end) \
    1.37 +  ((oc_loop_filter_frag_rows_arm_func) \
    1.38 +   (_state)->opt_vtable.state_loop_filter_frag_rows)( \
    1.39 +   (_state)->ref_frame_data[(_refi)],(_state)->ref_ystride[(_pli)], \
    1.40 +   (_bv), \
    1.41 +   (_state)->frags, \
    1.42 +   (_state)->fplanes[(_pli)].froffset \
    1.43 +   +(_fragy0)*(ptrdiff_t)(_state)->fplanes[(_pli)].nhfrags, \
    1.44 +   (_state)->fplanes[(_pli)].froffset \
    1.45 +   +(_fragy_end)*(ptrdiff_t)(_state)->fplanes[(_pli)].nhfrags, \
    1.46 +   (_state)->fplanes[(_pli)].froffset, \
    1.47 +   (_state)->fplanes[(_pli)].froffset+(_state)->fplanes[(_pli)].nfrags, \
    1.48 +   (_state)->frag_buf_offs, \
    1.49 +   (_state)->fplanes[(_pli)].nhfrags)
    1.50 +/*For everything else the default vtable macros are fine.*/
    1.51 +#  define OC_STATE_USE_VTABLE (1)
    1.52 +# endif
    1.53 +
    1.54 +# include "../state.h"
    1.55 +# include "armcpu.h"
    1.56 +
    1.57 +# if defined(OC_ARM_ASM)
    1.58 +typedef void (*oc_loop_filter_frag_rows_arm_func)(
    1.59 + unsigned char *_ref_frame_data,int _ystride,signed char _bv[256],
    1.60 + const oc_fragment *_frags,ptrdiff_t _fragi0,ptrdiff_t _fragi0_end,
    1.61 + ptrdiff_t _fragi_top,ptrdiff_t _fragi_bot,
    1.62 + const ptrdiff_t *_frag_buf_offs,int _nhfrags);
    1.63 +
    1.64 +void oc_state_accel_init_arm(oc_theora_state *_state);
    1.65 +void oc_frag_copy_list_arm(unsigned char *_dst_frame,
    1.66 + const unsigned char *_src_frame,int _ystride,
    1.67 + const ptrdiff_t *_fragis,ptrdiff_t _nfragis,const ptrdiff_t *_frag_buf_offs);
    1.68 +void oc_frag_recon_intra_arm(unsigned char *_dst,int _ystride,
    1.69 + const ogg_int16_t *_residue);
    1.70 +void oc_frag_recon_inter_arm(unsigned char *_dst,const unsigned char *_src,
    1.71 + int _ystride,const ogg_int16_t *_residue);
    1.72 +void oc_frag_recon_inter2_arm(unsigned char *_dst,const unsigned char *_src1,
    1.73 + const unsigned char *_src2,int _ystride,const ogg_int16_t *_residue);
    1.74 +void oc_idct8x8_1_arm(ogg_int16_t _y[64],ogg_uint16_t _dc);
    1.75 +void oc_idct8x8_arm(ogg_int16_t _y[64],ogg_int16_t _x[64],int _last_zzi);
    1.76 +void oc_state_frag_recon_arm(const oc_theora_state *_state,ptrdiff_t _fragi,
    1.77 + int _pli,ogg_int16_t _dct_coeffs[128],int _last_zzi,ogg_uint16_t _dc_quant);
    1.78 +void oc_loop_filter_frag_rows_arm(unsigned char *_ref_frame_data,
    1.79 + int _ystride,signed char *_bv,const oc_fragment *_frags,ptrdiff_t _fragi0,
    1.80 + ptrdiff_t _fragi0_end,ptrdiff_t _fragi_top,ptrdiff_t _fragi_bot,
    1.81 + const ptrdiff_t *_frag_buf_offs,int _nhfrags);
    1.82 +
    1.83 +#  if defined(OC_ARM_ASM_EDSP)
    1.84 +void oc_frag_copy_list_edsp(unsigned char *_dst_frame,
    1.85 + const unsigned char *_src_frame,int _ystride,
    1.86 + const ptrdiff_t *_fragis,ptrdiff_t _nfragis,const ptrdiff_t *_frag_buf_offs);
    1.87 +
    1.88 +#   if defined(OC_ARM_ASM_MEDIA)
    1.89 +void oc_frag_recon_intra_v6(unsigned char *_dst,int _ystride,
    1.90 + const ogg_int16_t *_residue);
    1.91 +void oc_frag_recon_inter_v6(unsigned char *_dst,const unsigned char *_src,
    1.92 + int _ystride,const ogg_int16_t *_residue);
    1.93 +void oc_frag_recon_inter2_v6(unsigned char *_dst,const unsigned char *_src1,
    1.94 + const unsigned char *_src2,int _ystride,const ogg_int16_t *_residue);
    1.95 +void oc_idct8x8_1_v6(ogg_int16_t _y[64],ogg_uint16_t _dc);
    1.96 +void oc_idct8x8_v6(ogg_int16_t _y[64],ogg_int16_t _x[64],int _last_zzi);
    1.97 +void oc_state_frag_recon_v6(const oc_theora_state *_state,ptrdiff_t _fragi,
    1.98 + int _pli,ogg_int16_t _dct_coeffs[128],int _last_zzi,ogg_uint16_t _dc_quant);
    1.99 +void oc_loop_filter_init_v6(signed char *_bv,int _flimit);
   1.100 +void oc_loop_filter_frag_rows_v6(unsigned char *_ref_frame_data,
   1.101 + int _ystride,signed char *_bv,const oc_fragment *_frags,ptrdiff_t _fragi0,
   1.102 + ptrdiff_t _fragi0_end,ptrdiff_t _fragi_top,ptrdiff_t _fragi_bot,
   1.103 + const ptrdiff_t *_frag_buf_offs,int _nhfrags);
   1.104 +
   1.105 +#    if defined(OC_ARM_ASM_NEON)
   1.106 +void oc_frag_copy_list_neon(unsigned char *_dst_frame,
   1.107 + const unsigned char *_src_frame,int _ystride,
   1.108 + const ptrdiff_t *_fragis,ptrdiff_t _nfragis,const ptrdiff_t *_frag_buf_offs);
   1.109 +void oc_frag_recon_intra_neon(unsigned char *_dst,int _ystride,
   1.110 + const ogg_int16_t *_residue);
   1.111 +void oc_frag_recon_inter_neon(unsigned char *_dst,const unsigned char *_src,
   1.112 + int _ystride,const ogg_int16_t *_residue);
   1.113 +void oc_frag_recon_inter2_neon(unsigned char *_dst,const unsigned char *_src1,
   1.114 + const unsigned char *_src2,int _ystride,const ogg_int16_t *_residue);
   1.115 +void oc_idct8x8_1_neon(ogg_int16_t _y[64],ogg_uint16_t _dc);
   1.116 +void oc_idct8x8_neon(ogg_int16_t _y[64],ogg_int16_t _x[64],int _last_zzi);
   1.117 +void oc_state_frag_recon_neon(const oc_theora_state *_state,ptrdiff_t _fragi,
   1.118 + int _pli,ogg_int16_t _dct_coeffs[128],int _last_zzi,ogg_uint16_t _dc_quant);
   1.119 +void oc_loop_filter_init_neon(signed char *_bv,int _flimit);
   1.120 +void oc_loop_filter_frag_rows_neon(unsigned char *_ref_frame_data,
   1.121 + int _ystride,signed char *_bv,const oc_fragment *_frags,ptrdiff_t _fragi0,
   1.122 + ptrdiff_t _fragi0_end,ptrdiff_t _fragi_top,ptrdiff_t _fragi_bot,
   1.123 + const ptrdiff_t *_frag_buf_offs,int _nhfrags);
   1.124 +#    endif
   1.125 +#   endif
   1.126 +#  endif
   1.127 +# endif
   1.128 +
   1.129 +#endif

mercurial