1 /* 2 * Copyright (c) 2011 Mans Rullgard 3 * 4 * This file is part of Libav. 5 * 6 * Libav is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * Libav is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with Libav; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 module ffmpeg.libavutil.intfloat; 21 import std.stdint; 22 import std.conv; 23 24 union av_intfloat32 { 25 uint32_t i; 26 float f; 27 }; 28 29 union av_intfloat64 { 30 uint64_t i; 31 double f; 32 }; 33 34 extern(C): 35 /** 36 * Reinterpret a 32-bit integer as a float. 37 */ 38 static float av_int2float(uint32_t i) 39 { 40 return to!float(i); 41 } 42 43 /** 44 * Reinterpret a float as a 32-bit integer. 45 */ 46 static uint32_t av_float2int(float f) 47 { 48 return to!int(f); 49 } 50 51 /** 52 * Reinterpret a 64-bit integer as a double. 53 */ 54 static double av_int2double(uint64_t i) 55 { 56 return to!double(i); 57 } 58 59 /** 60 * Reinterpret a double as a 64-bit integer. 61 */ 62 static uint64_t av_double2int(double f) 63 { 64 return to!int(f); 65 } 66