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
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