summaryrefslogtreecommitdiff
path: root/libavcodec/ivi.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2018-08-04 02:31:58 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2018-08-12 21:48:11 +0200
commit82920bf49434d14ed0144319f785cc74a1534fc5 (patch)
tree70f264784936bddcbc7ac0acb993f3736b9a355a /libavcodec/ivi.c
parent6d8a289c98b80ddf596028ccae73cbc3c53dc7cf (diff)
avcodec/ivi: Only clip samples when needed in ivi_output_plane()
435740 -> 396078 dezicycles Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/ivi.c')
-rw-r--r--libavcodec/ivi.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libavcodec/ivi.c b/libavcodec/ivi.c
index cea40d82ca..ebb7f03007 100644
--- a/libavcodec/ivi.c
+++ b/libavcodec/ivi.c
@@ -913,8 +913,15 @@ static void ivi_output_plane(IVIPlaneDesc *plane, uint8_t *dst, ptrdiff_t dst_pi
return;
for (y = 0; y < plane->height; y++) {
- for (x = 0; x < plane->width; x++)
- dst[x] = av_clip_uint8(src[x] + 128);
+ int m = 0;
+ for (x = 0; x < plane->width; x++) {
+ int t = src[x] + 128;
+ dst[x] = t;
+ m |= t;
+ }
+ if (m & ~255)
+ for (x = 0; x < plane->width; x++)
+ dst[x] = av_clip_uint8(src[x] + 128);
src += pitch;
dst += dst_pitch;
}