Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
FFmpeg
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
libremedia
Tethys
FFmpeg
Commits
8199bb7b
Commit
8199bb7b
authored
11 years ago
by
Diego Biurrun
Browse files
Options
Downloads
Patches
Plain Diff
dsputil.h: Clean up comments
parent
0a8f91b1
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
libavcodec/dsputil.h
+46
-39
46 additions, 39 deletions
libavcodec/dsputil.h
with
46 additions
and
39 deletions
libavcodec/dsputil.h
+
46
−
39
View file @
8199bb7b
...
...
@@ -23,8 +23,8 @@
/**
* @file
* DSP utils.
*
n
ote, many functions in here may use MMX which trashes the FPU state, it is
* absolutely necessary to call emms_c() between
dsp
& float/double code
*
N
ote, many functions in here may use MMX which trashes the FPU state, it is
* absolutely necessary to call emms_c() between
DSP
& float/double code
.
*/
#ifndef AVCODEC_DSPUTIL_H
...
...
@@ -61,21 +61,22 @@ void ff_gmc_c(uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy,
int
dxx
,
int
dxy
,
int
dyx
,
int
dyy
,
int
shift
,
int
r
,
int
width
,
int
height
);
/* minimum alignment rules ;)
If you notice errors in the align stuff, need more alignment for some ASM code
for some CPU or need to use a function with less aligned data then send a mail
to the libav-devel mailing list, ...
!warning These alignments might not match reality, (missing attribute((align))
stuff somewhere possible).
I (Michael) did not check them, these are just the alignments which I think
could be reached easily ...
!future video codecs might need functions with less strict alignment
*/
*
If you notice errors in the align stuff, need more alignment for some ASM code
*
for some CPU or need to use a function with less aligned data then send a mail
*
to the libav-devel mailing list, ...
*
*
!warning These alignments might not match reality, (missing attribute((align))
*
stuff somewhere possible).
*
I (Michael) did not check them, these are just the alignments which I think
*
could be reached easily ...
*
*
!future video codecs might need functions with less strict alignment
*/
/* add and put pixel (decoding) */
// blocksizes for op_pixels_func are 8x4,8x8 16x8 16x16
//h for op_pixels_func is limited to {width/2, width} but never larger than 16 and never smaller than 4
/* add and put pixel (decoding)
* Block sizes for op_pixels_func are 8x4,8x8 16x8 16x16.
* h for op_pixels_func is limited to { width / 2, width },
* but never larger than 16 and never smaller than 4. */
typedef
void
(
*
tpel_mc_func
)(
uint8_t
*
block
/*align width (8 or 16)*/
,
const
uint8_t
*
pixels
/*align 1*/
,
int
line_size
,
int
w
,
int
h
);
typedef
void
(
*
qpel_mc_func
)(
uint8_t
*
dst
/*align width (8 or 16)*/
,
uint8_t
*
src
/*align 1*/
,
ptrdiff_t
stride
);
...
...
@@ -99,10 +100,14 @@ DEF_OLD_QPEL(qpel8_mc32_old_c)
DEF_OLD_QPEL
(
qpel8_mc13_old_c
)
DEF_OLD_QPEL
(
qpel8_mc33_old_c
)
/* motion estimation */
// h is limited to {width/2, width, 2*width} but never larger than 16 and never smaller than 2
// although currently h<4 is not used as functions with width <8 are neither used nor implemented
typedef
int
(
*
me_cmp_func
)(
void
/*MpegEncContext*/
*
s
,
uint8_t
*
blk1
/*align width (8 or 16)*/
,
uint8_t
*
blk2
/*align 1*/
,
int
line_size
,
int
h
)
/* __attribute__ ((const))*/
;
/* Motion estimation:
* h is limited to { width / 2, width, 2 * width },
* but never larger than 16 and never smaller than 2.
* Although currently h < 4 is not used as functions with
* width < 8 are neither used nor implemented. */
typedef
int
(
*
me_cmp_func
)(
void
/* MpegEncContext */
*
s
,
uint8_t
*
blk1
/* align width (8 or 16) */
,
uint8_t
*
blk2
/* align 1 */
,
int
line_size
,
int
h
);
/**
* Scantable.
...
...
@@ -142,7 +147,6 @@ typedef struct DSPContext {
void
(
*
clear_blocks
)(
int16_t
*
blocks
/*align 16*/
);
int
(
*
pix_sum
)(
uint8_t
*
pix
,
int
line_size
);
int
(
*
pix_norm1
)(
uint8_t
*
pix
,
int
line_size
);
// 16x16 8x8 4x4 2x2 16x8 8x4 4x2 8x16 4x8 2x4
me_cmp_func
sad
[
6
];
/* identical to pix_absAxA except additional void * */
me_cmp_func
sse
[
6
];
...
...
@@ -168,10 +172,10 @@ typedef struct DSPContext {
int
size
);
/**
* Thirdpel motion compensation with rounding (a
+b+
1)>>1.
* this is an array[12] of motion compensation functions for the
9 thirdpe
* positions<br>
* *pixels_tab[
xthirdpel + 4
*
ythirdpel
]
* Thirdpel motion compensation with rounding (a
+ b +
1)
>>
1.
* this is an array[12] of motion compensation functions for the
*
9 thirdpel
positions<br>
* *pixels_tab[xthirdpel + 4
*
ythirdpel]
* @param block destination where the result is stored
* @param pixels source
* @param line_size number of bytes in a horizontal line of block
...
...
@@ -187,12 +191,12 @@ typedef struct DSPContext {
me_cmp_func
pix_abs
[
2
][
4
];
/*
h
uff
yuv
specific */
/*
H
uff
YUV
specific */
void
(
*
add_bytes
)(
uint8_t
*
dst
/*align 16*/
,
uint8_t
*
src
/*align 16*/
,
int
w
);
void
(
*
diff_bytes
)(
uint8_t
*
dst
/*align 16*/
,
uint8_t
*
src1
/*align 16*/
,
uint8_t
*
src2
/*align 1*/
,
int
w
);
/**
*
s
ubtract
h
uff
yuv
's variant of median prediction
*
n
ote, this might read from src1[-1], src2[-1]
*
S
ubtract
H
uff
YUV
's variant of median prediction
.
*
N
ote, this might read from src1[-1], src2[-1]
.
*/
void
(
*
sub_hfyu_median_prediction
)(
uint8_t
*
dst
,
const
uint8_t
*
src1
,
const
uint8_t
*
src2
,
int
w
,
int
*
left
,
int
*
left_top
);
void
(
*
add_hfyu_median_prediction
)(
uint8_t
*
dst
,
const
uint8_t
*
top
,
const
uint8_t
*
diff
,
int
w
,
int
*
left
,
int
*
left_top
);
...
...
@@ -225,16 +229,18 @@ typedef struct DSPContext {
void
(
*
idct_add
)(
uint8_t
*
dest
/*align 8*/
,
int
line_size
,
int16_t
*
block
/*align 16*/
);
/**
* idct input permutation.
* several optimized IDCTs need a permutated input (relative to the normal order of the reference
* IDCT)
* this permutation must be performed before the idct_put/add, note, normally this can be merged
* with the zigzag/alternate scan<br>
* an example to avoid confusion:
* - (->decode coeffs -> zigzag reorder -> dequant -> reference idct ->...)
* - (x -> reference dct -> reference idct -> x)
* - (x -> reference dct -> simple_mmx_perm = idct_permutation -> simple_idct_mmx -> x)
* - (->decode coeffs -> zigzag reorder -> simple_mmx_perm -> dequant -> simple_idct_mmx ->...)
* IDCT input permutation.
* Several optimized IDCTs need a permutated input (relative to the
* normal order of the reference IDCT).
* This permutation must be performed before the idct_put/add.
* Note, normally this can be merged with the zigzag/alternate scan<br>
* An example to avoid confusion:
* - (->decode coeffs -> zigzag reorder -> dequant -> reference IDCT -> ...)
* - (x -> reference DCT -> reference IDCT -> x)
* - (x -> reference DCT -> simple_mmx_perm = idct_permutation
* -> simple_idct_mmx -> x)
* - (-> decode coeffs -> zigzag reorder -> simple_mmx_perm -> dequant
* -> simple_idct_mmx -> ...)
*/
uint8_t
idct_permutation
[
64
];
int
idct_permutation_type
;
...
...
@@ -271,7 +277,8 @@ typedef struct DSPContext {
int32_t
(
*
scalarproduct_and_madd_int16
)(
int16_t
*
v1
/*align 16*/
,
const
int16_t
*
v2
,
const
int16_t
*
v3
,
int
len
,
int
mul
);
/**
* Clip each element in an array of int32_t to a given minimum and maximum value.
* Clip each element in an array of int32_t to a given minimum and
* maximum value.
* @param dst destination array
* constraints: 16-byte aligned
* @param src source array
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment