James, I tried that - didn't have any effect, the problem is still there; see log attached. I still think that there is an extra addref somewhere, so cleanup doesn't happen properly. The first playbacks have this in the log: Code: CReferenceClock refCount=1 CReClock refCount=1, m_reclockRunning 0 and after the playback, cleanup happens (destructors get called): Code: ~CReClock() CReClock refCount=0 But after bitstream playback destructor is not called, and the next (PCM) playback starts with this: Code: CReferenceClock refCount=2 CReClock refCount=2, m_reclockRunning 0 So there was an extra reference that prevented a proper cleanup (or so it seems). Let me know if you need to get more info. Thanks!