simple_idct_vis.c File Reference
#include <stdint.h>
#include "dsputil_vis.h"
#include "libavutil/mem.h"
Include dependency graph for simple_idct_vis.c:

Go to the source code of this file.

Macros

#define INIT_IDCT
 
#define LOADSCALE(in)
 
#define LOAD(in)
 
#define TRANSPOSE
 
#define IDCT4ROWS
 
#define STOREROWS(out)
 
#define SCALEROWS
 
#define PUTPIXELSCLAMPED(dest)
 
#define ADDPIXELSCLAMPED(dest)
 
#define ADDROUNDER
 
#define ADDROUNDER   "fpadd16 %%f28, %%f46, %%f28 \n\t"
 
#define ADDROUNDER
 
#define ADDROUNDER   "fpadd16 %%f28, %%f46, %%f28 \n\t"
 

Functions

static const DECLARE_ALIGNED (8, int16_t, coeffs)[28]
 
static const DECLARE_ALIGNED (8, uint16_t, scale)[4]
 
static const DECLARE_ALIGNED (8, uint16_t, rounder)[4]
 
static const DECLARE_ALIGNED (8, uint16_t, expand)[4]
 
void ff_simple_idct_vis (int16_t *data)
 
void ff_simple_idct_put_vis (uint8_t *dest, int line_size, int16_t *data)
 
void ff_simple_idct_add_vis (uint8_t *dest, int line_size, int16_t *data)
 

Macro Definition Documentation

#define ADDPIXELSCLAMPED (   dest)

Definition at line 346 of file simple_idct_vis.c.

Referenced by ff_simple_idct_add_vis().

#define ADDROUNDER
#define ADDROUNDER   "fpadd16 %%f28, %%f46, %%f28 \n\t"
#define ADDROUNDER
#define ADDROUNDER   "fpadd16 %%f28, %%f46, %%f28 \n\t"
#define IDCT4ROWS
#define INIT_IDCT
Value:
"ldd [%1], %%f32 \n\t"\
"ldd [%1+8], %%f34 \n\t"\
"ldd [%1+16], %%f36 \n\t"\
"ldd [%1+24], %%f38 \n\t"\
"ldd [%1+32], %%f40 \n\t"\
"ldd [%1+40], %%f42 \n\t"\
"ldd [%1+48], %%f44 \n\t"\
"ldd [%0], %%f46 \n\t"\
"fzero %%f62 \n\t"\

Definition at line 49 of file simple_idct_vis.c.

Referenced by ff_simple_idct_add_vis(), ff_simple_idct_put_vis(), and ff_simple_idct_vis().

#define LOAD (   in)
Value:
"ldd [" in "], %%f16 \n\t"\
"ldd [" in "+8], %%f18 \n\t"\
"ldd [" in "+16], %%f20 \n\t"\
"ldd [" in "+24], %%f22 \n\t"\
"ldd [" in "+32], %%f24 \n\t"\
"ldd [" in "+40], %%f26 \n\t"\
"ldd [" in "+48], %%f28 \n\t"\
"ldd [" in "+56], %%f30 \n\t"\
About Git write you should know how to use GIT properly Luckily Git comes with excellent documentation git help man git shows you the available git< command > help man git< command > shows information about the subcommand< command > The most comprehensive manual is the website Git Reference visit they are quite exhaustive You do not need a special username or password All you need is to provide a ssh public key to the Git server admin What follows now is a basic introduction to Git and some FFmpeg specific guidelines Read it at least if you are granted commit privileges to the FFmpeg project you are expected to be familiar with these rules I if not You can get git from etc no matter how small Every one of them has been saved from looking like a fool by this many times It s very easy for stray debug output or cosmetic modifications to slip in
Definition: git-howto.txt:5

Definition at line 105 of file simple_idct_vis.c.

Referenced by ff_simple_idct_add_vis(), ff_simple_idct_put_vis(), and ff_simple_idct_vis().

#define LOADSCALE (   in)
#define PUTPIXELSCLAMPED (   dest)
Value:
"fpack16 %%f48, %%f14 \n\t"\
"fpack16 %%f50, %%f12 \n\t"\
"fpack16 %%f16, %%f0 \n\t"\
"fpack16 %%f20, %%f2 \n\t"\
"fpack16 %%f24, %%f4 \n\t"\
"fpack16 %%f28, %%f6 \n\t"\
"fpack16 %%f54, %%f8 \n\t"\
"fpack16 %%f52, %%f10 \n\t"\
"st %%f0, [%3+" dest "] \n\t"\
"st %%f2, [%5+" dest "] \n\t"\
"st %%f4, [%6+" dest "] \n\t"\
"st %%f6, [%7+" dest "] \n\t"\
"st %%f8, [%8+" dest "] \n\t"\
"st %%f10, [%9+" dest "] \n\t"\
"st %%f12, [%10+" dest "] \n\t"\
"st %%f14, [%11+" dest "] \n\t"\
dest
Definition: start.py:60

Definition at line 328 of file simple_idct_vis.c.

Referenced by ff_simple_idct_put_vis().

