summaryrefslogtreecommitdiff
path: root/libavcodec/pnmdec.c
diff options
context:
space:
mode:
authorTimo Rothenpieler <timo@rothenpieler.org>2022-08-10 01:00:56 +0200
committerTimo Rothenpieler <timo@rothenpieler.org>2022-08-19 22:09:36 +0200
commitf3fb528cd5bfecec6835a3951c75903a194ae1ad (patch)
treea2d67c75082a009f1c299dfb319fd54a9357e4a4 /libavcodec/pnmdec.c
parentcb8ad005bb73b1adf0d36eeb794c4c375fd3ee12 (diff)
avutil/half2float: move tables to header-internal structs
Having to put the knowledge of the size of those arrays into a multitude of places is rather smelly.
Diffstat (limited to 'libavcodec/pnmdec.c')
-rw-r--r--libavcodec/pnmdec.c42
1 files changed, 9 insertions, 33 deletions
diff --git a/libavcodec/pnmdec.c b/libavcodec/pnmdec.c
index 9383dc8e60..6adc348ec8 100644
--- a/libavcodec/pnmdec.c
+++ b/libavcodec/pnmdec.c
@@ -313,18 +313,9 @@ static int pnm_decode_frame(AVCodecContext *avctx, AVFrame *p,
b = (float *)p->data[1];
for (int i = 0; i < avctx->height; i++) {
for (int j = 0; j < avctx->width; j++) {
- r[j] = av_int2float(half2float(AV_RL16(s->bytestream+0),
- s->mantissatable,
- s->exponenttable,
- s->offsettable)) * scale;
- g[j] = av_int2float(half2float(AV_RL16(s->bytestream+2),
- s->mantissatable,
- s->exponenttable,
- s->offsettable)) * scale;
- b[j] = av_int2float(half2float(AV_RL16(s->bytestream+4),
- s->mantissatable,
- s->exponenttable,
- s->offsettable)) * scale;
+ r[j] = av_int2float(half2float(AV_RL16(s->bytestream+0), &s->h2f_tables)) * scale;
+ g[j] = av_int2float(half2float(AV_RL16(s->bytestream+2), &s->h2f_tables)) * scale;
+ b[j] = av_int2float(half2float(AV_RL16(s->bytestream+4), &s->h2f_tables)) * scale;
s->bytestream += 6;
}
@@ -340,18 +331,9 @@ static int pnm_decode_frame(AVCodecContext *avctx, AVFrame *p,
b = (float *)p->data[1];
for (int i = 0; i < avctx->height; i++) {
for (int j = 0; j < avctx->width; j++) {
- r[j] = av_int2float(half2float(AV_RB16(s->bytestream+0),
- s->mantissatable,
- s->exponenttable,
- s->offsettable)) * scale;
- g[j] = av_int2float(half2float(AV_RB16(s->bytestream+2),
- s->mantissatable,
- s->exponenttable,
- s->offsettable)) * scale;
- b[j] = av_int2float(half2float(AV_RB16(s->bytestream+4),
- s->mantissatable,
- s->exponenttable,
- s->offsettable)) * scale;
+ r[j] = av_int2float(half2float(AV_RB16(s->bytestream+0), &s->h2f_tables)) * scale;
+ g[j] = av_int2float(half2float(AV_RB16(s->bytestream+2), &s->h2f_tables)) * scale;
+ b[j] = av_int2float(half2float(AV_RB16(s->bytestream+4), &s->h2f_tables)) * scale;
s->bytestream += 6;
}
@@ -394,10 +376,7 @@ static int pnm_decode_frame(AVCodecContext *avctx, AVFrame *p,
float *g = (float *)p->data[0];
for (int i = 0; i < avctx->height; i++) {
for (int j = 0; j < avctx->width; j++) {
- g[j] = av_int2float(half2float(AV_RL16(s->bytestream),
- s->mantissatable,
- s->exponenttable,
- s->offsettable)) * scale;
+ g[j] = av_int2float(half2float(AV_RL16(s->bytestream), &s->h2f_tables)) * scale;
s->bytestream += 2;
}
g += p->linesize[0] / 4;
@@ -406,10 +385,7 @@ static int pnm_decode_frame(AVCodecContext *avctx, AVFrame *p,
float *g = (float *)p->data[0];
for (int i = 0; i < avctx->height; i++) {
for (int j = 0; j < avctx->width; j++) {
- g[j] = av_int2float(half2float(AV_RB16(s->bytestream),
- s->mantissatable,
- s->exponenttable,
- s->offsettable)) * scale;
+ g[j] = av_int2float(half2float(AV_RB16(s->bytestream), &s->h2f_tables)) * scale;
s->bytestream += 2;
}
g += p->linesize[0] / 4;
@@ -501,7 +477,7 @@ static av_cold int phm_dec_init(AVCodecContext *avctx)
{
PNMContext *s = avctx->priv_data;
- half2float_table(s->mantissatable, s->exponenttable, s->offsettable);
+ init_half2float_tables(&s->h2f_tables);
return 0;
}