mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
libbluray: update to libbluray-1.0.1
This commit is contained in:
parent
ccc6dacc78
commit
1570f7d35b
@ -17,8 +17,8 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libbluray"
|
||||
PKG_VERSION="0.9.3"
|
||||
PKG_SHA256="a6366614ec45484b51fe94fcd1975b3b8716f90f038a33b24d59978de3863ce0"
|
||||
PKG_VERSION="1.0.1"
|
||||
PKG_SHA256="0f9f9a1db2f48cafc70ed2596ff3594b597e2027408f5f2be6191c245d67853a"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://www.videolan.org/developers/libbluray.html"
|
||||
@ -43,8 +43,7 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-werror \
|
||||
--disable-extra-warnings \
|
||||
--disable-optimizations \
|
||||
--disable-examples \
|
||||
--disable-bdjava \
|
||||
--enable-udf \
|
||||
--disable-bdjava-jar \
|
||||
--disable-doxygen-doc \
|
||||
--disable-doxygen-dot \
|
||||
--disable-doxygen-man \
|
||||
|
@ -1,8 +1,8 @@
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 3a54bfc..035553b 100644
|
||||
index 33813b07..d7b909c4 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -161,6 +161,15 @@ noinst_HEADERS = \
|
||||
@@ -210,6 +210,15 @@ noinst_HEADERS = \
|
||||
jni/win32/jni_md.h \
|
||||
jni/darwin/jni_md.h
|
||||
|
||||
@ -18,19 +18,20 @@ index 3a54bfc..035553b 100644
|
||||
pkginclude_HEADERS = \
|
||||
src/file/filesystem.h \
|
||||
src/libbluray/bluray.h \
|
||||
@@ -168,6 +177,9 @@ pkginclude_HEADERS = \
|
||||
@@ -217,6 +226,10 @@ pkginclude_HEADERS = \
|
||||
src/libbluray/keys.h \
|
||||
src/libbluray/player_settings.h \
|
||||
src/libbluray/bdnav/clpi_data.h \
|
||||
+ src/libbluray/bdnav/clpi_parse.h \
|
||||
+ src/libbluray/bdnav/mpls_parse.h \
|
||||
+ src/libbluray/bdnav/mpls_data.h \
|
||||
+ src/libbluray/bdnav/uo_mask_table.h \
|
||||
src/libbluray/bdnav/meta_data.h \
|
||||
src/libbluray/decoders/overlay.h \
|
||||
src/util/log_control.h
|
||||
diff --git a/config.h b/config.h
|
||||
new file mode 100644
|
||||
index 0000000..6764704
|
||||
index 00000000..bd39268a
|
||||
--- /dev/null
|
||||
+++ b/config.h
|
||||
@@ -0,0 +1,157 @@
|
||||
@ -152,7 +153,7 @@ index 0000000..6764704
|
||||
+#define PACKAGE_NAME "libbluray"
|
||||
+
|
||||
+/* Define to the full name and version of this package. */
|
||||
+#define PACKAGE_STRING "libbluray 0.9.2"
|
||||
+#define PACKAGE_STRING "libbluray 1.0.0"
|
||||
+
|
||||
+/* Define to the one symbol short name of this package. */
|
||||
+#define PACKAGE_TARNAME "libbluray"
|
||||
@ -161,7 +162,7 @@ index 0000000..6764704
|
||||
+#define PACKAGE_URL ""
|
||||
+
|
||||
+/* Define to the version of this package. */
|
||||
+#define PACKAGE_VERSION "0.9.2"
|
||||
+#define PACKAGE_VERSION "1.0.0"
|
||||
+
|
||||
+/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
+#define RETSIGTYPE void
|
||||
@ -173,7 +174,7 @@ index 0000000..6764704
|
||||
+/* #undef USING_BDJAVA */
|
||||
+
|
||||
+/* Version number of package */
|
||||
+#define VERSION "0.9.2"
|
||||
+#define VERSION "1.0.0"
|
||||
+
|
||||
+/* Enable large inode numbers on Mac OS X 10.5. */
|
||||
+#ifndef _DARWIN_USE_64_BIT_INODE
|
||||
@ -193,7 +194,7 @@ index 0000000..6764704
|
||||
+#define _WIN32_WINNT 0x0502
|
||||
diff --git a/includes/inttypes.h b/includes/inttypes.h
|
||||
new file mode 100644
|
||||
index 0000000..ead903f
|
||||
index 00000000..ead903f7
|
||||
--- /dev/null
|
||||
+++ b/includes/inttypes.h
|
||||
@@ -0,0 +1,305 @@
|
||||
@ -504,7 +505,7 @@ index 0000000..ead903f
|
||||
+#endif // _MSC_INTTYPES_H_ ]
|
||||
diff --git a/libbluray.def b/libbluray.def
|
||||
new file mode 100644
|
||||
index 0000000..d4c93cb
|
||||
index 00000000..d4c93cb9
|
||||
--- /dev/null
|
||||
+++ b/libbluray.def
|
||||
@@ -0,0 +1,63 @@
|
||||
@ -573,10 +574,10 @@ index 0000000..d4c93cb
|
||||
+ bd_get_debug_mask
|
||||
diff --git a/libbluray.vcxproj b/libbluray.vcxproj
|
||||
new file mode 100644
|
||||
index 0000000..c778955
|
||||
index 00000000..393cd1a0
|
||||
--- /dev/null
|
||||
+++ b/libbluray.vcxproj
|
||||
@@ -0,0 +1,231 @@
|
||||
@@ -0,0 +1,236 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
+ <ItemGroup Label="ProjectConfigurations">
|
||||
@ -653,6 +654,7 @@ index 0000000..c778955
|
||||
+ <ClInclude Include="src\util\array.h" />
|
||||
+ <ClInclude Include="src\util\attributes.h" />
|
||||
+ <ClInclude Include="src\util\bits.h" />
|
||||
+ <ClInclude Include="src\util\event_queue.h" />
|
||||
+ <ClInclude Include="src\util\logging.h" />
|
||||
+ <ClInclude Include="src\util\log_control.h" />
|
||||
+ <ClInclude Include="src\util\macro.h" />
|
||||
@ -698,6 +700,7 @@ index 0000000..c778955
|
||||
+ <ClCompile Include="src\libbluray\register.c" />
|
||||
+ <ClCompile Include="src\util\array.c" />
|
||||
+ <ClCompile Include="src\util\bits.c" />
|
||||
+ <ClCompile Include="src\util\event_queue.c" />
|
||||
+ <ClCompile Include="src\util\logging.c" />
|
||||
+ <ClCompile Include="src\util\mutex.c" />
|
||||
+ <ClCompile Include="src\util\refcnt.c" />
|
||||
@ -722,6 +725,9 @@ index 0000000..c778955
|
||||
+ <PropertyGroup Label="Configuration" Condition="'$(VisualStudioVersion)' == '14.0'">
|
||||
+ <PlatformToolset>v140_xp</PlatformToolset>
|
||||
+ </PropertyGroup>
|
||||
+ <PropertyGroup Label="Configuration" Condition="'$(VisualStudioVersion)' == '15.0'">
|
||||
+ <PlatformToolset>v141_xp</PlatformToolset>
|
||||
+ </PropertyGroup>
|
||||
+ <PropertyGroup Condition="'$(Configuration)'=='Debug' Or '$(Configuration)'=='DebugRelease'" Label="Configuration">
|
||||
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
+ <UseDebugLibraries>true</UseDebugLibraries>
|
||||
@ -811,10 +817,10 @@ index 0000000..c778955
|
||||
\ No newline at end of file
|
||||
diff --git a/libbluray.vcxproj.filters b/libbluray.vcxproj.filters
|
||||
new file mode 100644
|
||||
index 0000000..57ff16c
|
||||
index 00000000..4352ef05
|
||||
--- /dev/null
|
||||
+++ b/libbluray.vcxproj.filters
|
||||
@@ -0,0 +1,353 @@
|
||||
@@ -0,0 +1,359 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
+ <ItemGroup>
|
||||
@ -1036,6 +1042,9 @@ index 0000000..57ff16c
|
||||
+ <ClInclude Include="src\file\mount.h">
|
||||
+ <Filter>Header Files\file</Filter>
|
||||
+ </ClInclude>
|
||||
+ <ClInclude Include="src\util\event_queue.h">
|
||||
+ <Filter>Header Files\util</Filter>
|
||||
+ </ClInclude>
|
||||
+ </ItemGroup>
|
||||
+ <ItemGroup>
|
||||
+ <ClCompile Include="src\util\logging.c">
|
||||
@ -1161,6 +1170,9 @@ index 0000000..57ff16c
|
||||
+ <ClCompile Include="src\file\mount.c">
|
||||
+ <Filter>Source Files\file</Filter>
|
||||
+ </ClCompile>
|
||||
+ <ClCompile Include="src\util\event_queue.c">
|
||||
+ <Filter>Source Files\util</Filter>
|
||||
+ </ClCompile>
|
||||
+ </ItemGroup>
|
||||
+ <ItemGroup>
|
||||
+ <None Include="libbluray.def">
|
||||
@ -1170,22 +1182,29 @@ index 0000000..57ff16c
|
||||
+</Project>
|
||||
\ No newline at end of file
|
||||
diff --git a/src/file/dir_win32.c b/src/file/dir_win32.c
|
||||
index 2690658..f42114d 100644
|
||||
index 5cbc3c86..40308966 100644
|
||||
--- a/src/file/dir_win32.c
|
||||
+++ b/src/file/dir_win32.c
|
||||
@@ -86,8 +86,8 @@ static BD_DIR_H *_dir_open_win32(const char* dirname)
|
||||
|
||||
dir->internal = priv;
|
||||
|
||||
@@ -76,7 +76,7 @@ static dir_data_t *_open_impl(const char *dirname)
|
||||
{
|
||||
dir_data_t *priv;
|
||||
char *filespec;
|
||||
- wchar_t wfilespec[MAX_PATH];
|
||||
- if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, filespec, -1, wfilespec, MAX_PATH))
|
||||
+ wchar_t wfilespec[4096 + 1] = {0};
|
||||
+ if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, filespec, -1, wfilespec, 4096))
|
||||
priv->handle = _wfindfirst(wfilespec, &priv->info);
|
||||
else
|
||||
priv->handle = -1;
|
||||
+ wchar_t wfilespec[4096 + 1];
|
||||
int result;
|
||||
|
||||
filespec = str_printf("%s" DIR_SEP "*", dirname);
|
||||
@@ -84,7 +84,7 @@ static dir_data_t *_open_impl(const char *dirname)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- result = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, filespec, -1, wfilespec, MAX_PATH);
|
||||
+ result = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, filespec, -1, wfilespec, 4096);
|
||||
X_FREE(filespec);
|
||||
if (!result) {
|
||||
return NULL;
|
||||
diff --git a/src/file/dirs_win32.c b/src/file/dirs_win32.c
|
||||
index e165fea..3d07251 100644
|
||||
index e165feac..3d07251a 100644
|
||||
--- a/src/file/dirs_win32.c
|
||||
+++ b/src/file/dirs_win32.c
|
||||
@@ -36,7 +36,7 @@
|
||||
@ -1216,7 +1235,7 @@ index e165fea..3d07251 100644
|
||||
if (!dir) {
|
||||
// first call
|
||||
diff --git a/src/file/dl_win32.c b/src/file/dl_win32.c
|
||||
index e4492e1..7f6ae73 100644
|
||||
index 6155ad6a..3a09fa1c 100644
|
||||
--- a/src/file/dl_win32.c
|
||||
+++ b/src/file/dl_win32.c
|
||||
@@ -57,7 +57,7 @@ void *dl_dlopen(const char *path, const char *version)
|
||||
@ -1227,8 +1246,19 @@ index e4492e1..7f6ae73 100644
|
||||
+ wchar_t wname[MAX_PATH+1] = {0};
|
||||
char *name;
|
||||
void *result;
|
||||
int iresult;
|
||||
@@ -81,8 +81,8 @@ void *dl_dlopen(const char *path, const char *version)
|
||||
if (GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),
|
||||
"SetDefaultDllDirectories") != NULL)
|
||||
#endif
|
||||
- flags = LOAD_LIBRARY_SEARCH_APPLICATION_DIR |
|
||||
- LOAD_LIBRARY_SEARCH_SYSTEM32;
|
||||
+ flags = 0xA00; /*LOAD_LIBRARY_SEARCH_APPLICATION_DIR |
|
||||
+ LOAD_LIBRARY_SEARCH_SYSTEM32;*/
|
||||
|
||||
@@ -109,7 +109,7 @@ const char *dl_get_path(void)
|
||||
result = LoadLibraryExW(wname, NULL, flags);
|
||||
|
||||
@@ -125,7 +125,7 @@ const char *dl_get_path(void)
|
||||
if (!initialized) {
|
||||
initialized = 1;
|
||||
|
||||
@ -1238,7 +1268,7 @@ index e4492e1..7f6ae73 100644
|
||||
wchar_t wpath[MAX_PATH];
|
||||
|
||||
diff --git a/src/file/file_win32.c b/src/file/file_win32.c
|
||||
index d9845fb..b4fb7ad 100644
|
||||
index 11aaf820..f5518636 100644
|
||||
--- a/src/file/file_win32.c
|
||||
+++ b/src/file/file_win32.c
|
||||
@@ -107,9 +107,9 @@ static BD_FILE_H *_file_open(const char* filename, const char *mode)
|
||||
@ -1264,7 +1294,7 @@ index d9845fb..b4fb7ad 100644
|
||||
if (!file) {
|
||||
BD_DEBUG(DBG_FILE | DBG_CRIT, "Error opening file %s (out of memory)\n", filename);
|
||||
diff --git a/src/libbluray/bdnav/clpi_parse.c b/src/libbluray/bdnav/clpi_parse.c
|
||||
index 394347e..39bbcef 100644
|
||||
index 839e10c3..5fa490dc 100644
|
||||
--- a/src/libbluray/bdnav/clpi_parse.c
|
||||
+++ b/src/libbluray/bdnav/clpi_parse.c
|
||||
@@ -39,6 +39,7 @@
|
||||
@ -1275,7 +1305,7 @@ index 394347e..39bbcef 100644
|
||||
|
||||
static void
|
||||
_human_readable_sig(char *sig, uint32_t s1, uint32_t s2)
|
||||
@@ -129,7 +130,8 @@ _parse_header(BITSTREAM *bits, CLPI_CL *cl)
|
||||
@@ -134,7 +135,8 @@ _parse_header(BITSTREAM *bits, CLPI_CL *cl)
|
||||
cl->type_indicator2 = bs_read(bits, 32);
|
||||
if (cl->type_indicator != CLPI_SIG1 ||
|
||||
(cl->type_indicator2 != CLPI_SIG2A &&
|
||||
@ -1285,11 +1315,50 @@ index 394347e..39bbcef 100644
|
||||
|
||||
char sig[9];
|
||||
char expect[9];
|
||||
diff --git a/src/libbluray/bdnav/index_parse.c b/src/libbluray/bdnav/index_parse.c
|
||||
index 6a0f5a01..56b3d949 100644
|
||||
--- a/src/libbluray/bdnav/index_parse.c
|
||||
+++ b/src/libbluray/bdnav/index_parse.c
|
||||
@@ -104,12 +104,11 @@ static int _parse_index(BITSTREAM *bs, INDX_ROOT *index)
|
||||
|
||||
index->num_titles = bs_read(bs, 16);
|
||||
if (!index->num_titles) {
|
||||
- BD_DEBUG(DBG_CRIT, "empty index\n");
|
||||
- return 0;
|
||||
+ BD_DEBUG(DBG_NAV, "empty index\n");
|
||||
}
|
||||
|
||||
index->titles = calloc(index->num_titles, sizeof(INDX_TITLE));
|
||||
- if (!index->titles) {
|
||||
+ if (index->num_titles && !index->titles) {
|
||||
BD_DEBUG(DBG_CRIT, "out of memory\n");
|
||||
return 0;
|
||||
}
|
||||
diff --git a/src/libbluray/bdnav/mpls_data.h b/src/libbluray/bdnav/mpls_data.h
|
||||
index f148d513..b6a8cdd0 100644
|
||||
--- a/src/libbluray/bdnav/mpls_data.h
|
||||
+++ b/src/libbluray/bdnav/mpls_data.h
|
||||
@@ -47,6 +47,7 @@ typedef struct
|
||||
uint8_t sv_num_pip_pg_ref;
|
||||
uint8_t *sv_secondary_audio_ref;
|
||||
uint8_t *sv_pip_pg_ref;
|
||||
+ uint8_t ss_offset_sequence_id;
|
||||
} MPLS_STREAM;
|
||||
|
||||
typedef struct
|
||||
@@ -107,6 +108,7 @@ typedef struct
|
||||
uint8_t random_access_flag;
|
||||
uint8_t audio_mix_flag;
|
||||
uint8_t lossless_bypass_flag;
|
||||
+ uint8_t mvc_base_view_r_flag;
|
||||
} MPLS_AI;
|
||||
|
||||
typedef struct
|
||||
diff --git a/src/libbluray/bdnav/mpls_parse.c b/src/libbluray/bdnav/mpls_parse.c
|
||||
index e196118..87b240a 100644
|
||||
index 82b61854..92ea99a7 100644
|
||||
--- a/src/libbluray/bdnav/mpls_parse.c
|
||||
+++ b/src/libbluray/bdnav/mpls_parse.c
|
||||
@@ -39,6 +39,7 @@
|
||||
@@ -40,6 +40,7 @@
|
||||
#define MPLS_SIG1 ('M' << 24 | 'P' << 16 | 'L' << 8 | 'S')
|
||||
#define MPLS_SIG2A ('0' << 24 | '2' << 16 | '0' << 8 | '0')
|
||||
#define MPLS_SIG2B ('0' << 24 | '1' << 16 | '0' << 8 | '0')
|
||||
@ -1297,18 +1366,19 @@ index e196118..87b240a 100644
|
||||
|
||||
static void
|
||||
_human_readable_sig(char *sig, uint32_t s1, uint32_t s2)
|
||||
@@ -137,8 +138,9 @@ _parse_appinfo(BITSTREAM *bits, MPLS_AI *ai)
|
||||
@@ -92,9 +93,10 @@ _parse_appinfo(BITSTREAM *bits, MPLS_AI *ai)
|
||||
ai->random_access_flag = bs_read(bits, 1);
|
||||
ai->audio_mix_flag = bs_read(bits, 1);
|
||||
ai->lossless_bypass_flag = bs_read(bits, 1);
|
||||
+ ai->mvc_base_view_r_flag = bs_read(bits, 1);
|
||||
#if 0
|
||||
// Reserved
|
||||
- bs_skip(bits, 13);
|
||||
+ bs_skip(bits, 12);
|
||||
bs_seek_byte(bits, pos + len);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -155,7 +157,8 @@ _parse_header(BITSTREAM *bits, MPLS_PL *pl)
|
||||
@@ -112,7 +114,8 @@ _parse_header(BITSTREAM *bits, MPLS_PL *pl)
|
||||
pl->type_indicator2 = bs_read(bits, 32);
|
||||
if (pl->type_indicator != MPLS_SIG1 ||
|
||||
(pl->type_indicator2 != MPLS_SIG2A &&
|
||||
@ -1318,15 +1388,15 @@ index e196118..87b240a 100644
|
||||
|
||||
char sig[9];
|
||||
char expect[9];
|
||||
@@ -259,6 +262,7 @@ _parse_stream(BITSTREAM *bits, MPLS_STREAM *s)
|
||||
@@ -218,6 +221,7 @@ _parse_stream(BITSTREAM *bits, MPLS_STREAM *s)
|
||||
break;
|
||||
};
|
||||
s->lang[3] = '\0';
|
||||
+ s->ss_offset_sequence_id = 0xFF;
|
||||
|
||||
bs_seek_byte(bits, pos + len);
|
||||
return 1;
|
||||
@@ -882,6 +886,99 @@ _parse_subpath_extension(BITSTREAM *bits, MPLS_PL *pl)
|
||||
if (bs_seek_byte(bits, pos + len) < 0) {
|
||||
return 0;
|
||||
@@ -911,6 +915,99 @@ _parse_subpath_extension(BITSTREAM *bits, MPLS_PL *pl)
|
||||
}
|
||||
|
||||
static int
|
||||
@ -1426,7 +1496,7 @@ index e196118..87b240a 100644
|
||||
_parse_mpls_extension(BITSTREAM *bits, int id1, int id2, void *handle)
|
||||
{
|
||||
MPLS_PL *pl = (MPLS_PL*)handle;
|
||||
@@ -895,7 +992,7 @@ _parse_mpls_extension(BITSTREAM *bits, int id1, int id2, void *handle)
|
||||
@@ -924,7 +1021,7 @@ _parse_mpls_extension(BITSTREAM *bits, int id1, int id2, void *handle)
|
||||
|
||||
if (id1 == 2) {
|
||||
if (id2 == 1) {
|
||||
@ -1435,31 +1505,11 @@ index e196118..87b240a 100644
|
||||
}
|
||||
if (id2 == 2) {
|
||||
// SubPath entries extension
|
||||
diff --git a/src/libbluray/bdnav/mpls_parse.h b/src/libbluray/bdnav/mpls_parse.h
|
||||
index 94bfa67..c1b2c31 100644
|
||||
--- a/src/libbluray/bdnav/mpls_parse.h
|
||||
+++ b/src/libbluray/bdnav/mpls_parse.h
|
||||
@@ -49,6 +49,7 @@ typedef struct
|
||||
uint8_t sv_num_pip_pg_ref;
|
||||
uint8_t *sv_secondary_audio_ref;
|
||||
uint8_t *sv_pip_pg_ref;
|
||||
+ uint8_t ss_offset_sequence_id;
|
||||
} MPLS_STREAM;
|
||||
|
||||
typedef struct
|
||||
@@ -109,6 +110,7 @@ typedef struct
|
||||
uint8_t random_access_flag;
|
||||
uint8_t audio_mix_flag;
|
||||
uint8_t lossless_bypass_flag;
|
||||
+ uint8_t mvc_base_view_r_flag;
|
||||
} MPLS_AI;
|
||||
|
||||
typedef struct
|
||||
diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c
|
||||
index 0e60b68..f633d7a 100644
|
||||
index ce4854d8..94565278 100644
|
||||
--- a/src/libbluray/bluray.c
|
||||
+++ b/src/libbluray/bluray.c
|
||||
@@ -1626,6 +1626,25 @@ int64_t bd_seek_time(BLURAY *bd, uint64_t tick)
|
||||
@@ -1651,6 +1651,25 @@ int64_t bd_seek_time(BLURAY *bd, uint64_t tick)
|
||||
return bd->s_pos;
|
||||
}
|
||||
|
||||
@ -1485,26 +1535,26 @@ index 0e60b68..f633d7a 100644
|
||||
uint64_t bd_tell_time(BLURAY *bd)
|
||||
{
|
||||
uint32_t clip_pkt = 0, out_pkt = 0, out_time = 0;
|
||||
@@ -2602,6 +2621,7 @@ static BLURAY_TITLE_INFO* _fill_title_info(NAV_TITLE* title, uint32_t title_idx,
|
||||
BLURAY_CLIP_INFO *ci = &title_info->clips[ii];
|
||||
NAV_CLIP *nc = &title->clip_list.clip[ii];
|
||||
@@ -2648,6 +2667,7 @@ static BLURAY_TITLE_INFO* _fill_title_info(NAV_TITLE* title, uint32_t title_idx,
|
||||
NAV_CLIP *nc = &title->clip_list.clip[ii];
|
||||
|
||||
+ ci->idx = nc->clip_id;
|
||||
ci->pkt_count = nc->end_pkt - nc->start_pkt;
|
||||
ci->start_time = (uint64_t)nc->title_time * 2;
|
||||
ci->in_time = (uint64_t)pi->in_time * 2;
|
||||
@@ -2628,6 +2648,8 @@ static BLURAY_TITLE_INFO* _fill_title_info(NAV_TITLE* title, uint32_t title_idx,
|
||||
_copy_streams(nc, ci->sec_audio_streams, pi->stn.secondary_audio, ci->sec_audio_stream_count);
|
||||
memcpy(ci->clip_id, pi->clip->clip_id, sizeof(ci->clip_id));
|
||||
+ ci->idx = nc->clip_id;
|
||||
ci->pkt_count = nc->end_pkt - nc->start_pkt;
|
||||
ci->start_time = (uint64_t)nc->title_time * 2;
|
||||
ci->in_time = (uint64_t)pi->in_time * 2;
|
||||
@@ -2672,6 +2692,8 @@ static BLURAY_TITLE_INFO* _fill_title_info(NAV_TITLE* title, uint32_t title_idx,
|
||||
}
|
||||
}
|
||||
|
||||
+ title_info->mvc_base_view_r_flag = title->pl->app_info.mvc_base_view_r_flag;
|
||||
+
|
||||
return title_info;
|
||||
}
|
||||
|
||||
@@ -3746,3 +3768,28 @@ void bd_free_bdjo(struct bdjo_data *obj)
|
||||
(void)obj;
|
||||
#endif
|
||||
error:
|
||||
@@ -3825,3 +3847,28 @@ void bd_free_bdjo(struct bdjo_data *obj)
|
||||
{
|
||||
bdjo_free(&obj);
|
||||
}
|
||||
+
|
||||
+int bd_get_clip_infos(BLURAY *bd, unsigned clip, uint64_t *clip_start_time, uint64_t *stream_start_time, uint64_t *pos, uint64_t *duration)
|
||||
@ -1532,7 +1582,7 @@ index 0e60b68..f633d7a 100644
|
||||
+ return NULL;
|
||||
+}
|
||||
diff --git a/src/libbluray/bluray.h b/src/libbluray/bluray.h
|
||||
index cbf16fc..97dc1a3 100644
|
||||
index b7b52e55..744a6926 100644
|
||||
--- a/src/libbluray/bluray.h
|
||||
+++ b/src/libbluray/bluray.h
|
||||
@@ -32,6 +32,7 @@ extern "C" {
|
||||
@ -1543,7 +1593,7 @@ index cbf16fc..97dc1a3 100644
|
||||
|
||||
#define TITLES_ALL 0 /**< all titles. */
|
||||
#define TITLES_FILTER_DUP_TITLE 0x01 /**< remove duplicate titles. */
|
||||
@@ -225,6 +226,7 @@ typedef struct bd_stream_info {
|
||||
@@ -222,6 +223,7 @@ typedef struct bd_stream_info {
|
||||
} BLURAY_STREAM_INFO;
|
||||
|
||||
typedef struct bd_clip {
|
||||
@ -1551,16 +1601,16 @@ index cbf16fc..97dc1a3 100644
|
||||
uint32_t pkt_count;
|
||||
uint8_t still_mode;
|
||||
uint16_t still_time; /* seconds */
|
||||
@@ -275,6 +277,8 @@ typedef struct bd_title_info {
|
||||
|
||||
uint32_t mark_count;
|
||||
@@ -272,6 +274,8 @@ typedef struct bd_title_info {
|
||||
BLURAY_CLIP_INFO *clips;
|
||||
BLURAY_TITLE_CHAPTER *chapters;
|
||||
BLURAY_TITLE_MARK *marks;
|
||||
+
|
||||
+ uint8_t mvc_base_view_r_flag;
|
||||
} BLURAY_TITLE_INFO;
|
||||
|
||||
/*
|
||||
@@ -483,6 +487,16 @@ uint32_t bd_get_current_title(BLURAY *bd);
|
||||
@@ -480,6 +484,16 @@ uint32_t bd_get_current_title(BLURAY *bd);
|
||||
|
||||
/**
|
||||
*
|
||||
@ -1577,7 +1627,7 @@ index cbf16fc..97dc1a3 100644
|
||||
* Read from currently selected title file, decrypt if possible
|
||||
*
|
||||
* @param bd BLURAY object
|
||||
@@ -1007,7 +1021,6 @@ int bd_mouse_select(BLURAY *bd, int64_t pts, uint16_t x, uint16_t y);
|
||||
@@ -1033,7 +1047,6 @@ int bd_mouse_select(BLURAY *bd, int64_t pts, uint16_t x, uint16_t y);
|
||||
|
||||
/* access to internal information */
|
||||
|
||||
@ -1585,7 +1635,7 @@ index cbf16fc..97dc1a3 100644
|
||||
/**
|
||||
*
|
||||
* Get copy of clip information for requested playitem.
|
||||
@@ -1060,6 +1073,28 @@ void bd_stop_bdj(BLURAY *bd); // shutdown BD-J and clean up resources
|
||||
@@ -1086,6 +1099,28 @@ void bd_stop_bdj(BLURAY *bd); // shutdown BD-J and clean up resources
|
||||
*/
|
||||
int bd_read_file(BLURAY *, const char *path, void **data, int64_t *size);
|
||||
|
||||
@ -1615,10 +1665,10 @@ index cbf16fc..97dc1a3 100644
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
diff --git a/src/libbluray/disc/disc.c b/src/libbluray/disc/disc.c
|
||||
index defa084..375e6c3 100644
|
||||
index be6a279d..8ed14e64 100644
|
||||
--- a/src/libbluray/disc/disc.c
|
||||
+++ b/src/libbluray/disc/disc.c
|
||||
@@ -69,7 +69,7 @@ static BD_FILE_H *_bdrom_open_path(void *p, const char *rel_path)
|
||||
@@ -75,7 +75,7 @@ static BD_FILE_H *_bdrom_open_path(void *p, const char *rel_path)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -1627,4 +1677,3 @@ index defa084..375e6c3 100644
|
||||
X_FREE(abs_path);
|
||||
|
||||
return fp;
|
||||
|
Loading…
x
Reference in New Issue
Block a user