/src/ffmpeg/libavutil/float2half.h
Line | Count | Source |
1 | | /* |
2 | | * This file is part of FFmpeg. |
3 | | * |
4 | | * FFmpeg is free software; you can redistribute it and/or |
5 | | * modify it under the terms of the GNU Lesser General Public |
6 | | * License as published by the Free Software Foundation; either |
7 | | * version 2.1 of the License, or (at your option) any later version. |
8 | | * |
9 | | * FFmpeg is distributed in the hope that it will be useful, |
10 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | | * Lesser General Public License for more details. |
13 | | * |
14 | | * You should have received a copy of the GNU Lesser General Public |
15 | | * License along with FFmpeg; if not, write to the Free Software |
16 | | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
17 | | */ |
18 | | |
19 | | #ifndef AVUTIL_FLOAT2HALF_H |
20 | | #define AVUTIL_FLOAT2HALF_H |
21 | | |
22 | | #include <stdint.h> |
23 | | #include "intfloat.h" |
24 | | |
25 | | #include "config.h" |
26 | | |
27 | | typedef struct Float2HalfTables { |
28 | | #if HAVE_FAST_FLOAT16 |
29 | | uint8_t dummy; |
30 | | #else |
31 | | uint16_t basetable[512]; |
32 | | uint8_t shifttable[512]; |
33 | | #endif |
34 | | } Float2HalfTables; |
35 | | |
36 | | void ff_init_float2half_tables(Float2HalfTables *t); |
37 | | |
38 | | static inline uint16_t float2half(uint32_t f, const Float2HalfTables *t) |
39 | 21.8M | { |
40 | | #if HAVE_FAST_FLOAT16 |
41 | | union { |
42 | | _Float16 f; |
43 | | uint16_t i; |
44 | | } u; |
45 | | u.f = av_int2float(f); |
46 | | return u.i; |
47 | | #else |
48 | 21.8M | uint16_t h; |
49 | | |
50 | 21.8M | h = t->basetable[(f >> 23) & 0x1ff] + ((f & 0x007fffff) >> t->shifttable[(f >> 23) & 0x1ff]); |
51 | | |
52 | 21.8M | return h; |
53 | 21.8M | #endif |
54 | 21.8M | } Line | Count | Source | 39 | 21.8M | { | 40 | | #if HAVE_FAST_FLOAT16 | 41 | | union { | 42 | | _Float16 f; | 43 | | uint16_t i; | 44 | | } u; | 45 | | u.f = av_int2float(f); | 46 | | return u.i; | 47 | | #else | 48 | 21.8M | uint16_t h; | 49 | | | 50 | 21.8M | h = t->basetable[(f >> 23) & 0x1ff] + ((f & 0x007fffff) >> t->shifttable[(f >> 23) & 0x1ff]); | 51 | | | 52 | 21.8M | return h; | 53 | 21.8M | #endif | 54 | 21.8M | } |
Unexecuted instantiation: float2half.c:float2half Unexecuted instantiation: exrenc.c:float2half |
55 | | |
56 | | #endif /* AVUTIL_FLOAT2HALF_H */ |