FFmpeg coverage


Directory: ../../../ffmpeg/
File: src/libavutil/float2half.h
Date: 2024-05-04 02:01:39
Exec Total Coverage
Lines: 0 3 0.0%
Functions: 0 1 0.0%
Branches: 0 0 -%

Line Branch Exec 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 {
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 uint16_t h;
49
50 h = t->basetable[(f >> 23) & 0x1ff] + ((f & 0x007fffff) >> t->shifttable[(f >> 23) & 0x1ff]);
51
52 return h;
53 #endif
54 }
55
56 #endif /* AVUTIL_FLOAT2HALF_H */
57