Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
570d63ee
Commit
570d63ee
authored
May 07, 2013
by
Clément Bœsch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavu: add FF_CEIL_RSHIFT and use it in various places.
parent
d9cb1e0e
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
45 additions
and
41 deletions
+45
-41
ffv1dec.c
libavcodec/ffv1dec.c
+2
-2
ffv1enc.c
libavcodec/ffv1enc.c
+2
-2
mimic.c
libavcodec/mimic.c
+2
-2
mjpegdec.c
libavcodec/mjpegdec.c
+2
-2
snow.c
libavcodec/snow.c
+2
-2
utils.c
libavcodec/utils.c
+7
-6
deshake_opencl.c
libavfilter/deshake_opencl.c
+2
-1
vf_gradfun.c
libavfilter/vf_gradfun.c
+2
-2
vf_tinterlace.c
libavfilter/vf_tinterlace.c
+1
-1
common.h
libavutil/common.h
+2
-0
frame.c
libavutil/frame.c
+1
-1
imgutils.c
libavutil/imgutils.c
+1
-1
rgb2rgb_template.c
libswscale/rgb2rgb_template.c
+4
-4
swscale.c
libswscale/swscale.c
+3
-3
swscale_unscaled.c
libswscale/swscale_unscaled.c
+3
-3
utils.c
libswscale/utils.c
+5
-5
rgb2rgb_template.c
libswscale/x86/rgb2rgb_template.c
+4
-4
No files found.
libavcodec/ffv1dec.c
View file @
570d63ee
...
...
@@ -357,8 +357,8 @@ static int decode_slice(AVCodecContext *c, void *arg)
av_assert1
(
width
&&
height
);
if
(
f
->
colorspace
==
0
)
{
const
int
chroma_width
=
-
((
-
width
)
>>
f
->
chroma_h_shift
);
const
int
chroma_height
=
-
((
-
height
)
>>
f
->
chroma_v_shift
);
const
int
chroma_width
=
FF_CEIL_RSHIFT
(
width
,
f
->
chroma_h_shift
);
const
int
chroma_height
=
FF_CEIL_RSHIFT
(
height
,
f
->
chroma_v_shift
);
const
int
cx
=
x
>>
f
->
chroma_h_shift
;
const
int
cy
=
y
>>
f
->
chroma_v_shift
;
decode_plane
(
fs
,
p
->
data
[
0
]
+
ps
*
x
+
y
*
p
->
linesize
[
0
],
width
,
height
,
p
->
linesize
[
0
],
0
);
...
...
libavcodec/ffv1enc.c
View file @
570d63ee
...
...
@@ -973,8 +973,8 @@ static int encode_slice(AVCodecContext *c, void *arg)
}
if
(
f
->
colorspace
==
0
)
{
const
int
chroma_width
=
-
((
-
width
)
>>
f
->
chroma_h_shift
);
const
int
chroma_height
=
-
((
-
height
)
>>
f
->
chroma_v_shift
);
const
int
chroma_width
=
FF_CEIL_RSHIFT
(
width
,
f
->
chroma_h_shift
);
const
int
chroma_height
=
FF_CEIL_RSHIFT
(
height
,
f
->
chroma_v_shift
);
const
int
cx
=
x
>>
f
->
chroma_h_shift
;
const
int
cy
=
y
>>
f
->
chroma_v_shift
;
...
...
libavcodec/mimic.c
View file @
570d63ee
...
...
@@ -388,8 +388,8 @@ static int mimic_decode_frame(AVCodecContext *avctx, void *data,
avctx
->
height
=
height
;
avctx
->
pix_fmt
=
AV_PIX_FMT_YUV420P
;
for
(
i
=
0
;
i
<
3
;
i
++
)
{
ctx
->
num_vblocks
[
i
]
=
-
((
-
height
)
>>
(
3
+
!!
i
)
);
ctx
->
num_hblocks
[
i
]
=
width
>>
(
3
+
!!
i
);
ctx
->
num_vblocks
[
i
]
=
FF_CEIL_RSHIFT
(
height
,
3
+
!!
i
);
ctx
->
num_hblocks
[
i
]
=
width
>>
(
3
+
!!
i
);
}
}
else
if
(
width
!=
ctx
->
avctx
->
width
||
height
!=
ctx
->
avctx
->
height
)
{
avpriv_request_sample
(
avctx
,
"Resolution changing"
);
...
...
libavcodec/mjpegdec.c
View file @
570d63ee
...
...
@@ -1847,8 +1847,8 @@ the_end:
int
w
=
s
->
width
;
int
h
=
s
->
height
;
if
(
index
&&
index
<
3
){
w
=
-
((
-
w
)
>>
hshift
);
h
=
-
((
-
h
)
>>
vshift
);
w
=
FF_CEIL_RSHIFT
(
w
,
hshift
);
h
=
FF_CEIL_RSHIFT
(
h
,
vshift
);
}
if
(
dst
){
uint8_t
*
dst2
=
dst
+
s
->
linesize
[
index
]
*
(
h
-
1
);
...
...
libavcodec/snow.c
View file @
570d63ee
...
...
@@ -81,8 +81,8 @@ void ff_snow_reset_contexts(SnowContext *s){ //FIXME better initial contexts
}
int
ff_snow_alloc_blocks
(
SnowContext
*
s
){
int
w
=
-
((
-
s
->
avctx
->
width
)
>>
LOG2_MB_SIZE
);
int
h
=
-
((
-
s
->
avctx
->
height
)
>>
LOG2_MB_SIZE
);
int
w
=
FF_CEIL_RSHIFT
(
s
->
avctx
->
width
,
LOG2_MB_SIZE
);
int
h
=
FF_CEIL_RSHIFT
(
s
->
avctx
->
height
,
LOG2_MB_SIZE
);
s
->
b_width
=
w
;
s
->
b_height
=
h
;
...
...
libavcodec/utils.c
View file @
570d63ee
...
...
@@ -179,8 +179,8 @@ void avcodec_set_dimensions(AVCodecContext *s, int width, int height)
{
s
->
coded_width
=
width
;
s
->
coded_height
=
height
;
s
->
width
=
-
((
-
width
)
>>
s
->
lowres
);
s
->
height
=
-
((
-
height
)
>>
s
->
lowres
);
s
->
width
=
FF_CEIL_RSHIFT
(
width
,
s
->
lowres
);
s
->
height
=
FF_CEIL_RSHIFT
(
height
,
s
->
lowres
);
}
#if (ARCH_ARM && HAVE_NEON) || ARCH_PPC || HAVE_MMX
...
...
@@ -573,8 +573,9 @@ void avpriv_color_frame(AVFrame *frame, const int c[4])
for
(
p
=
0
;
p
<
desc
->
nb_components
;
p
++
)
{
uint8_t
*
dst
=
frame
->
data
[
p
];
int
is_chroma
=
p
==
1
||
p
==
2
;
int
bytes
=
-
((
-
frame
->
width
)
>>
(
is_chroma
?
desc
->
log2_chroma_w
:
0
));
for
(
y
=
0
;
y
<-
((
-
frame
->
height
)
>>
(
is_chroma
?
desc
->
log2_chroma_h
:
0
));
y
++
){
int
bytes
=
is_chroma
?
FF_CEIL_RSHIFT
(
frame
->
width
,
desc
->
log2_chroma_w
)
:
frame
->
width
;
int
height
=
is_chroma
?
FF_CEIL_RSHIFT
(
frame
->
height
,
desc
->
log2_chroma_h
)
:
frame
->
height
;
for
(
y
=
0
;
y
<
height
;
y
++
)
{
if
(
desc
->
comp
[
0
].
depth_minus1
>=
8
)
{
for
(
x
=
0
;
x
<
bytes
;
x
++
)
((
uint16_t
*
)
dst
)[
x
]
=
c
[
p
];
...
...
@@ -623,8 +624,8 @@ int ff_init_buffer_info(AVCodecContext *avctx, AVFrame *frame)
switch
(
avctx
->
codec
->
type
)
{
case
AVMEDIA_TYPE_VIDEO
:
frame
->
width
=
FFMAX
(
avctx
->
width
,
-
((
-
avctx
->
coded_width
)
>>
avctx
->
lowres
));
frame
->
height
=
FFMAX
(
avctx
->
height
,
-
((
-
avctx
->
coded_height
)
>>
avctx
->
lowres
));
frame
->
width
=
FFMAX
(
avctx
->
width
,
FF_CEIL_RSHIFT
(
avctx
->
coded_width
,
avctx
->
lowres
));
frame
->
height
=
FFMAX
(
avctx
->
height
,
FF_CEIL_RSHIFT
(
avctx
->
coded_height
,
avctx
->
lowres
));
if
(
frame
->
format
<
0
)
frame
->
format
=
avctx
->
pix_fmt
;
if
(
!
frame
->
sample_aspect_ratio
.
num
)
...
...
libavfilter/deshake_opencl.c
View file @
570d63ee
...
...
@@ -135,7 +135,8 @@ int ff_opencl_deshake_process_inout_buf(AVFilterContext *ctx, AVFrame *in, AVFra
int
ret
=
0
;
AVFilterLink
*
link
=
ctx
->
inputs
[
0
];
DeshakeContext
*
deshake
=
ctx
->
priv
;
int
chroma_height
=
-
((
-
link
->
h
)
>>
av_pix_fmt_desc_get
(
link
->
format
)
->
log2_chroma_h
);
const
int
hshift
=
av_pix_fmt_desc_get
(
link
->
format
)
->
log2_chroma_h
;
int
chroma_height
=
FF_CEIL_RSHIFT
(
link
->
h
,
hshift
);
if
((
!
deshake
->
opencl_ctx
.
cl_inbuf
)
||
(
!
deshake
->
opencl_ctx
.
cl_outbuf
))
{
deshake
->
opencl_ctx
.
in_plane_size
[
0
]
=
(
in
->
linesize
[
0
]
*
in
->
height
);
...
...
libavfilter/vf_gradfun.c
View file @
570d63ee
...
...
@@ -172,8 +172,8 @@ static int config_input(AVFilterLink *inlink)
if
(
!
gf
->
buf
)
return
AVERROR
(
ENOMEM
);
gf
->
chroma_w
=
-
((
-
inlink
->
w
)
>>
hsub
);
gf
->
chroma_h
=
-
((
-
inlink
->
h
)
>>
vsub
);
gf
->
chroma_w
=
FF_CEIL_RSHIFT
(
inlink
->
w
,
hsub
);
gf
->
chroma_h
=
FF_CEIL_RSHIFT
(
inlink
->
h
,
vsub
);
gf
->
chroma_r
=
av_clip
(((((
gf
->
radius
>>
hsub
)
+
(
gf
->
radius
>>
vsub
))
/
2
)
+
1
)
&
~
1
,
4
,
32
);
return
0
;
...
...
libavfilter/vf_tinterlace.c
View file @
570d63ee
...
...
@@ -175,7 +175,7 @@ void copy_picture_field(uint8_t *dst[4], int dst_linesize[4],
int
h
,
i
;
for
(
plane
=
0
;
plane
<
desc
->
nb_components
;
plane
++
)
{
int
lines
=
plane
==
1
||
plane
==
2
?
-
((
-
src_h
)
>>
vsub
)
:
src_h
;
int
lines
=
plane
==
1
||
plane
==
2
?
FF_CEIL_RSHIFT
(
src_h
,
vsub
)
:
src_h
;
int
linesize
=
av_image_get_linesize
(
format
,
w
,
plane
);
uint8_t
*
dstp
=
dst
[
plane
];
const
uint8_t
*
srcp
=
src
[
plane
];
...
...
libavutil/common.h
View file @
570d63ee
...
...
@@ -48,6 +48,8 @@
#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
/* assume b>0 */
#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b))
/* assume a>0 and b>0 */
#define FF_CEIL_RSHIFT(a,b) (-((-(a)) >> (b)))
#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b))
#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b))
#define FFABS(a) ((a) >= 0 ? (a) : (-(a)))
...
...
libavutil/frame.c
View file @
570d63ee
...
...
@@ -138,7 +138,7 @@ static int get_video_buffer(AVFrame *frame, int align)
for
(
i
=
0
;
i
<
4
&&
frame
->
linesize
[
i
];
i
++
)
{
int
h
=
FFALIGN
(
frame
->
height
,
32
);
if
(
i
==
1
||
i
==
2
)
h
=
-
((
-
h
)
>>
desc
->
log2_chroma_h
);
h
=
FF_CEIL_RSHIFT
(
h
,
desc
->
log2_chroma_h
);
frame
->
buf
[
i
]
=
av_buffer_alloc
(
frame
->
linesize
[
i
]
*
h
+
16
);
if
(
!
frame
->
buf
[
i
])
...
...
libavutil/imgutils.c
View file @
570d63ee
...
...
@@ -284,7 +284,7 @@ void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4],
return
;
}
if
(
i
==
1
||
i
==
2
)
{
h
=
-
((
-
height
)
>>
desc
->
log2_chroma_h
);
h
=
FF_CEIL_RSHIFT
(
height
,
desc
->
log2_chroma_h
);
}
av_image_copy_plane
(
dst_data
[
i
],
dst_linesizes
[
i
],
src_data
[
i
],
src_linesizes
[
i
],
...
...
libswscale/rgb2rgb_template.c
View file @
570d63ee
...
...
@@ -823,7 +823,7 @@ static void yuyvtoyuv420_c(uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
int
lumStride
,
int
chromStride
,
int
srcStride
)
{
int
y
;
const
int
chromWidth
=
-
((
-
width
)
>>
1
);
const
int
chromWidth
=
FF_CEIL_RSHIFT
(
width
,
1
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
extract_even_c
(
src
,
ydst
,
width
);
...
...
@@ -843,7 +843,7 @@ static void yuyvtoyuv422_c(uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
int
lumStride
,
int
chromStride
,
int
srcStride
)
{
int
y
;
const
int
chromWidth
=
-
((
-
width
)
>>
1
);
const
int
chromWidth
=
FF_CEIL_RSHIFT
(
width
,
1
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
extract_even_c
(
src
,
ydst
,
width
);
...
...
@@ -861,7 +861,7 @@ static void uyvytoyuv420_c(uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
int
lumStride
,
int
chromStride
,
int
srcStride
)
{
int
y
;
const
int
chromWidth
=
-
((
-
width
)
>>
1
);
const
int
chromWidth
=
FF_CEIL_RSHIFT
(
width
,
1
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
extract_even_c
(
src
+
1
,
ydst
,
width
);
...
...
@@ -881,7 +881,7 @@ static void uyvytoyuv422_c(uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
int
lumStride
,
int
chromStride
,
int
srcStride
)
{
int
y
;
const
int
chromWidth
=
-
((
-
width
)
>>
1
);
const
int
chromWidth
=
FF_CEIL_RSHIFT
(
width
,
1
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
extract_even_c
(
src
+
1
,
ydst
,
width
);
...
...
libswscale/swscale.c
View file @
570d63ee
...
...
@@ -373,8 +373,8 @@ static int swScale(SwsContext *c, const uint8_t *src[],
yuv2packed2_fn
yuv2packed2
=
c
->
yuv2packed2
;
yuv2packedX_fn
yuv2packedX
=
c
->
yuv2packedX
;
yuv2anyX_fn
yuv2anyX
=
c
->
yuv2anyX
;
const
int
chrSrcSliceY
=
srcSliceY
>>
c
->
chrSrcVSubSample
;
const
int
chrSrcSliceH
=
-
((
-
srcSliceH
)
>>
c
->
chrSrcVSubSample
);
const
int
chrSrcSliceY
=
srcSliceY
>>
c
->
chrSrcVSubSample
;
const
int
chrSrcSliceH
=
FF_CEIL_RSHIFT
(
srcSliceH
,
c
->
chrSrcVSubSample
);
int
should_dither
=
is9_OR_10BPS
(
c
->
srcFormat
)
||
is16BPS
(
c
->
srcFormat
);
int
lastDstY
;
...
...
@@ -491,7 +491,7 @@ static int swScale(SwsContext *c, const uint8_t *src[],
// Do we have enough lines in this slice to output the dstY line
enough_lines
=
lastLumSrcY2
<
srcSliceY
+
srcSliceH
&&
lastChrSrcY
<
-
((
-
srcSliceY
-
srcSliceH
)
>>
c
->
chrSrcVSubSample
);
lastChrSrcY
<
FF_CEIL_RSHIFT
(
srcSliceY
+
srcSliceH
,
c
->
chrSrcVSubSample
);
if
(
!
enough_lines
)
{
lastLumSrcY
=
srcSliceY
+
srcSliceH
-
1
;
...
...
libswscale/swscale_unscaled.c
View file @
570d63ee
...
...
@@ -852,9 +852,9 @@ static int planarCopyWrapper(SwsContext *c, const uint8_t *src[],
const
AVPixFmtDescriptor
*
desc_dst
=
av_pix_fmt_desc_get
(
c
->
dstFormat
);
int
plane
,
i
,
j
;
for
(
plane
=
0
;
plane
<
4
;
plane
++
)
{
int
length
=
(
plane
==
0
||
plane
==
3
)
?
c
->
srcW
:
-
((
-
c
->
srcW
)
>>
c
->
chrDstHSubSample
);
int
y
=
(
plane
==
0
||
plane
==
3
)
?
srcSliceY
:
-
((
-
srcSliceY
)
>>
c
->
chrDstVSubSample
);
int
height
=
(
plane
==
0
||
plane
==
3
)
?
srcSliceH
:
-
((
-
srcSliceH
)
>>
c
->
chrDstVSubSample
);
int
length
=
(
plane
==
0
||
plane
==
3
)
?
c
->
srcW
:
FF_CEIL_RSHIFT
(
c
->
srcW
,
c
->
chrDstHSubSample
);
int
y
=
(
plane
==
0
||
plane
==
3
)
?
srcSliceY
:
FF_CEIL_RSHIFT
(
srcSliceY
,
c
->
chrDstVSubSample
);
int
height
=
(
plane
==
0
||
plane
==
3
)
?
srcSliceH
:
FF_CEIL_RSHIFT
(
srcSliceH
,
c
->
chrDstVSubSample
);
const
uint8_t
*
srcPtr
=
src
[
plane
];
uint8_t
*
dstPtr
=
dst
[
plane
]
+
dstStride
[
plane
]
*
y
;
int
shiftonly
=
plane
==
1
||
plane
==
2
||
(
!
c
->
srcRange
&&
plane
==
0
);
...
...
libswscale/utils.c
View file @
570d63ee
...
...
@@ -1228,11 +1228,11 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
(
flags
&
SWS_FAST_BILINEAR
)))
c
->
chrSrcHSubSample
=
1
;
// Note the
-((-x)>>y)
is so that we always round toward +inf.
c
->
chrSrcW
=
-
((
-
srcW
)
>>
c
->
chrSrcHSubSample
);
c
->
chrSrcH
=
-
((
-
srcH
)
>>
c
->
chrSrcVSubSample
);
c
->
chrDstW
=
-
((
-
dstW
)
>>
c
->
chrDstHSubSample
);
c
->
chrDstH
=
-
((
-
dstH
)
>>
c
->
chrDstVSubSample
);
// Note the
FF_CEIL_RSHIFT
is so that we always round toward +inf.
c
->
chrSrcW
=
FF_CEIL_RSHIFT
(
srcW
,
c
->
chrSrcHSubSample
);
c
->
chrSrcH
=
FF_CEIL_RSHIFT
(
srcH
,
c
->
chrSrcVSubSample
);
c
->
chrDstW
=
FF_CEIL_RSHIFT
(
dstW
,
c
->
chrDstHSubSample
);
c
->
chrDstH
=
FF_CEIL_RSHIFT
(
dstH
,
c
->
chrDstVSubSample
);
FF_ALLOC_OR_GOTO
(
c
,
c
->
formatConvBuffer
,
FFALIGN
(
srcW
*
2
+
78
,
16
)
*
2
,
fail
);
...
...
libswscale/x86/rgb2rgb_template.c
View file @
570d63ee
...
...
@@ -2354,7 +2354,7 @@ static void RENAME(yuyvtoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, co
int
lumStride
,
int
chromStride
,
int
srcStride
)
{
int
y
;
const
int
chromWidth
=
-
((
-
width
)
>>
1
);
const
int
chromWidth
=
FF_CEIL_RSHIFT
(
width
,
1
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
RENAME
(
extract_even
)(
src
,
ydst
,
width
);
...
...
@@ -2380,7 +2380,7 @@ static void RENAME(yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, co
int
lumStride
,
int
chromStride
,
int
srcStride
)
{
int
y
;
const
int
chromWidth
=
-
((
-
width
)
>>
1
);
const
int
chromWidth
=
FF_CEIL_RSHIFT
(
width
,
1
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
RENAME
(
extract_even
)(
src
,
ydst
,
width
);
...
...
@@ -2404,7 +2404,7 @@ static void RENAME(uyvytoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, co
int
lumStride
,
int
chromStride
,
int
srcStride
)
{
int
y
;
const
int
chromWidth
=
-
((
-
width
)
>>
1
);
const
int
chromWidth
=
FF_CEIL_RSHIFT
(
width
,
1
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
RENAME
(
extract_even
)(
src
+
1
,
ydst
,
width
);
...
...
@@ -2430,7 +2430,7 @@ static void RENAME(uyvytoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, co
int
lumStride
,
int
chromStride
,
int
srcStride
)
{
int
y
;
const
int
chromWidth
=
-
((
-
width
)
>>
1
);
const
int
chromWidth
=
FF_CEIL_RSHIFT
(
width
,
1
);
for
(
y
=
0
;
y
<
height
;
y
++
)
{
RENAME
(
extract_even
)(
src
+
1
,
ydst
,
width
);
...
...
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