diff --git a/bin/smartdata/Unit.php b/bin/smartdata/Unit.php
index 09270a9e27e05ab9c303721d42e79fd6c6a1b2a2..b456ed5e58f469ce5b45192bea61e3964d7d532d 100644
--- a/bin/smartdata/Unit.php
+++ b/bin/smartdata/Unit.php
@@ -64,10 +64,8 @@ abstract class Unit
         switch ($u & (1 << 31)) {
             case self::DIGITAL:
                 return new Digital_Unit($u);
-                break;
             case self::SI:
                 return new SI_Unit($u);
-                break;
             default:
                 throw new InvalidUnitException("Invalid Unit: " . $u);
         }
@@ -135,6 +133,42 @@ final class TypicalUnit extends Unit
 
 class Digital_Unit extends Unit
 {
+    //const Switch                  = 0 << 8 | 00 << 0;
+    //const Direction               = 0 << 8 | 01 << 0;
+    //const On_Off                  = 0 << 8 | 00 << 0;
+    //const RFID32                  = 1 << 8 | 00 << 0;
+    const PCMU                    = 2 << 8 |  0 << 0;
+    const GSM                     = 2 << 8 |  3 << 0;
+    const G723                    = 2 << 8 |  4 << 0;
+    const DVI4_8                  = 2 << 8 |  5 << 0;
+    const DVI4_16                 = 2 << 8 |  6 << 0;
+    const LPC                     = 2 << 8 |  7 << 0;
+    const PCMA                    = 2 << 8 |  8 << 0;
+    const G722                    = 2 << 8 |  9 << 0;
+    const L16_2                   = 2 << 8 | 10 << 0;
+    const L16_1                   = 2 << 8 | 11 << 0;
+    const QCELP                   = 2 << 8 | 12 << 0;
+    const CN                      = 2 << 8 | 13 << 0;
+    const MPA                     = 2 << 8 | 14 << 0;
+    const G728                    = 2 << 8 | 15 << 0;
+    const DVI4_11                 = 2 << 8 | 16 << 0;
+    const DVI4_22                 = 2 << 8 | 17 << 0;
+    const G729                    = 2 << 8 | 18 << 0;
+    const CelB                    = 2 << 8 | 25 << 0;
+    const JPEG                    = 2 << 8 | 26 << 0;
+    const nv                      = 2 << 8 | 28 << 0;
+    const H261                    = 2 << 8 | 31 << 0;
+    const MPV                     = 2 << 8 | 32 << 0;
+    const MP2T                    = 2 << 8 | 33 << 0;
+    const H263                    = 2 << 8 | 34 << 0;
+    const MPEG2TS                 = 2 << 8 | 35 << 0;
+    const PNG                     = 2 << 8 | 36 << 0;
+    const RAW_BGR                 = 2 << 8 | 37 << 0;
+    const PCD_MONOCROMATIC        = 2 << 8 |  1 << 0;
+    const PCD_RGB                 = 2 << 8 |  2 << 0;
+    //const MOTION_VECTOR_GLOBAL    = 1 << 15 | 0 << 8 | 00 << 00;
+    //const MOTION_VECTOR_LOCAL     = 1 << 15 | 0 << 8 | 00 << 00;
+
     public function __get($property)
     {
         switch ($property) {
@@ -143,12 +177,54 @@ class Digital_Unit extends Unit
             case 'type':
                 return (($this->_unit & self::TYPE) >> 16);
             case 'lenght':
-                return ($this->_unit & self::LENGHT);
+                return $this->_getLengthByUnit($this->_unit);
             default:
                 return null;
         }
     }
 
+    public function _getLengthByUnit($unit)
+    {
+        switch ($unit & self::TYPE >> 16) {
+            case self::PCMU: // TODO
+            case self::GSM:
+            case self::G723:
+            case self::DVI4_8:
+            case self::DVI4_16:
+            case self::LPC:
+            case self::PCMA:
+            case self::G722:
+            case self::L16_2:
+            case self::L16_1:
+            case self::QCELP:
+            case self::CN:
+            case self::MPA:
+            case self::G728:
+            case self::DVI4_11:
+            case self::DVI4_22:
+            case self::G729:
+            case self::CelB:
+            case self::nv:
+            case self::H261:
+            case self::MPV:
+            case self::MP2T:
+            case self::H263:
+            case self::MPEG2TS:
+                return ($this->_unit & self::LENGHT) == 1 ? 1 : $this->_unit & self::LENGHT;
+            case self::JPEG:
+                return ($this->_unit & self::LENGHT) == 1 ? 61440 : $this->_unit & self::LENGHT;
+            case self::PNG:
+                return ($this->_unit & self::LENGHT) == 1 ? 1 * 1024 * 1024 : (($this->_unit & self::LENGHT) == 2 ? 4 * 1024 * 1024 : $this->_unit & self::LENGHT);
+            case self::RAW_BGR:
+                return (($this->_unit & self::LENGHT) == 1 ? 1920 * 1080 * 3 : (($this->_unit & self::LENGHT) == 2 ? 1920 * 1200 * 3 : $this->_unit & self::LENGHT));
+            case self::PCD_MONOCROMATIC:
+                return (($this->_unit & self::LENGHT) == 1 ? 4 * 4 * 32 * (100000 * 0.1) : (($this->_unit & self::LENGHT) == 2 ? 16 * 2 * 12 * (4 * 3 + 1) : $this->_unit & self::LENGHT));
+            case self::PCD_RGB:
+                return ($this->_unit & self::LENGHT) == 1 ? 1 * 1024 * 1024 : $this->_unit & self::LENGHT;
+            default:
+                return $this->_unit & self::LENGHT;
+        }
+    }
     public function __toString()
     {
         return "{{$this->cod}, D, t={$this->type}, l={$this->lenght}}";