f = * (float *) data;
((uint8_t *) &f)[3 - size] = get_byte(pb);
ebml_read_float (MatroskaDemuxContext *matroska,		 uint32_t             *id,		 double               *num){    ByteIOContext *pb = &matroska->ctx->pb;    int size, res;    uint64_t rlength;    if ((res = ebml_read_element_id(matroska, id, NULL)) < 0 ||        (res = ebml_read_element_length(matroska, &rlength)) < 0)        return res;    size = rlength;    if (size != 4 && size != 8 && size != 10) {        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;#ifdef WORDS_BIGENDIAN        f = * (float *) data;#else        while (size-- > 0)            ((uint8_t *) &f)[size] = get_byte(pb);#endif        *num = f;    } else {        double d;#ifdef WORDS_BIGENDIAN        d = * (double *) data;#else        while (size-- > 0)            ((uint8_t *) &d)[size] = get_byte(pb);#endif        *num = d;    }    return 0;}