#define SCALEROWS
Value:
"fmul8sux16 %%f46, %%f48, %%f48 \n\t"\
"fmul8sux16 %%f46, %%f50, %%f50 \n\t"\
"fmul8sux16 %%f46, %%f52, %%f52 \n\t"\
"fmul8sux16 %%f46, %%f54, %%f54 \n\t"\
"fmul8sux16 %%f46, %%f16, %%f16 \n\t"\
"fmul8sux16 %%f46, %%f20, %%f20 \n\t"\
"fmul8sux16 %%f46, %%f24, %%f24 \n\t"\
"fmul8sux16 %%f46, %%f28, %%f28 \n\t"\

Definition at line 318 of file simple_idct_vis.c.

Referenced by ff_simple_idct_vis().

#define STOREROWS (   out)
Value:
"std %%f48, [" out "+112] \n\t"\
"std %%f50, [" out "+96] \n\t"\
"std %%f52, [" out "+80] \n\t"\
"std %%f54, [" out "+64] \n\t"\
"std %%f16, [" out "] \n\t"\
"std %%f20, [" out "+16] \n\t"\
"std %%f24, [" out "+32] \n\t"\
"std %%f28, [" out "+48] \n\t"\
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(const int16_t *) pi >> 8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(const int16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(const int16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(const int32_t *) pi >> 24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(const int32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(const int32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(const float *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(const float *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(const float *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(const double *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(const double *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(const double *) pi *(1U<< 31))))#define SET_CONV_FUNC_GROUP(ofmt, ifmt) static void set_generic_function(AudioConvert *ac){}void ff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels, int sample_rate, int apply_map){AudioConvert *ac;int in_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) return NULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt) > 2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);return NULL;}return ac;}in_planar=av_sample_fmt_is_planar(in_fmt);out_planar=av_sample_fmt_is_planar(out_fmt);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}else if(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;else ac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);return ac;}int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){int use_generic=1;int len=in->nb_samples;int p;if(ac->dc){av_dlog(ac->avr,"%d samples - audio_convert: %s to %s (dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));return ff_convert_dither(ac-> out

Definition at line 308 of file simple_idct_vis.c.

Referenced by ff_simple_idct_add_vis(), ff_simple_idct_put_vis(), and ff_simple_idct_vis().

#define TRANSPOSE
Value:
"fpmerge %%f16, %%f24, %%f0 \n\t"\
"fpmerge %%f20, %%f28, %%f2 \n\t"\
"fpmerge %%f17, %%f25, %%f4 \n\t"\
"fpmerge %%f21, %%f29, %%f6 \n\t"\
"fpmerge %%f18, %%f26, %%f8 \n\t"\
"fpmerge %%f22, %%f30, %%f10 \n\t"\
"fpmerge %%f19, %%f27, %%f12 \n\t"\
"fpmerge %%f23, %%f31, %%f14 \n\t"\
\
"fpmerge %%f0, %%f2, %%f16 \n\t"\
"fpmerge %%f1, %%f3, %%f18 \n\t"\
"fpmerge %%f4, %%f6, %%f20 \n\t"\
"fpmerge %%f5, %%f7, %%f22 \n\t"\
"fpmerge %%f8, %%f10, %%f24 \n\t"\
"fpmerge %%f9, %%f11, %%f26 \n\t"\
"fpmerge %%f12, %%f14, %%f28 \n\t"\
"fpmerge %%f13, %%f15, %%f30 \n\t"\
\
"fpmerge %%f16, %%f17, %%f0 \n\t"\
"fpmerge %%f18, %%f19, %%f2 \n\t"\
"fpmerge %%f20, %%f21, %%f4 \n\t"\
"fpmerge %%f22, %%f23, %%f6 \n\t"\
"fpmerge %%f24, %%f25, %%f8 \n\t"\
"fpmerge %%f26, %%f27, %%f10 \n\t"\
"fpmerge %%f28, %%f29, %%f12 \n\t"\
"fpmerge %%f30, %%f31, %%f14 \n\t"\

Definition at line 115 of file simple_idct_vis.c.

Referenced by avfilter_register_all(), ff_simple_idct_add_vis(), ff_simple_idct_put_vis(), and ff_simple_idct_vis().

Function Documentation

static const DECLARE_ALIGNED ( ,
int16_t  ,
coeffs   
)
static

Referenced by ff_simple_idct_vis().

static const DECLARE_ALIGNED ( ,
uint16_t  ,
scale   
)
static
static const DECLARE_ALIGNED ( ,
uint16_t  ,
rounder   
)
static
static const DECLARE_ALIGNED ( ,
uint16_t  ,
expand   
)
static
void ff_simple_idct_add_vis ( uint8_t dest,
int  line_size,
int16_t *  data 
)

Definition at line 480 of file simple_idct_vis.c.

Referenced by ff_dsputil_init_vis().

void ff_simple_idct_put_vis ( uint8_t dest,
int  line_size,
int16_t *  data 
)

Definition at line 430 of file simple_idct_vis.c.

Referenced by ff_dsputil_init_vis().

void ff_simple_idct_vis ( int16_t *  data)

Definition at line 390 of file simple_idct_vis.c.

Referenced by ff_dsputil_init_vis().