1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
/*
* Copyright (C) 2000-2007 the xine project
*
* This file is part of xine, a free video player.
*
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* xine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
* $Id: real_common.c,v 1.3 2007/03/16 20:45:21 dgp85 Exp $
*
* Common function for the thin layer to use Real binary-only codecs in xine
*/
#define LOG_MODULE "real_common"
#define LOG_VERBOSE
/*
#define LOG
*/
#include <sys/stat.h>
#include "real_common.h"
#ifdef __alpha__
void *__builtin_new(size_t size) {
return malloc(size);
}
void __builtin_delete (void *foo) {
/* printf ("libareal: __builtin_delete called\n"); */
free (foo);
}
void *__builtin_vec_new(size_t size) {
return malloc(size);
}
void __builtin_vec_delete(void *mem) {
free(mem);
}
void __pure_virtual(void) {
lprintf("libreal: FATAL: __pure_virtual() called!\n");
/* exit(1); */
}
#endif
#ifdef __FreeBSD__ /* TODO: alias them if at all possible */
void ___brk_addr(void) { exit(0); }
void __ctype_b(void) { exit(0); }
#endif
void _x_real_codecs_init(xine_t *const xine) {
const char *default_real_codecs_path = "";
const char *real_codecs_path = NULL;
struct stat s;
#define try_real_path(path) \
if (!stat (path "/dvr3.so.6.0", &s)) \
default_real_codecs_path = path;
#define try_real_subpath(path) \
try_real_path("/usr/" path) \
else try_real_path("/usr/local" path) \
else try_real_path("/opt" path)
/* The priority is for the first found */
try_real_subpath("lib/win32")
else try_real_subpath("lib/codecs")
else try_real_subpath("lib64/RealPlayer10/codecs")
else try_real_subpath("lib/RealPlayer10/codecs")
else try_real_subpath("lib64/RealPlayer9/users/Real/Codecs")
else try_real_subpath("lib/RealPlayer9/users/Real/Codecs")
else try_real_subpath("lib/RealPlayer8/Codecs")
else try_real_subpath("RealPlayer8/Codecs");
#undef try_real_path
#undef try_real_subpath
real_codecs_path =
xine->config->register_filename (xine->config, "decoder.external.real_codecs_path",
default_real_codecs_path,
XINE_CONFIG_STRING_IS_DIRECTORY_NAME,
_("path to RealPlayer codecs"),
_("If you have RealPlayer installed, specify the path "
"to its codec directory here. You can easily find "
"the codec directory by looking for a file named "
"\"drv3.so.6.0\" in it. If xine can find the RealPlayer "
"codecs, it will use them to decode RealPlayer content "
"for you. Consult the xine FAQ for more information on "
"how to install the codecs."),
10, NULL, NULL);
lprintf ("real codecs path : %s\n", real_codec_path);
}
|