public void prefetch() throws MediaException {
        if(state == UNREALIZED){
            realize();
        }
        if(state == PREFETCHED || state == STARTED) return;
        if(state == CLOSED) throw new IllegalStateException();
        try{
        	prefetchImpl();
        }
        catch(Exception e){
        	e.printStackTrace();
        	throw new MediaException(e.toString());
        }
        state = PREFETCHED;
    }