code: def _parse_stsd(self, atom, fileobj):
          
  
          assert atom.name == b"stsd"
  
          ok, data = atom.read(fileobj)
          if not ok:
              raise MP4StreamInfoError("Invalid stsd")
  
          try:
              version, flags, data = parse_full_atom(data)
          except ValueError as e:
              raise MP4StreamInfoError(e)
  
          if version != 0:
              raise MP4StreamInfoError("Unsupported stsd version")
  
          try:
              num_entries, offset = cdata.uint32_be_from(data, 0)
          except cdata.error as e:
              raise MP4StreamInfoError(e)
  
          if num_entries == 0:
              return
  
          # look at the first entry if there is one
          entry_fileobj = cBytesIO(data[offset:])
          try:
              entry_atom = Atom(entry_fileobj)
          except AtomError as e:
              raise MP4StreamInfoError(e)
  
          try:
              entry = AudioSampleEntry(entry_atom, entry_fileobj)
          except ASEntryError as e:
              raise MP4StreamInfoError(e)
          else:
              self.channels = entry.channels
              self.bits_per_sample = entry.sample_size
              self.sample_rate = entry.sample_rate
              self.bitrate = entry.bitrate
              self.codec = entry.codec
              self.codec_description = entry.codec_description
docs: Sets channels, bits_per_sample, sample_rate and optionally bitrate.
  
          Can raise MP4StreamInfoError.