Michael Stefaniuc (@mstefani) commented about dlls/dmime/segment.c:
case FOURCC_LIST: {FIXME("Skipping LIST tag\n");break;}case mmioFOURCC('I','S','F','T'): {FIXME("Skipping ISFT tag\n");break;}case mmioFOURCC('f','a','c','t'): {FIXME("Skipping fact tag\n");break;}}- }
 - return S_OK;
 
The stream_next_chunk() in the while loop can fail too and you'll need to return that failure too. S_FALSE indicates "no more chunks".