aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/ffv1_parse.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2025-01-18 04:25:42 +0100
committerMichael Niedermayer <michael@niedermayer.cc>2025-03-08 20:55:38 +0100
commitc1b330bf2421cf3400e185ecd65dd69308891f19 (patch)
tree10308e4644b622654dd1705cecbcc6dda447b700 /libavcodec/ffv1_parse.c
parent114e9864e14d8fcd44a7c6f5c7d302764d7607b5 (diff)
downloadffmpeg-c1b330bf2421cf3400e185ecd65dd69308891f19.tar.gz
avcodec/ffv1: Basic float16 support
Sponsored-by: Sovereign Tech Fund Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/ffv1_parse.c')
-rw-r--r--libavcodec/ffv1_parse.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/libavcodec/ffv1_parse.c b/libavcodec/ffv1_parse.c
index 636e2c62ab..a85b563e98 100644
--- a/libavcodec/ffv1_parse.c
+++ b/libavcodec/ffv1_parse.c
@@ -172,6 +172,8 @@ int ff_ffv1_read_extra_header(FFV1Context *f)
f->crcref = 0x7a8c4079;
if (f->combined_version >= 0x30003)
f->intra = ff_ffv1_get_symbol(&c, state, 0);
+ if (f->combined_version >= 0x40004)
+ f->flt = ff_ffv1_get_symbol(&c, state, 0);
}
if (f->version > 2) {
@@ -401,10 +403,16 @@ int ff_ffv1_parse_header(FFV1Context *f, RangeCoder *c, uint8_t *state)
else if (f->avctx->bits_per_raw_sample == 14 && f->transparency)
f->pix_fmt = AV_PIX_FMT_GBRAP14;
else if (f->avctx->bits_per_raw_sample == 16 && !f->transparency) {
- f->pix_fmt = AV_PIX_FMT_GBRP16;
+ if (f->flt) {
+ f->pix_fmt = AV_PIX_FMT_GBRPF16;
+ } else
+ f->pix_fmt = AV_PIX_FMT_GBRP16;
f->use32bit = 1;
} else if (f->avctx->bits_per_raw_sample == 16 && f->transparency) {
- f->pix_fmt = AV_PIX_FMT_GBRAP16;
+ if (f->flt) {
+ f->pix_fmt = AV_PIX_FMT_GBRAPF16;
+ } else
+ f->pix_fmt = AV_PIX_FMT_GBRAP16;
f->use32bit = 1;
}
} else {