aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorspiff_ <spiff_@svn>2009-12-13 17:46:19 +0000
committerspiff_ <spiff_@svn>2009-12-13 17:46:19 +0000
commitb81f2fbb338df17e26ec31a009ff593642785945 (patch)
treec4d74a2bd7b3cb8b81ba664456f80e971d4e2e76
parent2fd7a6ed6b9b2f79e3d9ec279b9c3da80eaf63ae (diff)
added: build libbdnav
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@25648 568bbfeb-2a22-0410-94d2-cc84cf5bfa90
-rw-r--r--Makefile.in3
-rwxr-xr-xbootstrap1
-rw-r--r--configure.in4
-rw-r--r--xbmc/cores/dvdplayer/Codecs/libbdnav/Makefile.am2
-rw-r--r--xbmc/cores/dvdplayer/Codecs/libbdnav/configure.ac2
-rw-r--r--xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir.h4
-rw-r--r--xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir_xbmc.cpp64
-rw-r--r--xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file.h4
-rw-r--r--xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file_xbmc.cpp72
-rw-r--r--xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/Makefile.am4
-rw-r--r--xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/navigation.c2
-rw-r--r--xbmc/cores/dvdplayer/DVDInputStreams/Makefile2
12 files changed, 155 insertions, 9 deletions
diff --git a/Makefile.in b/Makefile.in
index 17c9f04145..1eb92ac1f4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -246,6 +246,8 @@ xbmc/visualizations/visualization.a: force
$(MAKE) -C xbmc/visualizations
xbmc/osx/osx.a: force
$(MAKE) -C xbmc/osx
+xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/.libs/libbdnav.a: force
+ $(MAKE) -C xbmc/cores/dvdplayer/Codecs/libbdnav
exports:
$(MAKE) xbmc/cores/DllLoader/exports/exports.a
@@ -355,6 +357,7 @@ OBJSXBMC= \
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxers.a \
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreams.a \
xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitles.a \
+ xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/.libs/libbdnav.a \
xbmc/cores/AudioRenderers/audiorenderers.a \
xbmc/cores/ExternalPlayer/ExternalPlayer.a \
xbmc/FileSystem/filesystem.a \
diff --git a/bootstrap b/bootstrap
index 9b2c2f642a..9205697928 100755
--- a/bootstrap
+++ b/bootstrap
@@ -2,6 +2,7 @@
autoreconf -vif
autoreconf -vif xbmc/lib/libass
+autoreconf --force --install xbmc/cores/dvdplayer/Codecs/libbdnav
echo "Please (re)run configure..."
diff --git a/configure.in b/configure.in
index b43fd658f3..0167e294ec 100644
--- a/configure.in
+++ b/configure.in
@@ -1431,6 +1431,10 @@ XB_CONFIG_MODULE([xbmc/screensavers/rsxs-0.9/], [
fi
], [0])
+XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libbdnav/], [
+ ./configure
+], [0])
+
AC_OUTPUT
final_message="$final_message\n prefix:\t$prefix\n$dashes"
diff --git a/xbmc/cores/dvdplayer/Codecs/libbdnav/Makefile.am b/xbmc/cores/dvdplayer/Codecs/libbdnav/Makefile.am
index 4540ee8fce..82c0cb2cf5 100644
--- a/xbmc/cores/dvdplayer/Codecs/libbdnav/Makefile.am
+++ b/xbmc/cores/dvdplayer/Codecs/libbdnav/Makefile.am
@@ -1,5 +1,5 @@
-SUBDIRS=src
+SUBDIRS=src/libbdnav
EXTRA_DIST=README.txt
diff --git a/xbmc/cores/dvdplayer/Codecs/libbdnav/configure.ac b/xbmc/cores/dvdplayer/Codecs/libbdnav/configure.ac
index c73653fcee..463ccc68ad 100644
--- a/xbmc/cores/dvdplayer/Codecs/libbdnav/configure.ac
+++ b/xbmc/cores/dvdplayer/Codecs/libbdnav/configure.ac
@@ -209,6 +209,6 @@ AC_CHECK_HEADERS([openssl/ecdsa.h], [], [
AM_CONFIG_HEADER(config.h)
# List all Makefiles here.
-AC_CONFIG_FILES([Makefile src/Makefile src/libaacs/Makefile src/libbdnav/Makefile src/libbdplus/Makefile src/examples/Makefile])
+AC_CONFIG_FILES([Makefile src/libbdnav/Makefile])
AC_OUTPUT
diff --git a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir.h b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir.h
index 423db71493..f1388bb71d 100644
--- a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir.h
+++ b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir.h
@@ -4,7 +4,7 @@
#include <stdint.h>
-#define dir_open dir_open_posix
+#define dir_open dir_open_xbmc
#define dir_close(X) X->close(X)
#define dir_read(X,Y) X->read(X,Y)
@@ -23,6 +23,6 @@ struct dir
int (*read)(DIR_H *dir, DIRENT *entry);
};
-extern DIR_H *dir_open_posix(const char* dirname);
+extern DIR_H *dir_open_xbmc(const char* dirname);
#endif /* DIR_H_ */
diff --git a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir_xbmc.cpp b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir_xbmc.cpp
new file mode 100644
index 0000000000..a064df654f
--- /dev/null
+++ b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir_xbmc.cpp
@@ -0,0 +1,64 @@
+
+#define _LINUX
+
+#include "FileSystem/Directory.h"
+#include "FileItem.h"
+#include "Util.h"
+
+using namespace DIRECTORY;
+
+extern "C"
+{
+#include "dir.h"
+
+struct xbmcdir {
+ CFileItemList* items;
+ int position;
+};
+
+DIR_H *dir_open_xbmc(const char* dirname);
+void dir_close_xbmc(DIR_H *dir);
+int dir_read_xbmc(DIR_H *dir, DIRENT *ent);
+
+void dir_close_xbmc(DIR_H *dir)
+{
+ if (dir) {
+ delete (CFileItemList*)(((xbmcdir*)dir->internal)->items);
+ free(dir->internal);
+ }
+
+ free(dir);
+}
+
+int dir_read_xbmc(DIR_H *dir, DIRENT *entry)
+{
+ xbmcdir* pDir = (xbmcdir*)dir->internal;
+
+ if (pDir->position == pDir->items->Size()) {
+ return 1;
+ }
+ strncpy(entry->d_name, CUtil::GetFileName(pDir->items->Get(pDir->position++)->m_strPath).c_str(), 256);
+ return 0;
+}
+
+DIR_H *dir_open_xbmc(const char* dirname)
+{
+ DIR_H *dir = (DIR_H*)malloc(sizeof(DIR_H));
+
+ dir->close = dir_close_xbmc;
+ dir->read = dir_read_xbmc;
+
+ dir->internal = malloc(sizeof(xbmcdir));
+ ((xbmcdir*)dir->internal)->items = new CFileItemList;
+ ((xbmcdir*)dir->internal)->position = 0;
+
+ if (CDirectory::GetDirectory(dirname,*((xbmcdir*)dir->internal)->items))
+ return dir;
+
+ delete ((xbmcdir*)dir->internal)->items;
+ free(dir->internal);
+ free(dir);
+
+ return NULL;
+}
+}
diff --git a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file.h b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file.h
index 834e3533b5..0c54d5c30f 100644
--- a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file.h
+++ b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file.h
@@ -6,7 +6,7 @@
#include <unistd.h>
//#ifdef __LINUX__
-#define file_open file_open_linux
+#define file_open file_open_xbmc
#define _FILE_OFFSET_BITS 64
#define __USE_LARGEFILE64
#define DIR_SEP "/"
@@ -31,6 +31,6 @@ struct file
int (*write)(FILE_H *file, uint8_t *buf, int64_t size);
};
-extern FILE_H *file_open_linux(const char* filename, const char *mode);
+extern FILE_H *file_open_xbmc(const char* filename, const char *mode);
#endif /* FILE_H_ */
diff --git a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file_xbmc.cpp b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file_xbmc.cpp
new file mode 100644
index 0000000000..7dea1057ca
--- /dev/null
+++ b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file_xbmc.cpp
@@ -0,0 +1,72 @@
+#include "FileSystem/File.h"
+
+extern "C"
+{
+#include "file.h"
+
+using namespace XFILE;
+
+FILE_H *file_open_xbmc(const char* filename, const char *mode);
+void file_close_xbmc(FILE_H *file);
+int64_t file_seek_xbmc(FILE_H *file, int64_t offset, int32_t origin);
+int64_t file_tell_xbmc(FILE_H *file);
+int file_eof_xbmc(FILE_H *file);
+int file_read_xbmc(FILE_H *file, uint8_t *buf, int64_t size);
+int file_write_xbmc(FILE_H *file, uint8_t *buf, int64_t size);
+
+void file_close_xbmc(FILE_H *file)
+{
+ if (file) {
+ delete (CFile*)file->internal;
+ free(file);
+ }
+}
+
+int64_t file_seek_xbmc(FILE_H *file, int64_t offset, int32_t origin)
+{
+ return ((CFile*)file->internal)->Seek(offset, origin);
+}
+
+int64_t file_tell_xbmc(FILE_H *file)
+{
+ return ((CFile *)file->internal)->GetPosition();
+}
+
+int file_eof_xbmc(FILE_H *file)
+{
+ CFile* pFile = (CFile*)file->internal;
+ return pFile->GetPosition()==pFile->GetLength();
+}
+
+int file_read_xbmc(FILE_H *file, uint8_t *buf, int64_t size)
+{
+ return ((CFile*)file->internal)->Read(buf,size);
+}
+
+int file_write_xbmc(FILE_H *file, uint8_t *buf, int64_t size)
+{
+ return ((CFile*)file->internal)->Write(buf,size);
+}
+
+FILE_H *file_open_xbmc(const char* filename, const char *mode)
+{
+ FILE_H *file = (FILE_H*)malloc(sizeof(FILE_H));
+
+ file->close = file_close_xbmc;
+ file->seek = file_seek_xbmc;
+ file->read = file_read_xbmc;
+ file->write = file_write_xbmc;
+ file->tell = file_tell_xbmc;
+ file->eof = file_eof_xbmc;
+
+ file->internal = (void*)new CFile;
+ if (file->internal && ((CFile*)file->internal)->Open(filename)) {
+ return file;
+ }
+
+ delete (CFile*)file->internal;
+ free(file);
+
+ return NULL;
+}
+}
diff --git a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/Makefile.am b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/Makefile.am
index ba0a4d20be..ea5c6e5f6b 100644
--- a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/Makefile.am
+++ b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
-AM_CPPFLAGS = -I $(top_builddir)/src
+AM_CPPFLAGS = -I $(top_builddir)/src -I../../../../../../ -I../../../../../../linux -I../../../../../../../guilib
noinst_LTLIBRARIES = libbdnav.la
@@ -9,6 +9,8 @@ libbdnav_la_SOURCES = \
../util/strutl.c \
../file/file_posix.c \
../file/dir_posix.c \
+ ../file/file_xbmc.cpp \
+ ../file/dir_xbmc.cpp \
navigation.c \
navigation.h \
mpls_parse.c \
diff --git a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/navigation.c b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/navigation.c
index 2d993060b3..c6419fa41f 100644
--- a/xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/navigation.c
+++ b/xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/navigation.c
@@ -74,7 +74,7 @@ char* nav_find_main_title(char *root)
int res;
char longest[11];
- DEBUG(DBG_NAV, "Root: %s:\n", root);
+ //DEBUG(DBG_NAV, "Root: %s:\n", root);
path = str_printf("%s" DIR_SEP "BDMV" DIR_SEP "PLAYLIST", root);
if (path == NULL) {
fprintf(stderr, "Failed to find playlist path: %s\n", path);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/Makefile b/xbmc/cores/dvdplayer/DVDInputStreams/Makefile
index 38c03178fc..96f43c0cf5 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/Makefile
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/Makefile
@@ -1,4 +1,4 @@
-INCLUDES=-I. -I.. -I../.. -I../../../ -I../../../linux -I../../../../guilib -I../../../lib/libRTMP -I../../../lib
+INCLUDES=-I. -I.. -I../.. -I../../../ -I../../../linux -I../../../../guilib -I../../../lib/libRTMP -I../../../lib -I../Codecs/libbdnav/src/
CXXFLAGS += -D__STDC_FORMAT_MACROS \
-DENABLE_DVDINPUTSTREAM_STACK \