Skip to content
GitLab
Explore
Sign in
Register
Commits on Source (2)
Use RegisterAccess for PSR names. Drop duplicates from Libbluray.
· 9c88a6aa
hpi1
authored
Jan 02, 2019
9c88a6aa
Improve mmbd detection
· a708c33b
hpi1
authored
Jan 02, 2019
a708c33b
Hide whitespace changes
Inline
Side-by-side
src/libbluray/bdj/java/org/videolan/Libbluray.java
View file @
a708c33b
/*
* This file is part of libbluray
* Copyright (C) 2010 William Hahne
* Copyright (C) 2012-201
4
Petri Hintukainen <phintuka@users.sourceforge.net>
* Copyright (C) 2012-201
9
Petri Hintukainen <phintuka@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -766,40 +766,6 @@ public class Libbluray {
public
static
final
int
BDJ_EVENT_UO_MASKED
=
17
;
private
static
final
int
BDJ_EVENT_MOUSE
=
18
;
/* TODO: use org/bluray/system/RegisterAccess instead */
public
static
final
int
PSR_IG_STREAM_ID
=
0
;
public
static
final
int
PSR_PRIMARY_AUDIO_ID
=
1
;
public
static
final
int
PSR_PG_STREAM
=
2
;
public
static
final
int
PSR_ANGLE_NUMBER
=
3
;
public
static
final
int
PSR_TITLE_NUMBER
=
4
;
public
static
final
int
PSR_CHAPTER
=
5
;
public
static
final
int
PSR_PLAYLIST
=
6
;
public
static
final
int
PSR_PLAYITEM
=
7
;
public
static
final
int
PSR_TIME
=
8
;
public
static
final
int
PSR_NAV_TIMER
=
9
;
public
static
final
int
PSR_SELECTED_BUTTON_ID
=
10
;
public
static
final
int
PSR_MENU_PAGE_ID
=
11
;
public
static
final
int
PSR_STYLE
=
12
;
public
static
final
int
PSR_PARENTAL
=
13
;
public
static
final
int
PSR_SECONDARY_AUDIO_VIDEO
=
14
;
public
static
final
int
PSR_AUDIO_CAP
=
15
;
public
static
final
int
PSR_AUDIO_LANG
=
16
;
public
static
final
int
PSR_PG_AND_SUB_LANG
=
17
;
public
static
final
int
PSR_MENU_LANG
=
18
;
public
static
final
int
PSR_COUNTRY
=
19
;
public
static
final
int
PSR_REGION
=
20
;
public
static
final
int
PSR_VIDEO_CAP
=
29
;
public
static
final
int
PSR_TEXT_CAP
=
30
;
public
static
final
int
PSR_PROFILE_VERSION
=
31
;
public
static
final
int
PSR_BACKUP_PSR4
=
36
;
public
static
final
int
PSR_BACKUP_PSR5
=
37
;
public
static
final
int
PSR_BACKUP_PSR6
=
38
;
public
static
final
int
PSR_BACKUP_PSR7
=
39
;
public
static
final
int
PSR_BACKUP_PSR8
=
40
;
public
static
final
int
PSR_BACKUP_PSR10
=
42
;
public
static
final
int
PSR_BACKUP_PSR11
=
43
;
public
static
final
int
PSR_BACKUP_PSR12
=
44
;
public
static
final
int
AACS_DISC_ID
=
1
;
public
static
final
int
AACS_MEDIA_VID
=
2
;
public
static
final
int
AACS_MEDIA_PMSN
=
3
;
...
...
src/libbluray/bdj/java/org/videolan/media/content/playlist/Handler.java
View file @
a708c33b
/*
* This file is part of libbluray
* Copyright (C) 2010 William Hahne
* Copyright (C) 2012-201
4
Petri Hintukainen <phintuka@users.sourceforge.net>
* Copyright (C) 2012-201
9
Petri Hintukainen <phintuka@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -138,18 +138,18 @@ public class Handler extends BDHandler {
int
stream
;
stream
=
sourceLocator
.
getPrimaryAudioStreamNumber
();
if
(
stream
>
0
)
Libbluray
.
writePSR
(
Libbluray
.
PSR_PRIMARY
_AUDIO_
ID
,
stream
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR
_AUDIO_
STN
,
stream
);
stream
=
sourceLocator
.
getPGTextStreamNumber
();
if
(
stream
>
0
)
{
Libbluray
.
writePSR
(
Libbluray
.
PSR_PG_STREAM
,
stream
,
0x00000fff
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_PG_TXTST_STN
,
stream
,
0x00000fff
);
}
stream
=
sourceLocator
.
getSecondaryVideoStreamNumber
();
if
(
stream
>
0
)
{
Libbluray
.
writePSR
(
Libbluray
.
PSR_SECONDARY_AUDIO_
VIDEO
,
stream
<<
8
,
0x0000ff00
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_SECONDARY_AUDIO_
STN
,
stream
<<
8
,
0x0000ff00
);
}
stream
=
sourceLocator
.
getSecondaryAudioStreamNumber
();
if
(
stream
>
0
)
{
Libbluray
.
writePSR
(
Libbluray
.
PSR_SECONDARY_AUDIO_
VIDEO
,
stream
,
0x000000ff
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_SECONDARY_AUDIO_
STN
,
stream
,
0x000000ff
);
}
int
plId
=
sourceLocator
.
getPlayListId
();
...
...
src/libbluray/bdj/java/org/videolan/media/content/playlist/PiPControlImpl.java
View file @
a708c33b
/*
* This file is part of libbluray
* Copyright (C) 2010 William Hahne
* Copyright (C) 2013-2019 Petri Hintukainen <phintuka@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -28,6 +29,7 @@ import org.bluray.media.PiPControl;
import
org.bluray.media.PiPStatusEvent
;
import
org.bluray.media.PiPStatusListener
;
import
org.bluray.media.StreamNotAvailableException
;
import
org.bluray.system.RegisterAccess
;
import
org.havi.ui.HScreenRectangle
;
import
org.videolan.BDJListeners
;
...
...
@@ -49,19 +51,19 @@ public class PiPControlImpl extends VideoControl implements PiPControl, Asynchro
}
protected
void
setStreamNumber
(
int
num
)
{
Libbluray
.
writePSR
(
Libbluray
.
PSR_SECONDARY_AUDIO_
VIDEO
,
num
<<
8
,
0x0000ff00
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_SECONDARY_AUDIO_
STN
,
num
<<
8
,
0x0000ff00
);
}
public
int
getCurrentStreamNumber
()
{
return
(
Libbluray
.
readPSR
(
Libbluray
.
PSR_SECONDARY_AUDIO_
VIDEO
)
&
0x0000FF00
)
>>
8
;
return
(
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_SECONDARY_AUDIO_
STN
)
&
0x0000FF00
)
>>
8
;
}
public
void
setDisplay
(
boolean
value
)
{
Libbluray
.
writePSR
(
Libbluray
.
PSR_SECONDARY_AUDIO_
VIDEO
,
value
?
0x80000000
:
0
,
0x80000000
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_SECONDARY_AUDIO_
STN
,
value
?
0x80000000
:
0
,
0x80000000
);
}
public
boolean
getDisplay
()
{
return
(
Libbluray
.
readPSR
(
Libbluray
.
PSR_SECONDARY_AUDIO_
VIDEO
)
&
0x80000000
)
!=
0
;
return
(
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_SECONDARY_AUDIO_
STN
)
&
0x80000000
)
!=
0
;
}
public
void
setFullScreen
(
boolean
value
)
{
...
...
src/libbluray/bdj/java/org/videolan/media/content/playlist/PrimaryAudioControlImpl.java
View file @
a708c33b
/*
* This file is part of libbluray
* Copyright (C) 2010 William Hahne
* Copyright (C) 2016-2019 Petri Hintukainen <phintuka@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -20,6 +21,8 @@
package
org.videolan.media.content.playlist
;
import
org.bluray.media.PrimaryAudioControl
;
import
org.bluray.system.RegisterAccess
;
import
org.videolan.Libbluray
;
import
org.videolan.StreamInfo
;
import
org.videolan.TIClip
;
...
...
@@ -37,15 +40,15 @@ public class PrimaryAudioControlImpl extends StreamControl implements PrimaryAud
}
protected
String
getDefaultLanguage
()
{
return
languageFromInteger
(
Libbluray
.
readPSR
(
Libbluray
.
PSR_AUDIO_LANG
));
return
languageFromInteger
(
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_LANG_CODE_AUDIO
));
}
public
int
getCurrentStreamNumber
()
{
return
Libbluray
.
readPSR
(
Libbluray
.
PSR_PRIMARY
_AUDIO_
ID
);
return
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR
_AUDIO_
STN
);
}
protected
void
setStreamNumber
(
int
num
)
{
Libbluray
.
writePSR
(
Libbluray
.
PSR_PRIMARY
_AUDIO_
ID
,
num
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR
_AUDIO_
STN
,
num
);
}
private
Handler
player
;
...
...
src/libbluray/bdj/java/org/videolan/media/content/playlist/SecondaryAudioControlImpl.java
View file @
a708c33b
/*
* This file is part of libbluray
* Copyright (C) 2010 William Hahne
* Copyright (C) 2014-2019 Petri Hintukainen <phintuka@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -20,6 +21,8 @@
package
org.videolan.media.content.playlist
;
import
org.bluray.media.SecondaryAudioControl
;
import
org.bluray.system.RegisterAccess
;
import
org.videolan.Libbluray
;
import
org.videolan.StreamInfo
;
import
org.videolan.TIClip
;
...
...
@@ -37,15 +40,15 @@ public class SecondaryAudioControlImpl extends StreamControl implements Secondar
}
protected
String
getDefaultLanguage
()
{
return
languageFromInteger
(
Libbluray
.
readPSR
(
Libbluray
.
PSR_AUDIO_LANG
));
return
languageFromInteger
(
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_LANG_CODE_AUDIO
));
}
public
int
getCurrentStreamNumber
()
{
return
Libbluray
.
readPSR
(
Libbluray
.
PSR_SECONDARY_AUDIO_
VIDEO
)
&
0x000000FF
;
return
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_SECONDARY_AUDIO_
STN
)
&
0x000000FF
;
}
protected
void
setStreamNumber
(
int
num
)
{
Libbluray
.
writePSR
(
Libbluray
.
PSR_SECONDARY_AUDIO_
VIDEO
,
num
,
0x000000ff
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_SECONDARY_AUDIO_
STN
,
num
,
0x000000ff
);
}
private
Handler
player
;
...
...
src/libbluray/bdj/java/org/videolan/media/content/playlist/SubtitlingControlImpl.java
View file @
a708c33b
/*
* This file is part of libbluray
* Copyright (C) 2010 William Hahne
* Copyright (C) 2012-2019 Petri Hintukainen <phintuka@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -25,6 +26,7 @@ import org.bluray.media.StreamNotAvailableException;
import
org.bluray.media.SubtitleStyleNotAvailableException
;
import
org.bluray.media.SubtitlingControl
;
import
org.bluray.media.TextSubtitleNotAvailableException
;
import
org.bluray.system.RegisterAccess
;
import
org.bluray.ti.CodingType
;
import
org.dvb.media.SubtitleAvailableEvent
;
import
org.dvb.media.SubtitleListener
;
...
...
@@ -49,24 +51,24 @@ public class SubtitlingControlImpl extends StreamControl implements SubtitlingCo
}
protected
String
getDefaultLanguage
()
{
return
languageFromInteger
(
Libbluray
.
readPSR
(
Libbluray
.
PSR_PG_AND_SUB_LANG
));
return
languageFromInteger
(
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_LANG_CODE_PG_TXTST
));
}
public
int
getCurrentStreamNumber
()
{
return
Libbluray
.
readPSR
(
Libbluray
.
PSR_PG_STREAM
)
&
0x00000FFF
;
return
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_PG_TXTST_STN
)
&
0x00000FFF
;
}
protected
void
setStreamNumber
(
int
num
)
{
Libbluray
.
writePSR
(
Libbluray
.
PSR_PG_STREAM
,
num
,
0x00000fff
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_PG_TXTST_STN
,
num
,
0x00000fff
);
}
public
boolean
isSubtitlingOn
()
{
return
(
Libbluray
.
readPSR
(
Libbluray
.
PSR_PG_STREAM
)
&
0x80000000
)
!=
0
;
return
(
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_PG_TXTST_STN
)
&
0x80000000
)
!=
0
;
}
public
boolean
setSubtitling
(
boolean
mode
)
{
boolean
oldMode
=
(
Libbluray
.
readPSR
(
Libbluray
.
PSR_PG_STREAM
)
&
0x80000000
)
!=
0
;
Libbluray
.
writePSR
(
Libbluray
.
PSR_PG_STREAM
,
mode
?
0x80000000
:
0
,
0x80000000
);
boolean
oldMode
=
(
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_PG_TXTST_STN
)
&
0x80000000
)
!=
0
;
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_PG_TXTST_STN
,
mode
?
0x80000000
:
0
,
0x80000000
);
return
oldMode
;
}
...
...
@@ -75,12 +77,12 @@ public class SubtitlingControlImpl extends StreamControl implements SubtitlingCo
}
public
boolean
isPipSubtitleMode
()
{
return
(
Libbluray
.
readPSR
(
Libbluray
.
PSR_PG_STREAM
)
&
0x40000000
)
!=
0
;
return
(
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_PG_TXTST_STN
)
&
0x40000000
)
!=
0
;
}
public
boolean
setPipSubtitleMode
(
boolean
mode
)
{
boolean
oldMode
=
(
Libbluray
.
readPSR
(
Libbluray
.
PSR_PG_STREAM
)
&
0x40000000
)
!=
0
;
Libbluray
.
writePSR
(
Libbluray
.
PSR_PG_STREAM
,
mode
?
0x40000000
:
0
,
0x40000000
);
boolean
oldMode
=
(
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_PG_TXTST_STN
)
&
0x40000000
)
!=
0
;
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_PG_TXTST_STN
,
mode
?
0x40000000
:
0
,
0x40000000
);
return
oldMode
;
}
...
...
@@ -90,7 +92,7 @@ public class SubtitlingControlImpl extends StreamControl implements SubtitlingCo
throw
new
SubtitleStyleNotAvailableException
();
if
(
getCurrentSubtitleType
()
!=
CodingType
.
TEXT_SUBTITLE
)
throw
new
TextSubtitleNotAvailableException
();
Libbluray
.
writePSR
(
Libbluray
.
PS
R_STYLE
,
style
);
Libbluray
.
writePSR
(
RegisterAccess
.
PSR_USE
R_STYLE
_NR
,
style
);
}
public
CodingType
getCurrentSubtitleType
()
{
...
...
@@ -107,7 +109,7 @@ public class SubtitlingControlImpl extends StreamControl implements SubtitlingCo
throws
TextSubtitleNotAvailableException
,
SubtitleStyleNotAvailableException
{
if
(
getCurrentSubtitleType
()
!=
CodingType
.
TEXT_SUBTITLE
)
throw
new
TextSubtitleNotAvailableException
();
int
style
=
Libbluray
.
readPSR
(
Libbluray
.
PS
R_STYLE
);
int
style
=
RegisterAccess
.
getInstance
().
getPSR
(
RegisterAccess
.
PSR_USE
R_STYLE
_NR
);
if
((
style
<=
0
)
||
((
style
>
25
)
&&
(
style
!=
255
)))
throw
new
SubtitleStyleNotAvailableException
();
return
style
;
...
...
src/libbluray/disc/aacs.c
View file @
a708c33b
...
...
@@ -101,6 +101,13 @@ static void *_open_libaacs(int *impl_id)
if
(
libaacs
[
ii
])
{
void
*
handle
=
dl_dlopen
(
libaacs
[
ii
],
"0"
);
if
(
handle
)
{
/* One more libmmbd check. This is needed if libaacs is just a link to libmmbd ... */
fptr_int32
fp
;
*
(
void
**
)(
&
fp
)
=
dl_dlsym
(
handle
,
"bdplus_get_code_date"
);
if
(
fp
&&
fp
(
NULL
)
==
0
)
{
ii
=
IMPL_LIBMMBD
;
}
*
impl_id
=
ii
;
BD_DEBUG
(
DBG_BLURAY
,
"Using %s for AACS
\n
"
,
libaacs
[
ii
]);
return
handle
;
...
...
src/libbluray/disc/bdplus.c
View file @
a708c33b
...
...
@@ -105,6 +105,13 @@ static void *_libbdplus_open(int *impl_id)
if
(
libbdplus
[
ii
])
{
void
*
handle
=
dl_dlopen
(
libbdplus
[
ii
],
"0"
);
if
(
handle
)
{
/* One more libmmbd check. This is needed if libbdplus is just a link to libmmbd ... */
fptr_int32
fp
;
*
(
void
**
)(
&
fp
)
=
dl_dlsym
(
handle
,
"bdplus_get_code_date"
);
if
(
fp
&&
fp
(
NULL
)
==
0
)
{
ii
=
IMPL_LIBMMBD
;
}
*
impl_id
=
ii
;
BD_DEBUG
(
DBG_BLURAY
,
"Using %s for BD+
\n
"
,
libbdplus
[
ii
]);
return
handle
;
...
...
src/libbluray/disc/disc.c
View file @
a708c33b
...
...
@@ -683,6 +683,15 @@ const uint8_t *disc_get_data(BD_DISC *disc, int type)
if
(
disc
->
dec
)
{
return
dec_data
(
disc
->
dec
,
type
);
}
if
(
type
==
0x1000
)
{
/* this shouldn't cause any extra optical disc access */
BD_DIR_H
*
d
=
disc
->
pf_dir_open_bdrom
(
disc
->
fs_handle
,
"MAKEMKV"
);
if
(
d
)
{
dir_close
(
d
);
BD_DEBUG
(
DBG_FILE
,
"Detected MakeMKV backup data
\n
"
);
return
(
const
uint8_t
*
)
"mmbd;backup"
;
}
}
return
NULL
;
}
...
...