Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
d1dd0d40
Commit
d1dd0d40
authored
Jun 08, 2015
by
Vittorio Giovara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mpegvideo: Move block permutation function where is used
Mark it as static.
parent
c6aa0554
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
37 deletions
+38
-37
mpegvideo.c
libavcodec/mpegvideo.c
+0
-29
mpegvideo.h
libavcodec/mpegvideo.h
+0
-6
mpegvideo_enc.c
libavcodec/mpegvideo_enc.c
+38
-2
No files found.
libavcodec/mpegvideo.c
View file @
d1dd0d40
...
...
@@ -1840,35 +1840,6 @@ void ff_init_block_index(MpegEncContext *s){ //FIXME maybe rename
}
}
/**
* Permute an 8x8 block.
* @param block the block which will be permuted according to the given permutation vector
* @param permutation the permutation vector
* @param last the last non zero coefficient in scantable order, used to speed the permutation up
* @param scantable the used scantable, this is only used to speed the permutation up, the block is not
* (inverse) permutated to scantable order!
*/
void
ff_block_permute
(
int16_t
*
block
,
uint8_t
*
permutation
,
const
uint8_t
*
scantable
,
int
last
)
{
int
i
;
int16_t
temp
[
64
];
if
(
last
<=
0
)
return
;
//if(permutation[1]==1) return; //FIXME it is ok but not clean and might fail for some permutations
for
(
i
=
0
;
i
<=
last
;
i
++
){
const
int
j
=
scantable
[
i
];
temp
[
j
]
=
block
[
j
];
block
[
j
]
=
0
;
}
for
(
i
=
0
;
i
<=
last
;
i
++
){
const
int
j
=
scantable
[
i
];
const
int
perm_j
=
permutation
[
j
];
block
[
perm_j
]
=
temp
[
j
];
}
}
void
ff_mpeg_flush
(
AVCodecContext
*
avctx
){
int
i
;
MpegEncContext
*
s
=
avctx
->
priv_data
;
...
...
libavcodec/mpegvideo.h
View file @
d1dd0d40
...
...
@@ -638,12 +638,6 @@ void ff_mpv_motion(MpegEncContext *s,
op_pixels_func
(
*
pix_op
)[
4
],
qpel_mc_func
(
*
qpix_op
)[
16
]);
/**
* permute block according to permuatation.
* @param last last non zero element in scantable order
*/
void
ff_block_permute
(
int16_t
*
block
,
uint8_t
*
permutation
,
const
uint8_t
*
scantable
,
int
last
);
static
inline
void
ff_update_block_index
(
MpegEncContext
*
s
){
const
int
block_size
=
8
;
...
...
libavcodec/mpegvideo_enc.c
View file @
d1dd0d40
...
...
@@ -4196,6 +4196,42 @@ STOP_TIMER("iterative search")
return
last_non_zero
;
}
/**
* Permute an 8x8 block according to permuatation.
* @param block the block which will be permuted according to
* the given permutation vector
* @param permutation the permutation vector
* @param last the last non zero coefficient in scantable order, used to
* speed the permutation up
* @param scantable the used scantable, this is only used to speed the
* permutation up, the block is not (inverse) permutated
* to scantable order!
*/
static
void
block_permute
(
int16_t
*
block
,
uint8_t
*
permutation
,
const
uint8_t
*
scantable
,
int
last
)
{
int
i
;
int16_t
temp
[
64
];
if
(
last
<=
0
)
return
;
//FIXME it is ok but not clean and might fail for some permutations
// if (permutation[1] == 1)
// return;
for
(
i
=
0
;
i
<=
last
;
i
++
)
{
const
int
j
=
scantable
[
i
];
temp
[
j
]
=
block
[
j
];
block
[
j
]
=
0
;
}
for
(
i
=
0
;
i
<=
last
;
i
++
)
{
const
int
j
=
scantable
[
i
];
const
int
perm_j
=
permutation
[
j
];
block
[
perm_j
]
=
temp
[
j
];
}
}
int
ff_dct_quantize_c
(
MpegEncContext
*
s
,
int16_t
*
block
,
int
n
,
int
qscale
,
int
*
overflow
)
...
...
@@ -4271,8 +4307,8 @@ int ff_dct_quantize_c(MpegEncContext *s,
/* we need this permutation so that we correct the IDCT, we only permute the !=0 elements */
if
(
s
->
idsp
.
perm_type
!=
FF_IDCT_PERM_NONE
)
ff_
block_permute
(
block
,
s
->
idsp
.
idct_permutation
,
scantable
,
last_non_zero
);
block_permute
(
block
,
s
->
idsp
.
idct_permutation
,
scantable
,
last_non_zero
);
return
last_non_zero
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment