docs: def get_codestream(self, header_only=True):
          """Retrieve codestream.
  
          Parameters
          ----------
          header_only : bool, optional
              If True, only marker segments in the main header are parsed.
              Supplying False may impose a large performance penalty.
  
          Returns
          -------
          Codestream
              Object describing the codestream syntax.
  
          Examples
          --------
          >>> import glymur
          >>> jfile = glymur.data.nemo()
          >>> jp2 = glymur.Jp2k(jfile)
          >>> codestream = jp2.get_codestream()
          >>> print(codestream.segment[1])
          SIZ marker segment @ (3233, 47)
              Profile:  no profile
              Reference Grid Height, Width:  (1456 x 2592)
              Vertical, Horizontal Reference Grid Offset:  (0 x 0)
              Reference Tile Height, Width:  (1456 x 2592)
              Vertical, Horizontal Reference Tile Offset:  (0 x 0)
              Bitdepth:  (8, 8, 8)
              Signed:  (False, False, False)
              Vertical, Horizontal Subsampling:  ((1, 1), (1, 1), (1, 1))
          """
          with open(self.filename, 'rb') as fptr:
              if self._codec_format == opj2.CODEC_J2K:
                  codestream = Codestream(fptr, self.length,
                                          header_only=header_only)
              else:
                  box = [x for x in self.box if x.box_id == 'jp2c']
                  fptr.seek(box[0].offset)
                  read_buffer = fptr.read(8)
                  (box_length, _) = struct.unpack('>I4s', read_buffer)
                  if box_length == 0:
                      # The length of the box is presumed to last until the end
                      # of the file.  Compute the effective length of the box.
                      box_length = os.path.getsize(fptr.name) - fptr.tell() + 8
                  elif box_length == 1:
                      # Seek past the XL field.
                      read_buffer = fptr.read(8)
                      box_length, = struct.unpack('>Q', read_buffer)
                  codestream = Codestream(fptr, box_length - 8,
                                          header_only=header_only)
  
              return codestream