class_docstr: A CoreAudio "extended audio file". Reads information and raw PCM
  audio data from any file that CoreAudio knows how to decode.
  
      >>> with ExtAudioFile('something.m4a') as f:
      >>>     print f.samplerate
      >>>     print f.channels
      >>>     print f.duration
      >>>     for block in f:
      >>>         do_something(block)
class_docstr_tok: ["A","CoreAudio","``","extended","audio","file","''",".","Reads","information","and","raw","PCM","audio","data","from","any","file","that","CoreAudio","knows","how","to","decode",".",">",">",">","with","ExtAudioFile","(","'something.m4a","'",")","as","f",":",">",">",">","print","f.samplerate",">",">",">","print","f.channels",">",">",">","print","f.duration",">",">",">","for","block","in","f",":",">",">",">","do_something","(","block",")"]
docstr: Generates byte strings reflecting the audio data in the file.
          
code: def read_data(self, blocksize=4096):
      """Generates byte strings reflecting the audio data in the file."""
      frames = ctypes.c_uint(
          blocksize // self._client_fmt.mBytesPerFrame
      )
      buf = ctypes.create_string_buffer(blocksize)
  
      buflist = AudioBufferList()
      buflist.mNumberBuffers = 1
      buflist.mBuffers[
          0
      ].mNumberChannels = self._client_fmt.mChannelsPerFrame
      buflist.mBuffers[0].mDataByteSize = blocksize
      buflist.mBuffers[0].mData = ctypes.cast(buf, ctypes.c_void_p)
  
      while True:
          check(
              _coreaudio.ExtAudioFileRead(
                  self._obj, ctypes.byref(frames), ctypes.byref(buflist)
              )
          )
  
          assert buflist.mNumberBuffers == 1
          size = buflist.mBuffers[0].mDataByteSize
          if not size:
              break
  
          data = ctypes.cast(
              buflist.mBuffers[0].mData, ctypes.POINTER(ctypes.c_char)
          )
          blob = data[:size]
          yield blob
  
imports: import copy
  import ctypes
  import ctypes.util
  import os
  import sys
  from .exceptions import DecodeError
  from .base import AudioFile
label_desc: Use image node_id 10 for calling the ExtAudioFile obj's underlying member method code with example usage: obj.read_data(blocksize) without return types