code: def _canon_decode_tag(self, value, mn_tags):
          
          for i in range(1, len(value)):
              tag = mn_tags.get(i, ('Unknown', ))
              name = tag[0]
              if len(tag) > 1:
                  val = tag[1].get(value[i], 'Unknown')
              else:
                  val = value[i]
              try:
                  logger.debug(" %s %s %s", i, name, hex(value[i]))
              except TypeError:
                  logger.debug(" %s %s %s", i, name, value[i])
  
              # it's not a real IFD Tag but we fake one to make everybody
              # happy. this will have a "proprietary" type
              self.tags['MakerNote ' + name] = IfdTag(str(val), None, 0, None,
                                                      None, None)
docs: Decode Canon MakerNote tag based on offset within tag.
  
          See http://www.burren.cx/david/canon.html by David Burren