diff --git a/lib/mp4.cpp b/lib/mp4.cpp
index 5b49447c..9f211a49 100644
--- a/lib/mp4.cpp
+++ b/lib/mp4.cpp
@@ -2450,7 +2450,7 @@ namespace MP4 {
   
   std::string ESDS::getESHeaderStartCodes(){
     std::string result;
-    for (int i = 0; i < getInt8(34) - 1; i++){
+    for (int i = 0; i < getInt8(34); i++){
       result += getInt8(35 + i);
     }
     return result;
@@ -2464,35 +2464,35 @@ namespace MP4 {
   }
   
   char ESDS::getSLConfigDescriptorTypeTag(){
-    return getInt16(35 + getInt8(34));  
+    return getInt8(35 + getInt8(34));  
   }
   
   void ESDS::setSLConfigDescriptorTypeTag(char newVal){
-    setInt16(newVal, 35 + getInt8(34));
+    setInt8(newVal, 35 + getInt8(34));
   }
   
   uint32_t ESDS::getSLConfigExtendedDescriptorTypeTag(){
-    return getInt24(37 + getInt8(34));  
+    return getInt24(36 + getInt8(34));  
   }
   //3 bytes
   void ESDS::setSLConfigExtendedDescriptorTypeTag(uint32_t newVal){
-    setInt24(newVal, 37 + getInt8(34));
+    setInt24(newVal, 36 + getInt8(34));
   }
   //3 bytes
   char ESDS::getSLDescriptorTypeLength(){
-    return getInt8(40 + getInt8(34));
+    return getInt8(39 + getInt8(34));
   }
   
   void ESDS::setSLDescriptorTypeLength(char newVal){
-    setInt8(newVal, 40 + getInt8(34));
+    setInt8(newVal, 39 + getInt8(34));
   }
   
   char ESDS::getSLValue(){
-    return getInt8(41 + getInt8(34));
+    return getInt8(40 + getInt8(34));
   }
   
   void ESDS::setSLValue(char newVal){
-    setInt8(newVal, 41 + getInt8(34));
+    setInt8(newVal, 40 + getInt8(34));
   }
   
   std::string ESDS::toPrettyString(uint32_t indent){