- if(ov_fopen(fname, &vf) != 0) {
- error_log("failed to open ogg/vorbis stream: %s\n", fname ? fname : "<not found>");
+ ass_file *fp;
+ if(!(fp = ass_fopen(fname, "rb"))) {
+ error_log("failed to open ogg/vorbis stream: %s: %s\n", fname, strerror(ass_errno));
+ pthread_mutex_unlock(&vflock);
+ return false;
+ }
+
+ ov_callbacks iofuncs = { ass_fread, io_fseek, io_close, ass_ftell };
+ if(ov_open_callbacks(fp, &vf, 0, 0, iofuncs) != 0) {
+ error_log("failed to open ogg/vorbis stream: %s: %s\n", fname, strerror(ass_errno));
+ ass_fclose(fp);