view get_path.c @ 10686:8eb690f0e342

- seek() is always synchronized to keyframes, so the decoders don't crash anymore; successfully tested with libmpeg2 and ffmpeg12 - support for tables PAT and PMT, used the associate pids to program and to play the right streams - option -tsprog <number> to specify the chosen program (-vid and -aid still override the single stream pids) - initial support for MPEG4 in TS (M4V is working, but not AAC yet) - defragmenting mechanism (without buffering, so it has 0 added cost) to improve the playback of high bitrate movies - refers to demux_mpg_control() to get length and percentage position in the stream patch by Nico <nsabbi@libero.it>
author arpi
date Sun, 24 Aug 2003 18:07:00 +0000
parents b8780122e043
children 133e0ebde74d
line wrap: on
line source


char *get_path(char *filename){
	char *homedir;
	char *buff;
#if defined(__MINGW32__)
    static char *config_dir = "/mplayer";
#else
	static char *config_dir = "/.mplayer";
#endif
	int len;

	if ((homedir = getenv("HOME")) == NULL)
#if defined(__MINGW32__)||defined(__CYGWIN__) /*hack to get fonts etc. loaded outside of cygwin environment*/
	{
    	int __stdcall GetModuleFileNameA(void* hModule,char* lpFilename,int nSize);
        int i,imax=0;       
        char exedir[260];       
        GetModuleFileNameA(NULL, exedir, 260);
        for(i=0; i< strlen(exedir);i++)if(exedir[i] =='\\'){exedir[i]='/';imax=i;}
        exedir[imax]='\0';
	    homedir = exedir;
	}
#else
		return NULL;
#endif       
	len = strlen(homedir) + strlen(config_dir) + 1;
	if (filename == NULL) {
		if ((buff = (char *) malloc(len)) == NULL)
			return NULL;
		sprintf(buff, "%s%s", homedir, config_dir);
	} else {
		len += strlen(filename) + 1;
		if ((buff = (char *) malloc(len)) == NULL)
			return NULL;
		sprintf(buff, "%s%s/%s", homedir, config_dir, filename);
	}
	mp_msg(MSGT_GLOBAL,MSGL_V,"get_path('%s') -> '%s'\n",filename,buff);
	return buff;
}