summaryrefslogtreecommitdiff
path: root/libavcodec/exr.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2021-02-28 23:14:40 +0100
committerPaul B Mahol <onemda@gmail.com>2021-02-28 23:19:01 +0100
commit4cb989e83631c801718723ad95367fdd561e0ae0 (patch)
tree0dfa0f4a3dc065daa208fa4e5a1eb315ebe87205 /libavcodec/exr.c
parentf01d522cf36d5f6810887bb70d24036778b6ea07 (diff)
avcodec/exr: add fast path for case when powf() isn't needed
Diffstat (limited to 'libavcodec/exr.c')
-rw-r--r--libavcodec/exr.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/exr.c b/libavcodec/exr.c
index 4559174ba2..640807cea9 100644
--- a/libavcodec/exr.c
+++ b/libavcodec/exr.c
@@ -1130,13 +1130,18 @@ static int decode_block(AVCodecContext *avctx, void *tdata,
t.f = trc_func(t.f);
*ptr_x++ = t;
}
- } else {
+ } else if (one_gamma != 1.f) {
for (x = 0; x < xsize; x++) {
t.i = bytestream_get_le32(&src);
if (t.f > 0.0f && c < 3) /* avoid negative values */
t.f = powf(t.f, one_gamma);
*ptr_x++ = t;
}
+ } else {
+ for (x = 0; x < xsize; x++) {
+ t.i = bytestream_get_le32(&src);
+ *ptr_x++ = t;
+ }
}
} else if (s->pixel_type == EXR_HALF) {
// 16-bit