diff options
author | spiff_ <spiff_@svn> | 2009-12-13 17:46:19 +0000 |
---|---|---|
committer | spiff_ <spiff_@svn> | 2009-12-13 17:46:19 +0000 |
commit | b81f2fbb338df17e26ec31a009ff593642785945 (patch) | |
tree | c4d74a2bd7b3cb8b81ba664456f80e971d4e2e76 | |
parent | 2fd7a6ed6b9b2f79e3d9ec279b9c3da80eaf63ae (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.in | 3 | ||||
-rwxr-xr-x | bootstrap | 1 | ||||
-rw-r--r-- | configure.in | 4 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/Codecs/libbdnav/Makefile.am | 2 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/Codecs/libbdnav/configure.ac | 2 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir.h | 4 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/dir_xbmc.cpp | 64 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file.h | 4 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/Codecs/libbdnav/src/file/file_xbmc.cpp | 72 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/Makefile.am | 4 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/navigation.c | 2 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/DVDInputStreams/Makefile | 2 |
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 \ @@ -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 \ |