From ace000d3a03181607b130c28da69652f5f60f7d6 Mon Sep 17 00:00:00 2001 From: Darren Salt Date: Tue, 19 Dec 2006 19:10:50 +0000 Subject: Mark string-type configuration items according to whether they're plain strings or names of files, device nodes or directories. This information is available to front ends (via .num_value) so that they can present file/dir-open dialogue boxes if they so choose. Subtitle font selection is split up due to this. CVS patchset: 8425 CVS date: 2006/12/19 19:10:50 --- src/libreal/audio_decoder.c | 5 +++-- src/libreal/xine_decoder.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index d5b2b2d26..105c91fe3 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.49 2006/07/10 22:08:30 dgp85 Exp $ + * $Id: audio_decoder.c,v 1.50 2006/12/19 19:10:51 dsalt Exp $ * * thin layer to use real binary-only codecs in xine * @@ -740,8 +740,9 @@ static void *init_class (xine_t *xine, void *data) { if (!stat ("/usr/lib/win32/drv3.so.6.0", &s)) default_real_codec_path = "/usr/lib/win32"; - real_codec_path = config->register_string (config, "decoder.external.real_codecs_path", + real_codec_path = config->register_filename (config, "decoder.external.real_codecs_path", default_real_codec_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 " diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index 0ed7f12d8..d1f5ce1c0 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.83 2006/07/10 22:08:30 dgp85 Exp $ + * $Id: xine_decoder.c,v 1.84 2006/12/19 19:10:51 dsalt Exp $ * * thin layer to use real binary-only codecs in xine * @@ -633,8 +633,9 @@ static void *init_class (xine_t *xine, void *data) { if (!stat ("/usr/lib/win32/drv3.so.6.0", &s)) default_real_codec_path = "/usr/lib/win32"; - real_codec_path = config->register_string (config, "decoder.external.real_codecs_path", + real_codec_path = config->register_filename (config, "decoder.external.real_codecs_path", default_real_codec_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 " -- cgit v1.2.3 From 780908b7567d712ebd866081760b91abcb03017c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Tue, 20 Feb 2007 00:34:55 +0000 Subject: Fix a lot of format warnings in lprintf calls (mostly %ldd -> %"PRId64"). CVS patchset: 8608 CVS date: 2007/02/20 00:34:55 --- src/libreal/audio_decoder.c | 4 ++-- src/libreal/xine_decoder.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index 105c91fe3..8b8e40126 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.50 2006/12/19 19:10:51 dsalt Exp $ + * $Id: audio_decoder.c,v 1.51 2007/02/20 00:34:57 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -443,7 +443,7 @@ static unsigned char sipr_swaps[38][2]={ static void realdec_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { realdec_decoder_t *this = (realdec_decoder_t *) this_gen; - lprintf ("decode_data %d bytes, flags=0x%08x, pts=%lld ...\n", + lprintf ("decode_data %d bytes, flags=0x%08x, pts=%"PRId64" ...\n", buf->size, buf->decoder_flags, buf->pts); if (buf->decoder_flags & BUF_FLAG_PREVIEW) { diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index d1f5ce1c0..ffd89178b 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.84 2006/12/19 19:10:51 dsalt Exp $ + * $Id: xine_decoder.c,v 1.85 2007/02/20 00:34:57 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -262,7 +262,7 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { this->duration = 90000.0 / this->fps; #endif - lprintf("this->ratio=%d\n", this->ratio); + lprintf("this->ratio=%f\n", this->ratio); lprintf ("init_data.w=%d(0x%x), init_data.h=%d(0x%x)," "this->width=%d(0x%x), this->height=%d(0x%x)\n", @@ -338,7 +338,7 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) { realdec_decoder_t *this = (realdec_decoder_t *) this_gen; - lprintf ("decode_data, flags=0x%08x, len=%d, pts=%lld ...\n", + lprintf ("decode_data, flags=0x%08x, len=%d, pts=%"PRId64" ...\n", buf->decoder_flags, buf->size, buf->pts); if (buf->decoder_flags & BUF_FLAG_PREVIEW) { @@ -374,7 +374,7 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) this->chunk_buffer_size = 0; this->pts = buf->pts; - lprintf ("new frame starting, pts=%lld\n", this->pts); + lprintf ("new frame starting, pts=%"PRId64"\n", this->pts); } if ((this->chunk_buffer_size + buf->size) > this->chunk_buffer_max) { -- cgit v1.2.3 From 51d097f9144193c98d881f14c4e4bd6b579574f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 19:31:57 +0000 Subject: There's no need to check if the shared object to open is 32 or 64 bits, as dlopen() will not load a codec if it's not loadable in the current process (which means it won't load 64-bit codecs on 32-bit xine, or 32-bit codecs on 64-bit xine). CVS patchset: 8678 CVS date: 2007/03/16 19:31:57 --- src/libreal/audio_decoder.c | 54 +-------------------------------------------- src/libreal/xine_decoder.c | 54 +-------------------------------------------- 2 files changed, 2 insertions(+), 106 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index 8b8e40126..d60e8f8e1 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.51 2007/02/20 00:34:57 dgp85 Exp $ + * $Id: audio_decoder.c,v 1.52 2007/03/16 19:31:57 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -32,9 +32,6 @@ #include #include #include -#ifdef __x86_64__ - #include -#endif #define LOG_MODULE "real_audio_decoder" #define LOG_VERBOSE @@ -121,49 +118,6 @@ void __builtin_delete (void *foo) { free (foo); } -#ifdef __x86_64__ -/* (gb) quick-n-dirty check to be run natively */ -static int is_x86_64_object_(FILE *f) -{ - Elf64_Ehdr *hdr = malloc(sizeof(Elf64_Ehdr)); - if (hdr == NULL) - return 0; - - if (fseek(f, 0, SEEK_SET) != 0) { - free(hdr); - return 0; - } - - if (fread(hdr, sizeof(Elf64_Ehdr), 1, f) != 1) { - free(hdr); - return 0; - } - - if (hdr->e_ident[EI_MAG0] != ELFMAG0 || - hdr->e_ident[EI_MAG1] != ELFMAG1 || - hdr->e_ident[EI_MAG2] != ELFMAG2 || - hdr->e_ident[EI_MAG3] != ELFMAG3) { - free(hdr); - return 0; - } - - return hdr->e_machine == EM_X86_64; -} - -static inline int is_x86_64_object(const char *filename) -{ - FILE *f; - int ret; - - if ((f = fopen(filename, "r")) == NULL) - return 0; - - ret = is_x86_64_object_(f); - fclose(f); - return ret; -} -#endif - static int load_syms_linux (realdec_decoder_t *this, char *codec_name, const char *alt_codec_name) { @@ -176,12 +130,6 @@ static int load_syms_linux (realdec_decoder_t *this, char *codec_name, if (stat(path, &sb)) snprintf (path, sizeof(path), "%s/%s", entry->str_value, alt_codec_name); -#ifdef __x86_64__ - /* check whether it's a real x86-64 library */ - if (!is_x86_64_object(path)) - return 0; -#endif - lprintf ("(audio) opening shared obj '%s'\n", path); this->ra_handle = dlopen (path, RTLD_LAZY); diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index ffd89178b..28770636b 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.85 2007/02/20 00:34:57 dgp85 Exp $ + * $Id: xine_decoder.c,v 1.86 2007/03/16 19:31:57 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -32,9 +32,6 @@ #include #include #include -#ifdef __x86_64__ - #include -#endif #define LOG_MODULE "real_decoder" #define LOG_VERBOSE @@ -106,49 +103,6 @@ void *__builtin_vec_new(uint32_t size); void __builtin_vec_delete(void *mem); void __pure_virtual(void); -#ifdef __x86_64__ -/* (gb) quick-n-dirty check to be run natively */ -static int is_x86_64_object_(FILE *f) -{ - Elf64_Ehdr *hdr = malloc(sizeof(Elf64_Ehdr)); - if (hdr == NULL) - return 0; - - if (fseek(f, 0, SEEK_SET) != 0) { - free(hdr); - return 0; - } - - if (fread(hdr, sizeof(Elf64_Ehdr), 1, f) != 1) { - free(hdr); - return 0; - } - - if (hdr->e_ident[EI_MAG0] != ELFMAG0 || - hdr->e_ident[EI_MAG1] != ELFMAG1 || - hdr->e_ident[EI_MAG2] != ELFMAG2 || - hdr->e_ident[EI_MAG3] != ELFMAG3) { - free(hdr); - return 0; - } - - return hdr->e_machine == EM_X86_64; -} - -static inline int is_x86_64_object(const char *filename) -{ - FILE *f; - int ret; - - if ((f = fopen(filename, "r")) == NULL) - return 0; - - ret = is_x86_64_object_(f); - fclose(f); - return ret; -} -#endif - /* * real codec loader */ @@ -165,12 +119,6 @@ static int load_syms_linux (realdec_decoder_t *this, char *codec_name, if (stat(path, &sb)) snprintf (path, sizeof(path), "%s/%s", entry->str_value, alt_codec_name); -#ifdef __x86_64__ - /* check whether it's a real x86-64 library */ - if (!is_x86_64_object(path)) - return 0; -#endif - lprintf ("opening shared obj '%s'\n", path); this->rv_handle = dlopen (path, RTLD_LAZY); -- cgit v1.2.3 From f07c6cb7930d9f6e9842cc671ed86f687d456e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 20:02:33 +0000 Subject: Move the __builtin functions in a different unit, and define them only on Alpha as that's the only architecture for which the binary codecs available on MPlayer site are needing them. Newer versions needs not these symbols, and for safety, I'd rather avoid messing with the global namespace. CVS patchset: 8679 CVS date: 2007/03/16 20:02:33 --- src/libreal/Makefile.am | 12 ++++------ src/libreal/audio_decoder.c | 36 +--------------------------- src/libreal/real_common.c | 57 +++++++++++++++++++++++++++++++++++++++++++++ src/libreal/real_common.h | 47 +++++++++++++++++++++++++++++++++++++ src/libreal/xine_decoder.c | 18 +------------- 5 files changed, 111 insertions(+), 59 deletions(-) create mode 100644 src/libreal/real_common.c create mode 100644 src/libreal/real_common.h (limited to 'src/libreal') diff --git a/src/libreal/Makefile.am b/src/libreal/Makefile.am index 72dac45a1..4c46db78c 100644 --- a/src/libreal/Makefile.am +++ b/src/libreal/Makefile.am @@ -1,15 +1,13 @@ include $(top_srcdir)/misc/Makefile.common -libdir = $(XINE_PLUGINDIR) +xineplug_LTLIBRARIES = xineplug_decode_real.la xineplug_decode_real_audio.la -lib_LTLIBRARIES = xineplug_decode_real.la xineplug_decode_real_audio.la - -xineplug_decode_real_la_SOURCES = xine_decoder.c +xineplug_decode_real_la_SOURCES = xine_decoder.c real_common.c xineplug_decode_real_la_LIBADD = $(XINE_LIB) $(DYNAMIC_LD_LIBS) xineplug_decode_real_la_CFLAGS = $(VISIBILITY_FLAG) -xineplug_decode_real_la_LDFLAGS = -avoid-version -module +xineplug_decode_real_la_LDFLAGS = $(xineplug_ldflags) -xineplug_decode_real_audio_la_SOURCES = audio_decoder.c +xineplug_decode_real_audio_la_SOURCES = audio_decoder.c real_common.c xineplug_decode_real_audio_la_LIBADD = $(XINE_LIB) $(DYNAMIC_LD_LIBS) xineplug_decode_real_audio_la_CFLAGS = $(VISIBILITY_FLAG) -xineplug_decode_real_audio_la_LDFLAGS = -avoid-version -module +xineplug_decode_real_audio_la_LDFLAGS = $(xineplug_ldflags) diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index d60e8f8e1..ebffce31d 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.52 2007/03/16 19:31:57 dgp85 Exp $ + * $Id: audio_decoder.c,v 1.53 2007/03/16 20:02:33 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -102,22 +102,6 @@ typedef struct { void *extras; } ra_init_t; -void *__builtin_new(unsigned long size); -void __builtin_delete (void *foo); -void *__builtin_vec_new(unsigned long size); -void __builtin_vec_delete(void *mem); -void __pure_virtual(void); - - -void *__builtin_new(unsigned long size) { - return malloc(size); -} - -void __builtin_delete (void *foo) { - /* printf ("libareal: __builtin_delete called\n"); */ - free (foo); -} - static int load_syms_linux (realdec_decoder_t *this, char *codec_name, const char *alt_codec_name) { @@ -626,24 +610,6 @@ static void dispose_class (audio_decoder_class_t *this) { free (this); } -/* - * some fake functions to make real codecs happy - */ -void *__builtin_vec_new(unsigned long size) EXPORTED; -void __builtin_vec_delete(void *mem) EXPORTED; -void __pure_virtual(void) EXPORTED; - -void *__builtin_vec_new(unsigned long size) { - return malloc(size); -} -void __builtin_vec_delete(void *mem) { - free(mem); -} -void __pure_virtual(void) { - lprintf("libareal: FATAL: __pure_virtual() called!\n"); - /* exit(1); */ -} - /* * real audio codec loader */ diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c new file mode 100644 index 000000000..9df428106 --- /dev/null +++ b/src/libreal/real_common.c @@ -0,0 +1,57 @@ +/* + * 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.1 2007/03/16 20:02:33 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 "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 diff --git a/src/libreal/real_common.h b/src/libreal/real_common.h new file mode 100644 index 000000000..83336a809 --- /dev/null +++ b/src/libreal/real_common.h @@ -0,0 +1,47 @@ +/* + * 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.h,v 1.1 2007/03/16 20:02:33 dgp85 Exp $ + * + * Common function for the thin layer to use Real binary-only codecs in xine + */ + +#ifndef __REAL_COMMON_H__ +#define __REAL_COMMON_H__ + +#include "xine_internal.h" + +/* + * some fake functions to make real codecs happy + * These are, on current date (20070316) needed only for Alpha + * codecs. + * As they are far from being proper replacements, define them only there + * until new codecs are available there too. + */ +#ifdef __alpha__ + +void *__builtin_new(size_t size); +void __builtin_delete (void *foo); +void *__builtin_vec_new(size_t size) EXPORTED; +void __builtin_vec_delete(void *mem) EXPORTED; +void __pure_virtual(void) EXPORTED; + +#endif + +#endif diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index 28770636b..779f577e2 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.86 2007/03/16 19:31:57 dgp85 Exp $ + * $Id: xine_decoder.c,v 1.87 2007/03/16 20:02:33 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -522,23 +522,7 @@ static void dispose_class (video_decoder_class_t *this) { free (this); } -/* - * some fake functions to make real codecs happy - */ -void *__builtin_vec_new(uint32_t size) EXPORTED; -void __builtin_vec_delete(void *mem) EXPORTED; -void __pure_virtual(void) EXPORTED; -void *__builtin_vec_new(uint32_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); */ -} static void *init_class (xine_t *xine, void *data) { -- cgit v1.2.3 From 066220e7145c94fd6751c0631374ef3b34dc983c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 20:21:40 +0000 Subject: For FreeBSD support, alias the __environ and stderr symbols, unavailable there, to their equivalent symbols. This could be improved by adding a configure-time check for this. CVS patchset: 8681 CVS date: 2007/03/16 20:21:40 --- src/libreal/real_common.c | 7 ++++++- src/libreal/real_common.h | 12 +++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index 9df428106..c4afcbeea 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.1 2007/03/16 20:02:33 dgp85 Exp $ + * $Id: real_common.c,v 1.2 2007/03/16 20:21:40 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -55,3 +55,8 @@ void __pure_virtual(void) { } #endif + +#ifdef __FreeBSD__ /* TODO: alias them if at all possible */ +void ___brk_addr(void) { exit(0); } +void __ctype_b(void) { exit(0); } +#endif diff --git a/src/libreal/real_common.h b/src/libreal/real_common.h index 83336a809..2d4c1dee0 100644 --- a/src/libreal/real_common.h +++ b/src/libreal/real_common.h @@ -17,7 +17,7 @@ * 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.h,v 1.1 2007/03/16 20:02:33 dgp85 Exp $ + * $Id: real_common.h,v 1.2 2007/03/16 20:21:40 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -44,4 +44,14 @@ void __pure_virtual(void) EXPORTED; #endif +#ifdef __FreeBSD__ + #ifdef SUPPORT_ATTRIBUTE_ALIAS +char **__environ __attribute__((weak, alias("environ"))); +FILE *stderr __attribute__((weak, alias("__stderrp"))); + + #endif +void ___brk_addr(void) EXPORTED; +void __ctype_b(void) EXPORTED; +#endif + #endif -- cgit v1.2.3 From f39902b9cf71081aa1701e9c7a857f1215982199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 20:45:21 +0000 Subject: Move autodetection of Real codecs path to the common code unit, and rewrite to a) minimise the number of stat() calls happening; b) support FreeBSD paths. CVS patchset: 8682 CVS date: 2007/03/16 20:45:21 --- src/libreal/audio_decoder.c | 47 ++++----------------------------------------- src/libreal/real_common.c | 47 ++++++++++++++++++++++++++++++++++++++++++++- src/libreal/real_common.h | 4 +++- src/libreal/xine_decoder.c | 47 ++++----------------------------------------- 4 files changed, 57 insertions(+), 88 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index ebffce31d..a6a0c551f 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.53 2007/03/16 20:02:33 dgp85 Exp $ + * $Id: audio_decoder.c,v 1.54 2007/03/16 20:45:21 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -45,6 +45,8 @@ #include "buffer.h" #include "xineutils.h" +#include "real_common.h" + typedef struct { audio_decoder_class_t decoder_class; @@ -618,9 +620,6 @@ static void *init_class (xine_t *xine, void *data) { real_class_t *this; config_values_t *config = xine->config; - char *real_codec_path; - char *default_real_codec_path = ""; - struct stat s; this = (real_class_t *) xine_xmalloc (sizeof (real_class_t)); @@ -629,45 +628,7 @@ static void *init_class (xine_t *xine, void *data) { this->decoder_class.get_description = get_description; this->decoder_class.dispose = dispose_class; - /* try some auto-detection */ - - if (!stat ("/usr/local/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/local/RealPlayer8/Codecs"; - if (!stat ("/usr/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/RealPlayer8/Codecs"; - if (!stat ("/usr/lib/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib/RealPlayer8/Codecs"; - if (!stat ("/opt/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/opt/RealPlayer8/Codecs"; - if (!stat ("/usr/lib/RealPlayer9/users/Real/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib/RealPlayer9/users/Real/Codecs"; - if (!stat ("/usr/lib/RealPlayer10/codecs/drvc.so", &s)) - default_real_codec_path = "/usr/lib/RealPlayer10/codecs"; - if (!stat ("/usr/lib64/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib64/RealPlayer8/Codecs"; - if (!stat ("/usr/lib64/RealPlayer9/users/Real/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib64/RealPlayer9/users/Real/Codecs"; - if (!stat ("/usr/lib64/RealPlayer10/codecs/drvc.so", &s)) - default_real_codec_path = "/usr/lib64/RealPlayer10/codecs"; - if (!stat ("/usr/lib/codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib/codecs"; - if (!stat ("/usr/lib/win32/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib/win32"; - - real_codec_path = config->register_filename (config, "decoder.external.real_codecs_path", - default_real_codec_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, this); - - lprintf ("real codec path : %s\n", real_codec_path); + _x_real_codecs_init(xine); return this; } diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index c4afcbeea..f1f47fb6b 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.2 2007/03/16 20:21:40 dgp85 Exp $ + * $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 */ @@ -28,6 +28,8 @@ #define LOG */ +#include + #include "real_common.h" #ifdef __alpha__ @@ -60,3 +62,46 @@ void __pure_virtual(void) { 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); +} diff --git a/src/libreal/real_common.h b/src/libreal/real_common.h index 2d4c1dee0..717c80168 100644 --- a/src/libreal/real_common.h +++ b/src/libreal/real_common.h @@ -17,7 +17,7 @@ * 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.h,v 1.2 2007/03/16 20:21:40 dgp85 Exp $ + * $Id: real_common.h,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 */ @@ -54,4 +54,6 @@ void ___brk_addr(void) EXPORTED; void __ctype_b(void) EXPORTED; #endif +void _x_real_codecs_init(xine_t *const xine); + #endif diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index 779f577e2..9cf49a2db 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.87 2007/03/16 20:02:33 dgp85 Exp $ + * $Id: xine_decoder.c,v 1.88 2007/03/16 20:45:21 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -44,6 +44,8 @@ #include "buffer.h" #include "xineutils.h" +#include "real_common.h" + typedef struct { video_decoder_class_t decoder_class; @@ -529,9 +531,6 @@ static void *init_class (xine_t *xine, void *data) { real_class_t *this; config_values_t *config = xine->config; - char *real_codec_path; - char *default_real_codec_path = ""; - struct stat s; this = (real_class_t *) xine_xmalloc (sizeof (real_class_t)); @@ -540,45 +539,7 @@ static void *init_class (xine_t *xine, void *data) { this->decoder_class.get_description = get_description; this->decoder_class.dispose = dispose_class; - /* try some auto-detection */ - - if (!stat ("/usr/local/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/local/RealPlayer8/Codecs"; - if (!stat ("/usr/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/RealPlayer8/Codecs"; - if (!stat ("/usr/lib/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib/RealPlayer8/Codecs"; - if (!stat ("/opt/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/opt/RealPlayer8/Codecs"; - if (!stat ("/usr/lib/RealPlayer9/users/Real/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib/RealPlayer9/users/Real/Codecs"; - if (!stat ("/usr/lib/RealPlayer10/codecs/drvc.so", &s)) - default_real_codec_path = "/usr/lib/RealPlayer10/codecs"; - if (!stat ("/usr/lib64/RealPlayer8/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib64/RealPlayer8/Codecs"; - if (!stat ("/usr/lib64/RealPlayer9/users/Real/Codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib64/RealPlayer9/users/Real/Codecs"; - if (!stat ("/usr/lib64/RealPlayer10/codecs/drvc.so", &s)) - default_real_codec_path = "/usr/lib64/RealPlayer10/codecs"; - if (!stat ("/usr/lib/codecs/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib/codecs"; - if (!stat ("/usr/lib/win32/drv3.so.6.0", &s)) - default_real_codec_path = "/usr/lib/win32"; - - real_codec_path = config->register_filename (config, "decoder.external.real_codecs_path", - default_real_codec_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, this); - - lprintf ("real codec path : %s\n", real_codec_path); + _x_real_codecs_init(); return this; } -- cgit v1.2.3 From 92e7af754617240646c35482f62a34603e6c50e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 21:37:58 +0000 Subject: Move the wrapper to open the real codecs in the common unit, and assume that the alternative name is always the same with .6.0 at the end. Prefer the full name to the reduced one. CVS patchset: 8683 CVS date: 2007/03/16 21:37:58 --- src/libreal/audio_decoder.c | 41 +++++++++++++---------------------------- src/libreal/real_common.c | 37 ++++++++++++++++++++++++++++++++++++- src/libreal/real_common.h | 4 +++- src/libreal/xine_decoder.c | 37 +++++++++++-------------------------- 4 files changed, 63 insertions(+), 56 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index a6a0c551f..b2e000a3a 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.54 2007/03/16 20:45:21 dgp85 Exp $ + * $Id: audio_decoder.c,v 1.55 2007/03/16 21:37:58 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -104,29 +104,14 @@ typedef struct { void *extras; } ra_init_t; -static int load_syms_linux (realdec_decoder_t *this, char *codec_name, - const char *alt_codec_name) { +static int load_syms_linux (realdec_decoder_t *this, const char *codec_name) { + cfg_entry_t* entry = + this->stream->xine->config->lookup_entry(this->stream->xine->config, + "decoder.external.real_codecs_path"); - cfg_entry_t* entry = this->stream->xine->config->lookup_entry( - this->stream->xine->config, "decoder.external.real_codecs_path"); - char path[1024]; - struct stat sb; - - snprintf (path, sizeof(path), "%s/%s", entry->str_value, codec_name); - if (stat(path, &sb)) - snprintf (path, sizeof(path), "%s/%s", entry->str_value, alt_codec_name); - - lprintf ("(audio) opening shared obj '%s'\n", path); - - this->ra_handle = dlopen (path, RTLD_LAZY); - - if (!this->ra_handle) { - xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "libareal: error: %s\n", dlerror()); - _x_message(this->stream, XINE_MSG_LIBRARY_LOAD_ERROR, - codec_name, NULL); + if ( (this->ra_handle = _x_real_codec_open(this->stream, entry->str_value, codec_name)) == NULL ) return 0; - } - + this->raCloseCodec = dlsym (this->ra_handle, "RACloseCodec"); this->raDecode = dlsym (this->ra_handle, "RADecode"); this->raFlush = dlsym (this->ra_handle, "RAFlush"); @@ -142,7 +127,7 @@ static int load_syms_linux (realdec_decoder_t *this, char *codec_name, !this->raGetFlavorProperty || !this->raOpenCodec2 || !this->raSetFlavor || /*!raSetDLLAccessPath ||*/ !this->raInitDecoder){ xprintf (this->stream->xine, XINE_VERBOSITY_LOG, - _("libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n"), path); + _("libareal: (audio) Cannot resolve symbols - incompatible dll: %s\n"), codec_name); return 0; } @@ -231,32 +216,32 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { switch (buf->type) { case BUF_AUDIO_COOK: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Cook"); - if (!load_syms_linux (this, "cook.so", "cook.so.6.0")) + if (!load_syms_linux (this, "cook.so")) return 0; break; case BUF_AUDIO_ATRK: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Atrac"); - if (!load_syms_linux (this, "atrc.so", "atrc.so.6.0")) + if (!load_syms_linux (this, "atrc.so")) return 0; this->block_align = 384; break; case BUF_AUDIO_14_4: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Real 14.4"); - if (!load_syms_linux (this, "14_4.so", "14_4.so.6.0")) + if (!load_syms_linux (this, "14_4.so")) return 0; break; case BUF_AUDIO_28_8: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Real 28.8"); - if (!load_syms_linux (this, "28_8.so", "28_8.so.6.0")) + if (!load_syms_linux (this, "28_8.so")) return 0; break; case BUF_AUDIO_SIPRO: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Sipro"); - if (!load_syms_linux (this, "sipr.so", "sipr.so.6.0")) + if (!load_syms_linux (this, "sipr.so")) return 0; /* this->block_align = 19; */ break; diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index f1f47fb6b..d2fccd28d 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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 $ + * $Id: real_common.c,v 1.4 2007/03/16 21:37:58 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -28,7 +28,11 @@ #define LOG */ +#include "config.h" + #include +#include +#include #include "real_common.h" @@ -105,3 +109,34 @@ void _x_real_codecs_init(xine_t *const xine) { lprintf ("real codecs path : %s\n", real_codec_path); } + +void *_x_real_codec_open(xine_stream_t *const stream, const char *const path, + const char *const codec_name) { + char *codecpath = NULL; + void *codecmodule = NULL; + + asprintf(&codecpath, "%s/%s.6.0", path, codec_name); + if ( (codecmodule = dlopen(codecpath, RTLD_NOW)) ) { + free(codecpath); + return codecmodule; + } + + xprintf (stream->xine, XINE_VERBOSITY_DEBUG, + LOG_MODULE ": error loading %s: %s\n", codecpath, dlerror()); + + free(codecpath); + asprintf(&codecpath, "%s/%s", path, codec_name); + if ( (codecmodule = dlopen(codecpath, RTLD_NOW)) ) { + free(codecpath); + return codecmodule; + } + + xprintf (stream->xine, XINE_VERBOSITY_DEBUG, + LOG_MODULE ": error loading %s: %s\n", codecpath, dlerror()); + + free(codecpath); + + _x_message(stream, XINE_MSG_LIBRARY_LOAD_ERROR, codec_name, NULL); + + return NULL; +} diff --git a/src/libreal/real_common.h b/src/libreal/real_common.h index 717c80168..fd27ce5cf 100644 --- a/src/libreal/real_common.h +++ b/src/libreal/real_common.h @@ -17,7 +17,7 @@ * 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.h,v 1.3 2007/03/16 20:45:21 dgp85 Exp $ + * $Id: real_common.h,v 1.4 2007/03/16 21:37:58 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -55,5 +55,7 @@ void __ctype_b(void) EXPORTED; #endif void _x_real_codecs_init(xine_t *const xine); +void *_x_real_codec_open(xine_stream_t *const stream, const char *const path, + const char *const codec_name); #endif diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index 9cf49a2db..b08222a9a 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.88 2007/03/16 20:45:21 dgp85 Exp $ + * $Id: xine_decoder.c,v 1.89 2007/03/16 21:37:58 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -109,29 +109,14 @@ void __pure_virtual(void); * real codec loader */ -static int load_syms_linux (realdec_decoder_t *this, char *codec_name, - const char *alt_codec_name) { +static int load_syms_linux (realdec_decoder_t *this, const char *codec_name) { + cfg_entry_t* entry = + this->stream->xine->config->lookup_entry(this->stream->xine->config, + "decoder.external.real_codecs_path"); - cfg_entry_t* entry = this->stream->xine->config->lookup_entry( - this->stream->xine->config, "decoder.external.real_codecs_path"); - char path[1024]; - struct stat sb; - - snprintf (path, sizeof(path), "%s/%s", entry->str_value, codec_name); - if (stat(path, &sb)) - snprintf (path, sizeof(path), "%s/%s", entry->str_value, alt_codec_name); - - lprintf ("opening shared obj '%s'\n", path); - - this->rv_handle = dlopen (path, RTLD_LAZY); - - if (!this->rv_handle) { - xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "libreal: error: %s\n", dlerror()); - _x_message(this->stream, XINE_MSG_LIBRARY_LOAD_ERROR, - codec_name, NULL); + if ( (this->rv_handle = _x_real_codec_open(this->stream, entry->str_value, codec_name)) == NULL ) return 0; - } - + this->rvyuv_custom_message = dlsym (this->rv_handle, "RV20toYUV420CustomMessage"); this->rvyuv_free = dlsym (this->rv_handle, "RV20toYUV420Free"); this->rvyuv_hive_message = dlsym (this->rv_handle, "RV20toYUV420HiveMessage"); @@ -173,17 +158,17 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { switch (buf->type) { case BUF_VIDEO_RV20: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC, "Real Video 2.0"); - if (!load_syms_linux (this, "drv2.so", "drv2.so.6.0")) + if (!load_syms_linux (this, "drv2.so")) return 0; break; case BUF_VIDEO_RV30: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC, "Real Video 3.0"); - if (!load_syms_linux (this, "drvc.so", "drv3.so.6.0")) + if (!load_syms_linux (this, "drvc.so")) return 0; break; case BUF_VIDEO_RV40: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC, "Real Video 4.0"); - if (!load_syms_linux(this, "drvc.so", "drv4.so.6.0")) + if (!load_syms_linux(this, "drvc.so")) return 0; break; default: @@ -539,7 +524,7 @@ static void *init_class (xine_t *xine, void *data) { this->decoder_class.get_description = get_description; this->decoder_class.dispose = dispose_class; - _x_real_codecs_init(); + _x_real_codecs_init(xine); return this; } -- cgit v1.2.3 From 675677d25d11feb67ae5697395abf9deaf9469ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 22:14:57 +0000 Subject: If REAL_CODEC_PATH is defined, use that as only default path, so that distributions can reduce the code used in their packages, and limit the path where to load the drivers by default. CVS patchset: 8684 CVS date: 2007/03/16 22:14:57 --- src/libreal/real_common.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/libreal') diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index d2fccd28d..01d644cb8 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.4 2007/03/16 21:37:58 dgp85 Exp $ + * $Id: real_common.c,v 1.5 2007/03/16 22:14:57 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -68,6 +68,9 @@ void __ctype_b(void) { exit(0); } #endif void _x_real_codecs_init(xine_t *const xine) { +#ifdef REAL_CODEC_PATH + const char *const default_real_codecs_path = REAL_CODEC_PATH; +#else const char *default_real_codecs_path = ""; const char *real_codecs_path = NULL; struct stat s; @@ -92,6 +95,7 @@ void _x_real_codecs_init(xine_t *const xine) { #undef try_real_path #undef try_real_subpath +#endif real_codecs_path = xine->config->register_filename (xine->config, "decoder.external.real_codecs_path", -- cgit v1.2.3 From 5c20c1161c36cc97478c5527576961013e5dc8e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 22:26:54 +0000 Subject: Don't check only for drv3.so.6.0, as that is not present for x86-64 or PowerPC Real codecs. CVS patchset: 8685 CVS date: 2007/03/16 22:26:54 --- src/libreal/real_common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index 01d644cb8..08d7aec7e 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.5 2007/03/16 22:14:57 dgp85 Exp $ + * $Id: real_common.c,v 1.6 2007/03/16 22:26:54 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -76,7 +76,7 @@ void _x_real_codecs_init(xine_t *const xine) { struct stat s; #define try_real_path(path) \ - if (!stat (path "/dvr3.so.6.0", &s)) \ + if ( !stat (path "/dvr3.so.6.0", &s) || !stat (path "/dvrc.so", &s) ) \ default_real_codecs_path = path; #define try_real_subpath(path) \ try_real_path("/usr/" path) \ -- cgit v1.2.3 From 3e10669d9230636fe5ef56f05c5b8748414ed383 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 22:28:25 +0000 Subject: real_codecs_path has always to be declared. CVS patchset: 8686 CVS date: 2007/03/16 22:28:25 --- src/libreal/real_common.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index 08d7aec7e..ea2336f95 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.6 2007/03/16 22:26:54 dgp85 Exp $ + * $Id: real_common.c,v 1.7 2007/03/16 22:28:25 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -68,11 +68,11 @@ void __ctype_b(void) { exit(0); } #endif void _x_real_codecs_init(xine_t *const xine) { -#ifdef REAL_CODEC_PATH + const char *real_codecs_path = NULL; +src/libreal/#ifdef REAL_CODEC_PATH const char *const default_real_codecs_path = REAL_CODEC_PATH; #else const char *default_real_codecs_path = ""; - const char *real_codecs_path = NULL; struct stat s; #define try_real_path(path) \ -- cgit v1.2.3 From 3173cb680cabe292d6d6512d3638484545ba4601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 22:28:48 +0000 Subject: Sigh, remove wrong paste. CVS patchset: 8687 CVS date: 2007/03/16 22:28:48 --- src/libreal/real_common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index ea2336f95..29aacbd8c 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.7 2007/03/16 22:28:25 dgp85 Exp $ + * $Id: real_common.c,v 1.8 2007/03/16 22:28:48 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -69,7 +69,7 @@ void __ctype_b(void) { exit(0); } void _x_real_codecs_init(xine_t *const xine) { const char *real_codecs_path = NULL; -src/libreal/#ifdef REAL_CODEC_PATH +#ifdef REAL_CODEC_PATH const char *const default_real_codecs_path = REAL_CODEC_PATH; #else const char *default_real_codecs_path = ""; -- cgit v1.2.3 From 9c8d1c5851fbe93e986bbf7e0fbe16c7592b58fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 22:32:13 +0000 Subject: Add proper support for disabling Real binary codecs support and add a parameter to define a codecs path during configure stage, rather than probing at runtime. CVS patchset: 8688 CVS date: 2007/03/16 22:32:13 --- src/libreal/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/libreal') diff --git a/src/libreal/Makefile.am b/src/libreal/Makefile.am index 4c46db78c..21c2e47ba 100644 --- a/src/libreal/Makefile.am +++ b/src/libreal/Makefile.am @@ -1,6 +1,8 @@ include $(top_srcdir)/misc/Makefile.common +if ENABLE_REAL xineplug_LTLIBRARIES = xineplug_decode_real.la xineplug_decode_real_audio.la +endif xineplug_decode_real_la_SOURCES = xine_decoder.c real_common.c xineplug_decode_real_la_LIBADD = $(XINE_LIB) $(DYNAMIC_LD_LIBS) -- cgit v1.2.3 From 38dcab246c58c2088c3ec2aed6e632dae6a8467d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 22:46:49 +0000 Subject: Actually, drv3.so.6.0 is still needed to be checked for the Alpha codecs, but as those are the oldest ones, check drvc.so for autodetection, only. CVS patchset: 8689 CVS date: 2007/03/16 22:46:49 --- src/libreal/real_common.c | 20 ++++++++++++++++---- src/libreal/real_common.h | 5 +++-- src/libreal/xine_decoder.c | 10 +++++----- 3 files changed, 24 insertions(+), 11 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index 29aacbd8c..28c37c33e 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.8 2007/03/16 22:28:48 dgp85 Exp $ + * $Id: real_common.c,v 1.9 2007/03/16 22:46:49 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -76,7 +76,7 @@ void _x_real_codecs_init(xine_t *const xine) { struct stat s; #define try_real_path(path) \ - if ( !stat (path "/dvr3.so.6.0", &s) || !stat (path "/dvrc.so", &s) ) \ + if (!stat (path "/dvrc.so", &s)) \ default_real_codecs_path = path; #define try_real_subpath(path) \ try_real_path("/usr/" path) \ @@ -105,7 +105,7 @@ void _x_real_codecs_init(xine_t *const xine) { _("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 " + "\"drvc.so\" 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."), @@ -115,7 +115,8 @@ void _x_real_codecs_init(xine_t *const xine) { } void *_x_real_codec_open(xine_stream_t *const stream, const char *const path, - const char *const codec_name) { + const char *const codec_name, + const char *const codec_alternate) { char *codecpath = NULL; void *codecmodule = NULL; @@ -140,6 +141,17 @@ void *_x_real_codec_open(xine_stream_t *const stream, const char *const path, free(codecpath); + if ( codec_alternate ) { + asprintf(&codecpath, "%s/%s", path, codec_alternate); + if ( (codecmodule = dlopen(codecpath, RTLD_NOW)) ) { + free(codecpath); + return codecmodule; + } + + xprintf (stream->xine, XINE_VERBOSITY_DEBUG, + LOG_MODULE ": error loading %s: %s\n", codecpath, dlerror()); + } + _x_message(stream, XINE_MSG_LIBRARY_LOAD_ERROR, codec_name, NULL); return NULL; diff --git a/src/libreal/real_common.h b/src/libreal/real_common.h index fd27ce5cf..86cf4a63f 100644 --- a/src/libreal/real_common.h +++ b/src/libreal/real_common.h @@ -17,7 +17,7 @@ * 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.h,v 1.4 2007/03/16 21:37:58 dgp85 Exp $ + * $Id: real_common.h,v 1.5 2007/03/16 22:46:49 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -56,6 +56,7 @@ void __ctype_b(void) EXPORTED; void _x_real_codecs_init(xine_t *const xine); void *_x_real_codec_open(xine_stream_t *const stream, const char *const path, - const char *const codec_name); + const char *const codec_name, + const char *const codec_alternate); #endif diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index b08222a9a..761b4bfc2 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.89 2007/03/16 21:37:58 dgp85 Exp $ + * $Id: xine_decoder.c,v 1.90 2007/03/16 22:46:49 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -109,12 +109,12 @@ void __pure_virtual(void); * real codec loader */ -static int load_syms_linux (realdec_decoder_t *this, const char *codec_name) { +static int load_syms_linux (realdec_decoder_t *this, const char *codec_name, const char *const codec_alternate = NULL) { cfg_entry_t* entry = this->stream->xine->config->lookup_entry(this->stream->xine->config, "decoder.external.real_codecs_path"); - if ( (this->rv_handle = _x_real_codec_open(this->stream, entry->str_value, codec_name)) == NULL ) + if ( (this->rv_handle = _x_real_codec_open(this->stream, entry->str_value, codec_name, codec_alternate)) == NULL ) return 0; this->rvyuv_custom_message = dlsym (this->rv_handle, "RV20toYUV420CustomMessage"); @@ -163,12 +163,12 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { break; case BUF_VIDEO_RV30: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC, "Real Video 3.0"); - if (!load_syms_linux (this, "drvc.so")) + if (!load_syms_linux (this, "drvc.so", "drv3.so.6.0")) return 0; break; case BUF_VIDEO_RV40: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC, "Real Video 4.0"); - if (!load_syms_linux(this, "drvc.so")) + if (!load_syms_linux(this, "drvc.so", "drv3.so.6.0")) return 0; break; default: -- cgit v1.2.3 From 2cfb08e9cc94e0707056edd5432a1c0ca66eeca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 22:49:16 +0000 Subject: Always pass alternate, and avoid checking for .6.0. CVS patchset: 8690 CVS date: 2007/03/16 22:49:16 --- src/libreal/real_common.c | 12 +----------- src/libreal/xine_decoder.c | 6 +++--- 2 files changed, 4 insertions(+), 14 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index 28c37c33e..dbe528ee0 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.9 2007/03/16 22:46:49 dgp85 Exp $ + * $Id: real_common.c,v 1.10 2007/03/16 22:49:16 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -120,16 +120,6 @@ void *_x_real_codec_open(xine_stream_t *const stream, const char *const path, char *codecpath = NULL; void *codecmodule = NULL; - asprintf(&codecpath, "%s/%s.6.0", path, codec_name); - if ( (codecmodule = dlopen(codecpath, RTLD_NOW)) ) { - free(codecpath); - return codecmodule; - } - - xprintf (stream->xine, XINE_VERBOSITY_DEBUG, - LOG_MODULE ": error loading %s: %s\n", codecpath, dlerror()); - - free(codecpath); asprintf(&codecpath, "%s/%s", path, codec_name); if ( (codecmodule = dlopen(codecpath, RTLD_NOW)) ) { free(codecpath); diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index 761b4bfc2..8c5ac00d2 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.90 2007/03/16 22:46:49 dgp85 Exp $ + * $Id: xine_decoder.c,v 1.91 2007/03/16 22:49:16 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -109,7 +109,7 @@ void __pure_virtual(void); * real codec loader */ -static int load_syms_linux (realdec_decoder_t *this, const char *codec_name, const char *const codec_alternate = NULL) { +static int load_syms_linux (realdec_decoder_t *this, const char *codec_name, const char *const codec_alternate) { cfg_entry_t* entry = this->stream->xine->config->lookup_entry(this->stream->xine->config, "decoder.external.real_codecs_path"); @@ -158,7 +158,7 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { switch (buf->type) { case BUF_VIDEO_RV20: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC, "Real Video 2.0"); - if (!load_syms_linux (this, "drv2.so")) + if (!load_syms_linux (this, "drv2.so", "drv2.so.6.0")) return 0; break; case BUF_VIDEO_RV30: -- cgit v1.2.3 From e73dbe5c0e49246dde3facec3872b2afe8a6878e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 22:54:06 +0000 Subject: Fix real audio codecs. CVS patchset: 8691 CVS date: 2007/03/16 22:54:06 --- src/libreal/audio_decoder.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index b2e000a3a..cea08d90d 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.55 2007/03/16 21:37:58 dgp85 Exp $ + * $Id: audio_decoder.c,v 1.56 2007/03/16 22:54:06 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -216,32 +216,32 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { switch (buf->type) { case BUF_AUDIO_COOK: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Cook"); - if (!load_syms_linux (this, "cook.so")) + if (!load_syms_linux (this, "cook.so", "cook.so.6.0")) return 0; break; case BUF_AUDIO_ATRK: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Atrac"); - if (!load_syms_linux (this, "atrc.so")) + if (!load_syms_linux (this, "atrc.so", "atrc.so.6.0")) return 0; this->block_align = 384; break; case BUF_AUDIO_14_4: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Real 14.4"); - if (!load_syms_linux (this, "14_4.so")) + if (!load_syms_linux (this, "14_4.so", "14_4.so.6.0")) return 0; break; case BUF_AUDIO_28_8: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Real 28.8"); - if (!load_syms_linux (this, "28_8.so")) + if (!load_syms_linux (this, "28_8.so", "28_8.so.6.0")) return 0; break; case BUF_AUDIO_SIPRO: _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC, "Sipro"); - if (!load_syms_linux (this, "sipr.so")) + if (!load_syms_linux (this, "sipr.so", "sipr.so.6.0")) return 0; /* this->block_align = 19; */ break; -- cgit v1.2.3 From fc6878e4c03032b9f905cf922465427c52061faa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 22:54:56 +0000 Subject: Remember to save before C-x v v CVS patchset: 8692 CVS date: 2007/03/16 22:54:56 --- src/libreal/audio_decoder.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index cea08d90d..678da6926 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.56 2007/03/16 22:54:06 dgp85 Exp $ + * $Id: audio_decoder.c,v 1.57 2007/03/16 22:54:56 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -104,12 +104,12 @@ typedef struct { void *extras; } ra_init_t; -static int load_syms_linux (realdec_decoder_t *this, const char *codec_name) { +static int load_syms_linux (realdec_decoder_t *this, const char *const codec_name, const char *const codec_alternate) { cfg_entry_t* entry = this->stream->xine->config->lookup_entry(this->stream->xine->config, "decoder.external.real_codecs_path"); - if ( (this->ra_handle = _x_real_codec_open(this->stream, entry->str_value, codec_name)) == NULL ) + if ( (this->ra_handle = _x_real_codec_open(this->stream, entry->str_value, codec_name, codec_alternate)) == NULL ) return 0; this->raCloseCodec = dlsym (this->ra_handle, "RACloseCodec"); -- cgit v1.2.3 From cdb82e61cac586c497dd77fd61696b7c2113c98d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Fri, 16 Mar 2007 23:22:13 +0000 Subject: Import the changes for 64-bit safety from MPlayer, this way Real Video and Real Audio binary codecs can be used on x86-64 and Alpha too. CVS patchset: 8693 CVS date: 2007/03/16 23:22:13 --- src/libreal/xine_decoder.c | 68 ++++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 26 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index 8c5ac00d2..8bc6e4561 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.91 2007/03/16 22:49:16 dgp85 Exp $ + * $Id: xine_decoder.c,v 1.92 2007/03/16 23:22:13 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -63,11 +63,11 @@ typedef struct realdec_decoder_s { void *rv_handle; - uint32_t (*rvyuv_custom_message)(uint32_t*, void*); + uint32_t (*rvyuv_custom_message)(void*, void*); uint32_t (*rvyuv_free)(void*); uint32_t (*rvyuv_hive_message)(uint32_t, uint32_t); uint32_t (*rvyuv_init)(void*, void*); /* initdata,context */ - uint32_t (*rvyuv_transform)(char*, char*, uint32_t*, uint32_t*,void*); + uint32_t (*rvyuv_transform)(char*, char*, void*, uint32_t*,void*); void *context; @@ -100,10 +100,27 @@ typedef struct { int32_t format; } rv_init_t; - -void *__builtin_vec_new(uint32_t size); -void __builtin_vec_delete(void *mem); -void __pure_virtual(void); +/* + * Structures for data packets. These used to be tables of unsigned ints, but + * that does not work on 64 bit platforms (e.g. Alpha). The entries that are + * pointers get truncated. Pointers on 64 bit platforms are 8 byte longs. + * So we have to use structures so the compiler will assign the proper space + * for the pointer. + */ +typedef struct cmsg_data_s { + uint32_t data1; + uint32_t data2; + uint32_t* dimensions; +} cmsg_data_t; + +typedef struct transform_in_s { + uint32_t len; + uint32_t unknown1; + uint32_t chunks; + uint32_t* extra; + uint32_t unknown2; + uint32_t timestamp; +} transform_in_t; /* * real codec loader @@ -233,20 +250,14 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { /* setup rv30 codec (codec sub-type and image dimensions): */ if ((init_data.format>=0x20200002) && (buf->type != BUF_VIDEO_RV40)) { int i, j; - uint32_t *cmsg24; - uint32_t cmsg_data[9]; + uint32_t cmsg24[(buf->size - 34 + 2) * sizeof(uint32_t)]; + cmsg_data_t cmsg_data = { 0x24, 1 + ((init_data.subformat >> 16) & 7), &cmsg24[0] }; - cmsg24 = xine_xmalloc((buf->size - 34 + 2) * sizeof(uint32_t)); - cmsg24[0] = this->width; cmsg24[1] = this->height; for(i = 2, j = 34; j < buf->size; i++, j++) cmsg24[i] = 4 * buf->content[j]; - cmsg_data[0] = 0x24; - cmsg_data[1] = 1 + ((init_data.subformat >> 16) & 7); - cmsg_data[2] = (uint32_t) cmsg24; - #ifdef LOG printf ("libreal: CustomMessage cmsg_data:\n"); xine_hexdump ((uint8_t *) cmsg_data, sizeof (cmsg_data)); @@ -254,9 +265,7 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) { xine_hexdump ((uint8_t *) cmsg24, (buf->size - 34 + 2) * sizeof(uint32_t)); #endif - this->rvyuv_custom_message (cmsg_data, this->context); - - free(cmsg24); + this->rvyuv_custom_message (&cmsg_data, this->context); } this->stream->video_out->open(this->stream->video_out, this->stream); @@ -336,16 +345,23 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) vo_frame_t *img; uint32_t transform_out[5]; - uint32_t transform_in[6]; + transform_in_t transform_in = { + this->chunk_buffer_size, + /* length of the packet (sub-packets appended) */ + 0, + /* unknown, seems to be unused */ + buf->decoder_info[2], + /* number of sub-packets - 1 */ + buf->decoder_info_ptr[2], + /* table of sub-packet offsets */ + 0, + /* unknown, seems to be unused */ + this->pts / 90 + /* timestamp (the integer value from the stream) */ + }; lprintf ("chunk table\n"); - transform_in[0] = this->chunk_buffer_size; /* length of the packet (sub-packets appended) */ - transform_in[1] = 0; /* unknown, seems to be unused */ - transform_in[2] = buf->decoder_info[2]; /* number of sub-packets - 1 */ - transform_in[3] = (uint32_t) buf->decoder_info_ptr[2]; /* table of sub-packet offsets */ - transform_in[4] = 0; /* unknown, seems to be unused */ - transform_in[5] = this->pts / 90; /* timestamp (the integer value from the stream) */ #ifdef LOG printf ("libreal: got %d chunks\n", @@ -364,7 +380,7 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) result = this->rvyuv_transform (this->chunk_buffer, this->frame_buffer, - transform_in, + &transform_in, transform_out, this->context); -- cgit v1.2.3 From 34b5a8c6d29bc613e7c00ba56c2eccdad182af27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Sat, 17 Mar 2007 00:28:41 +0000 Subject: Boost the priority of the real audio decoder over FFmpeg's, as demux_real does not provide a suitable extradata for FFmpeg. CVS patchset: 8695 CVS date: 2007/03/17 00:28:41 --- src/libreal/audio_decoder.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index 678da6926..c4447e232 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.57 2007/03/16 22:54:56 dgp85 Exp $ + * $Id: audio_decoder.c,v 1.58 2007/03/17 00:28:41 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -628,7 +628,7 @@ static uint32_t audio_types[] = { static const decoder_info_t dec_info_audio = { audio_types, /* supported types */ - 5 /* priority */ + 7 /* priority */ }; const plugin_info_t xine_plugin_info[] EXPORTED = { -- cgit v1.2.3 From 75fd3688f52f3d9574cf7204fd74c9eb9f2a639b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Sat, 17 Mar 2007 06:11:30 +0000 Subject: Instead of relying on FreeBSD being the only system not having __environ stderr ___brk_addr and __ctype_b, look for them during ./configure stage. Also check for alternatives, and check for compiler's weak aliasing support only if it's actually going to be used. CVS patchset: 8696 CVS date: 2007/03/17 06:11:30 --- src/libreal/real_common.c | 7 +++++-- src/libreal/real_common.h | 28 +++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 7 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index dbe528ee0..7110198db 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.10 2007/03/16 22:49:16 dgp85 Exp $ + * $Id: real_common.c,v 1.11 2007/03/17 06:11:30 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -62,8 +62,11 @@ void __pure_virtual(void) { #endif -#ifdef __FreeBSD__ /* TODO: alias them if at all possible */ +#ifndef HAVE____BRK_ADDR void ___brk_addr(void) { exit(0); } +#endif + +#ifndef HAVE___CTYPE_B void __ctype_b(void) { exit(0); } #endif diff --git a/src/libreal/real_common.h b/src/libreal/real_common.h index 86cf4a63f..7fcd1c4fa 100644 --- a/src/libreal/real_common.h +++ b/src/libreal/real_common.h @@ -17,7 +17,7 @@ * 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.h,v 1.5 2007/03/16 22:46:49 dgp85 Exp $ + * $Id: real_common.h,v 1.6 2007/03/17 06:11:31 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -44,13 +44,31 @@ void __pure_virtual(void) EXPORTED; #endif -#ifdef __FreeBSD__ - #ifdef SUPPORT_ATTRIBUTE_ALIAS -char **__environ __attribute__((weak, alias("environ"))); +#ifndef HAVE___ENVIRON +# ifdef HAVE__ENVIRON + char **__environ __attribute__((weak, alias("_environ"))); +# elif defined(HAVE_ENVIRON) + char **__environ __attribute__((weak, alias("environ"))); +# else + char **fake__environ = { NULL }; + char **__environ __attribute__((weak, alias("fake__environ"))); +# endif +#endif + +#ifndef HAVE_STDERR +# ifdef HAVE___STDERRP +# undef stderr FILE *stderr __attribute__((weak, alias("__stderrp"))); +# else +# error Your stderr alias is not supported, please report to xine developers. +# endif +#endif - #endif +#ifndef HAVE____BRK_ADDR void ___brk_addr(void) EXPORTED; +#endif + +#ifndef HAVE___CTYPE_B void __ctype_b(void) EXPORTED; #endif -- cgit v1.2.3 From 7c80aed9bc8e76f02de7afabccaf7dc535181e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Sat, 17 Mar 2007 15:45:37 +0000 Subject: Merge the two real binary codecs plugins in a single plugin that handles both audio and video. CVS patchset: 8703 CVS date: 2007/03/17 15:45:37 --- src/libreal/Makefile.am | 9 +++------ src/libreal/audio_decoder.c | 16 +++------------- src/libreal/real_common.c | 9 ++++++++- src/libreal/real_common.h | 8 +++++++- src/libreal/xine_decoder.c | 15 +++------------ 5 files changed, 24 insertions(+), 33 deletions(-) (limited to 'src/libreal') diff --git a/src/libreal/Makefile.am b/src/libreal/Makefile.am index 21c2e47ba..114a473a7 100644 --- a/src/libreal/Makefile.am +++ b/src/libreal/Makefile.am @@ -1,15 +1,12 @@ include $(top_srcdir)/misc/Makefile.common if ENABLE_REAL -xineplug_LTLIBRARIES = xineplug_decode_real.la xineplug_decode_real_audio.la +xineplug_LTLIBRARIES = xineplug_decode_real.la endif -xineplug_decode_real_la_SOURCES = xine_decoder.c real_common.c +xineplug_decode_real_la_SOURCES = xine_decoder.c real_common.c audio_decoder.c xineplug_decode_real_la_LIBADD = $(XINE_LIB) $(DYNAMIC_LD_LIBS) xineplug_decode_real_la_CFLAGS = $(VISIBILITY_FLAG) xineplug_decode_real_la_LDFLAGS = $(xineplug_ldflags) -xineplug_decode_real_audio_la_SOURCES = audio_decoder.c real_common.c -xineplug_decode_real_audio_la_LIBADD = $(XINE_LIB) $(DYNAMIC_LD_LIBS) -xineplug_decode_real_audio_la_CFLAGS = $(VISIBILITY_FLAG) -xineplug_decode_real_audio_la_LDFLAGS = $(xineplug_ldflags) +noinst_HEADERS = real_common.h diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c index c4447e232..d1bb94230 100644 --- a/src/libreal/audio_decoder.c +++ b/src/libreal/audio_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_decoder.c,v 1.58 2007/03/17 00:28:41 dgp85 Exp $ + * $Id: audio_decoder.c,v 1.59 2007/03/17 15:45:41 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -597,11 +597,7 @@ static void dispose_class (audio_decoder_class_t *this) { free (this); } -/* - * real audio codec loader - */ - -static void *init_class (xine_t *xine, void *data) { +void *init_realadec (xine_t *xine, void *data) { real_class_t *this; config_values_t *config = xine->config; @@ -626,13 +622,7 @@ static uint32_t audio_types[] = { BUF_AUDIO_COOK, BUF_AUDIO_ATRK, /* BUF_AUDIO_14_4, BUF_AUDIO_28_8, */ BUF_AUDIO_SIPRO, 0 }; -static const decoder_info_t dec_info_audio = { +const decoder_info_t dec_info_realaudio = { audio_types, /* supported types */ 7 /* priority */ }; - -const plugin_info_t xine_plugin_info[] EXPORTED = { - /* type, API, "name", version, special_info, init_function */ - { PLUGIN_AUDIO_DECODER | PLUGIN_MUST_PRELOAD, 15, "realadec", XINE_VERSION_CODE, &dec_info_audio, init_class }, - { PLUGIN_NONE, 0, "", 0, NULL, NULL } -}; diff --git a/src/libreal/real_common.c b/src/libreal/real_common.c index 7110198db..925a5cc71 100644 --- a/src/libreal/real_common.c +++ b/src/libreal/real_common.c @@ -17,7 +17,7 @@ * 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.11 2007/03/17 06:11:30 dgp85 Exp $ + * $Id: real_common.c,v 1.12 2007/03/17 15:45:41 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -149,3 +149,10 @@ void *_x_real_codec_open(xine_stream_t *const stream, const char *const path, return NULL; } + +const plugin_info_t xine_plugin_info[] EXPORTED = { + /* type, API, "name", version, special_info, init_function */ + { PLUGIN_VIDEO_DECODER | PLUGIN_MUST_PRELOAD, 18, "realvdec", XINE_VERSION_CODE, &dec_info_realvideo, init_realvdec }, + { PLUGIN_AUDIO_DECODER | PLUGIN_MUST_PRELOAD, 15, "realadec", XINE_VERSION_CODE, &dec_info_realaudio, init_realadec }, + { PLUGIN_NONE, 0, "", 0, NULL, NULL } +}; diff --git a/src/libreal/real_common.h b/src/libreal/real_common.h index 7fcd1c4fa..232bf2a4d 100644 --- a/src/libreal/real_common.h +++ b/src/libreal/real_common.h @@ -17,7 +17,7 @@ * 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.h,v 1.6 2007/03/17 06:11:31 dgp85 Exp $ + * $Id: real_common.h,v 1.7 2007/03/17 15:45:41 dgp85 Exp $ * * Common function for the thin layer to use Real binary-only codecs in xine */ @@ -77,4 +77,10 @@ void *_x_real_codec_open(xine_stream_t *const stream, const char *const path, const char *const codec_name, const char *const codec_alternate); +const decoder_info_t dec_info_realvideo; +void *init_realvdec (xine_t *xine, void *data); + +const decoder_info_t dec_info_realaudio; +void *init_realadec (xine_t *xine, void *data); + #endif diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index 8bc6e4561..ea1fc8c54 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.92 2007/03/16 23:22:13 dgp85 Exp $ + * $Id: xine_decoder.c,v 1.93 2007/03/17 15:45:41 dgp85 Exp $ * * thin layer to use real binary-only codecs in xine * @@ -525,10 +525,7 @@ static void dispose_class (video_decoder_class_t *this) { free (this); } - - - -static void *init_class (xine_t *xine, void *data) { +void *init_realvdec (xine_t *xine, void *data) { real_class_t *this; config_values_t *config = xine->config; @@ -554,13 +551,7 @@ static uint32_t supported_types[] = { BUF_VIDEO_RV20, BUF_VIDEO_RV40, 0 }; -static const decoder_info_t dec_info_real = { +const decoder_info_t dec_info_realvideo = { supported_types, /* supported types */ 7 /* priority */ }; - -const plugin_info_t xine_plugin_info[] EXPORTED = { - /* type, API, "name", version, special_info, init_function */ - { PLUGIN_VIDEO_DECODER | PLUGIN_MUST_PRELOAD, 18, "real", XINE_VERSION_CODE, &dec_info_real, init_class }, - { PLUGIN_NONE, 0, "", 0, NULL, NULL } -}; -- cgit v1.2.3 From 6ff7b823ea37c8baa725fad659b06b23e1d92d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Mon, 2 Apr 2007 20:44:04 +0200 Subject: Migrate all .cvsignore files to .hgignore. --HG-- rename : .cvsignore => .hgignore rename : doc/.cvsignore => doc/.hgignore rename : doc/faq/.cvsignore => doc/faq/.hgignore rename : doc/hackersguide/.cvsignore => doc/hackersguide/.hgignore rename : doc/man/.cvsignore => doc/man/.hgignore rename : doc/man/en/.cvsignore => doc/man/en/.hgignore rename : include/.cvsignore => include/.hgignore rename : intl/.cvsignore => intl/.hgignore rename : lib/.cvsignore => lib/.hgignore rename : m4/.cvsignore => m4/.hgignore rename : misc/.cvsignore => misc/.hgignore rename : misc/fonts/.cvsignore => misc/fonts/.hgignore rename : po/.cvsignore => po/.hgignore rename : src/.cvsignore => src/.hgignore rename : src/audio_out/.cvsignore => src/audio_out/.hgignore rename : src/combined/.cvsignore => src/combined/.hgignore rename : src/demuxers/.cvsignore => src/demuxers/.hgignore rename : src/dxr3/.cvsignore => src/dxr3/.hgignore rename : src/input/.cvsignore => src/input/.hgignore rename : src/input/dvb/.cvsignore => src/input/dvb/.hgignore rename : src/input/libdvdnav/.cvsignore => src/input/libdvdnav/.hgignore rename : src/input/libreal/.cvsignore => src/input/libreal/.hgignore rename : src/input/librtsp/.cvsignore => src/input/librtsp/.hgignore rename : src/input/vcd/.cvsignore => src/input/vcd/.hgignore rename : src/input/vcd/libcdio/.cvsignore => src/input/vcd/libcdio/.hgignore rename : src/input/vcd/libcdio/MSWindows/.cvsignore => src/input/vcd/libcdio/MSWindows/.hgignore rename : src/input/vcd/libcdio/cdio/.cvsignore => src/input/vcd/libcdio/cdio/.hgignore rename : src/input/vcd/libcdio/image/.cvsignore => src/input/vcd/libcdio/image/.hgignore rename : src/input/vcd/libvcd/.cvsignore => src/input/vcd/libvcd/.hgignore rename : src/input/vcd/libvcd/libvcd/.cvsignore => src/input/vcd/libvcd/libvcd/.hgignore rename : src/liba52/.cvsignore => src/liba52/.hgignore rename : src/libdts/.cvsignore => src/libdts/.hgignore rename : src/libfaad/.cvsignore => src/libfaad/.hgignore rename : src/libfaad/codebook/.cvsignore => src/libfaad/codebook/.hgignore rename : src/libffmpeg/.cvsignore => src/libffmpeg/.hgignore rename : src/libffmpeg/libavcodec/.cvsignore => src/libffmpeg/libavcodec/.hgignore rename : src/libffmpeg/libavcodec/alpha/.cvsignore => src/libffmpeg/libavcodec/alpha/.hgignore rename : src/libffmpeg/libavcodec/armv4l/.cvsignore => src/libffmpeg/libavcodec/armv4l/.hgignore rename : src/libffmpeg/libavcodec/i386/.cvsignore => src/libffmpeg/libavcodec/i386/.hgignore rename : src/libffmpeg/libavcodec/libpostproc/.cvsignore => src/libffmpeg/libavcodec/libpostproc/.hgignore rename : src/libffmpeg/libavcodec/mlib/.cvsignore => src/libffmpeg/libavcodec/mlib/.hgignore rename : src/libffmpeg/libavcodec/ppc/.cvsignore => src/libffmpeg/libavcodec/ppc/.hgignore rename : src/libffmpeg/libavcodec/sparc/.cvsignore => src/libffmpeg/libavcodec/sparc/.hgignore rename : src/libffmpeg/libavutil/.cvsignore => src/libffmpeg/libavutil/.hgignore rename : src/libflac/.cvsignore => src/libflac/.hgignore rename : src/liblpcm/.cvsignore => src/liblpcm/.hgignore rename : src/libmad/.cvsignore => src/libmad/.hgignore rename : src/libmpeg2/.cvsignore => src/libmpeg2/.hgignore rename : src/libmpeg2new/.cvsignore => src/libmpeg2new/.hgignore rename : src/libmpeg2new/include/.cvsignore => src/libmpeg2new/include/.hgignore rename : src/libmpeg2new/libmpeg2/.cvsignore => src/libmpeg2new/libmpeg2/.hgignore rename : src/libmusepack/.cvsignore => src/libmusepack/.hgignore rename : src/libmusepack/musepack/.cvsignore => src/libmusepack/musepack/.hgignore rename : src/libreal/.cvsignore => src/libreal/.hgignore rename : src/libspeex/.cvsignore => src/libspeex/.hgignore rename : src/libspucc/.cvsignore => src/libspucc/.hgignore rename : src/libspucmml/.cvsignore => src/libspucmml/.hgignore rename : src/libspudec/.cvsignore => src/libspudec/.hgignore rename : src/libspudvb/.cvsignore => src/libspudvb/.hgignore rename : src/libsputext/.cvsignore => src/libsputext/.hgignore rename : src/libtheora/.cvsignore => src/libtheora/.hgignore rename : src/libvorbis/.cvsignore => src/libvorbis/.hgignore rename : src/libw32dll/.cvsignore => src/libw32dll/.hgignore rename : src/libw32dll/DirectShow/.cvsignore => src/libw32dll/DirectShow/.hgignore rename : src/libw32dll/dmo/.cvsignore => src/libw32dll/dmo/.hgignore rename : src/libw32dll/qtx/.cvsignore => src/libw32dll/qtx/.hgignore rename : src/libw32dll/qtx/qtxsdk/.cvsignore => src/libw32dll/qtx/qtxsdk/.hgignore rename : src/libw32dll/wine/.cvsignore => src/libw32dll/wine/.hgignore rename : src/libxineadec/.cvsignore => src/libxineadec/.hgignore rename : src/libxineadec/gsm610/.cvsignore => src/libxineadec/gsm610/.hgignore rename : src/libxineadec/nosefart/.cvsignore => src/libxineadec/nosefart/.hgignore rename : src/libxinevdec/.cvsignore => src/libxinevdec/.hgignore rename : src/post/.cvsignore => src/post/.hgignore rename : src/post/audio/.cvsignore => src/post/audio/.hgignore rename : src/post/deinterlace/.cvsignore => src/post/deinterlace/.hgignore rename : src/post/deinterlace/plugins/.cvsignore => src/post/deinterlace/plugins/.hgignore rename : src/post/goom/.cvsignore => src/post/goom/.hgignore rename : src/post/mosaico/.cvsignore => src/post/mosaico/.hgignore rename : src/post/planar/.cvsignore => src/post/planar/.hgignore rename : src/post/visualizations/.cvsignore => src/post/visualizations/.hgignore rename : src/video_out/.cvsignore => src/video_out/.hgignore rename : src/video_out/libdha/.cvsignore => src/video_out/libdha/.hgignore rename : src/video_out/libdha/bin/.cvsignore => src/video_out/libdha/bin/.hgignore rename : src/video_out/libdha/kernelhelper/.cvsignore => src/video_out/libdha/kernelhelper/.hgignore rename : src/video_out/libdha/oth/.cvsignore => src/video_out/libdha/oth/.hgignore rename : src/video_out/libdha/sysdep/.cvsignore => src/video_out/libdha/sysdep/.hgignore rename : src/video_out/macosx/.cvsignore => src/video_out/macosx/.hgignore rename : src/video_out/vidix/.cvsignore => src/video_out/vidix/.hgignore rename : src/video_out/vidix/drivers/.cvsignore => src/video_out/vidix/drivers/.hgignore rename : src/xine-engine/.cvsignore => src/xine-engine/.hgignore rename : src/xine-utils/.cvsignore => src/xine-utils/.hgignore rename : win32/.cvsignore => win32/.hgignore rename : win32/include/.cvsignore => win32/include/.hgignore --- src/libreal/.cvsignore | 6 ------ src/libreal/.hgignore | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 src/libreal/.cvsignore create mode 100644 src/libreal/.hgignore (limited to 'src/libreal') diff --git a/src/libreal/.cvsignore b/src/libreal/.cvsignore deleted file mode 100644 index 7d926a554..000000000 --- a/src/libreal/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile -Makefile.in -.libs -.deps -*.lo -*.la diff --git a/src/libreal/.hgignore b/src/libreal/.hgignore new file mode 100644 index 000000000..7d926a554 --- /dev/null +++ b/src/libreal/.hgignore @@ -0,0 +1,6 @@ +Makefile +Makefile.in +.libs +.deps +*.lo +*.la -- cgit v1.2.3