diff matroska.c @ 824:779b1e87b865 libavformat

more non portable float parsing code ...
author michael
date Tue, 19 Jul 2005 15:32:43 +0000
parents feca73904e67
children 91dcb9da9be6
line wrap: on
line diff
--- a/matroska.c	Tue Jul 19 14:50:22 2005 +0000
+++ b/matroska.c	Tue Jul 19 15:32:43 2005 +0000
@@ -609,42 +609,21 @@
         return res;
     size = rlength;
 
-    if (size != 4 && size != 8 && size != 10) {
+    if (size == 4) {
+        *num= av_int2flt(get_be32(pb));
+    } else if(size==8){
+        *num= av_int2dbl(get_be64(pb));
+    } else if(size==10){
+        av_log(matroska->ctx, AV_LOG_ERROR,
+               "FIXME! 10-byte floats unimplemented\n");
+        return AVERROR_UNKNOWN;
+    } else{
         offset_t pos = url_ftell(pb);
         av_log(matroska->ctx, AV_LOG_ERROR,
                "Invalid float element size %d at position %llu (0x%llx)\n",
                size, pos, pos);
         return AVERROR_INVALIDDATA;
     }
-    if (size == 10) {
-        av_log(matroska->ctx, AV_LOG_ERROR,
-               "FIXME! 10-byte floats unimplemented\n");
-        return AVERROR_UNKNOWN;
-    }
-
-    if (size == 4) {
-        float f;
-
-        while (size-- > 0)
-#ifdef WORDS_BIGENDIAN
-            ((uint8_t *) &f)[3 - size] = get_byte(pb);
-#else
-            ((uint8_t *) &f)[size] = get_byte(pb);
-#endif
-
-        *num = f;
-    } else {
-        double d;
-
-        while (size-- > 0)
-#ifdef WORDS_BIGENDIAN
-            ((uint8_t *) &d)[7 - size] = get_byte(pb);
-#else
-            ((uint8_t *) &d)[size] = get_byte(pb);
-#endif
-
-        *num = d;
-    }
 
     return 0;
 }