+int pa_scache_add_file(struct pa_core *c, const char *name, const char *filename, uint32_t *index) {
+ struct pa_sample_spec ss;
+ struct pa_memchunk chunk;
+ int r;
+
+ if (pa_sound_file_load(filename, &ss, &chunk, c->memblock_stat) < 0)
+ return -1;
+
+ r = pa_scache_add_item(c, name, &ss, &chunk, index);
+ pa_memblock_unref(chunk.memblock);
+
+ return r;
+}
+
+int pa_scache_add_file_lazy(struct pa_core *c, const char *name, const char *filename, uint32_t *index) {
+ struct pa_scache_entry *e;
+ assert(c && name);
+
+ if (!(e = scache_add_item(c, name)))
+ return -1;
+
+ e->lazy = 1;
+ e->filename = pa_xstrdup(filename);
+
+ if (!c->scache_auto_unload_event) {
+ struct timeval ntv;
+ gettimeofday(&ntv, NULL);
+ ntv.tv_sec += UNLOAD_POLL_TIME;
+ c->scache_auto_unload_event = c->mainloop->time_new(c->mainloop, &ntv, timeout_callback, c);
+ }
+
+ return 0;
+}
+