Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
15006f7b
Commit
15006f7b
authored
Jun 05, 2005
by
Gildas Bazin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* modules/access/dvdnav.c, src/video_output/vout_subpictures.c: backport of #11304.
parent
55821eac
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
40 additions
and
49 deletions
+40
-49
include/vlc_spu.h
include/vlc_spu.h
+2
-2
modules/access/dvdnav.c
modules/access/dvdnav.c
+28
-19
src/video_output/vout_subpictures.c
src/video_output/vout_subpictures.c
+10
-28
No files found.
include/vlc_spu.h
View file @
15006f7b
...
...
@@ -48,8 +48,8 @@ struct spu_t
int
i_crop_x
,
i_crop_y
,
i_crop_width
,
i_crop_height
;
/**< cropping */
int
i_margin
;
/**< force position of a subpicture */
vlc_bool_t
b_force_
alpha
;
/**< force alpha
palette of subpicture */
uint8_t
p
i_alpha
[
4
];
/**< forced alpha
palette */
vlc_bool_t
b_force_
palette
;
/**< force
palette of subpicture */
uint8_t
p
alette
[
4
][
4
];
/**< forced
palette */
int
(
*
pf_control
)
(
spu_t
*
,
int
,
va_list
);
...
...
modules/access/dvdnav.c
View file @
15006f7b
...
...
@@ -129,9 +129,9 @@ struct demux_sys_t
/* event */
event_thread_t
*
p_ev
;
/*
FIXME
*/
uint
8_t
alpha
[
4
];
uint
32_t
clut
[
16
];
/*
palette for menus
*/
uint
32_t
clut
[
16
];
uint
8_t
palette
[
4
][
4
];
/* */
int
i_aspect
;
...
...
@@ -149,7 +149,7 @@ static int DemuxBlock( demux_t *, uint8_t *, int );
static
void
DemuxTitles
(
demux_t
*
);
static
void
ESSubtitleUpdate
(
demux_t
*
);
static
void
ButtonUpdate
(
demux_t
*
);
static
void
ButtonUpdate
(
demux_t
*
,
vlc_bool_t
);
static
void
ESNew
(
demux_t
*
,
int
);
static
int
ProbeDVD
(
demux_t
*
,
char
*
);
...
...
@@ -320,7 +320,7 @@ static int Open( vlc_object_t *p_this )
var_Create
(
p_sys
->
p_input
,
"x-end"
,
VLC_VAR_INTEGER
);
var_Create
(
p_sys
->
p_input
,
"y-end"
,
VLC_VAR_INTEGER
);
var_Create
(
p_sys
->
p_input
,
"color"
,
VLC_VAR_ADDRESS
);
var_Create
(
p_sys
->
p_input
,
"menu-
contrast
"
,
VLC_VAR_ADDRESS
);
var_Create
(
p_sys
->
p_input
,
"menu-
palette
"
,
VLC_VAR_ADDRESS
);
var_Create
(
p_sys
->
p_input
,
"highlight"
,
VLC_VAR_BOOL
);
var_Create
(
p_sys
->
p_input
,
"highlight-mutex"
,
VLC_VAR_MUTEX
);
...
...
@@ -354,7 +354,7 @@ static void Close( vlc_object_t *p_this )
var_Destroy
(
p_sys
->
p_input
,
"y-start"
);
var_Destroy
(
p_sys
->
p_input
,
"y-end"
);
var_Destroy
(
p_sys
->
p_input
,
"color"
);
var_Destroy
(
p_sys
->
p_input
,
"menu-
contrast
"
);
var_Destroy
(
p_sys
->
p_input
,
"menu-
palette
"
);
vlc_object_release
(
p_sys
->
p_input
);
...
...
@@ -420,7 +420,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
pi64
=
(
int64_t
*
)
va_arg
(
args
,
int64_t
*
);
if
(
p_sys
->
i_pgc_length
>
0
)
{
*
pi64
=
(
int64_t
)
(
(
double
)
p_sys
->
i_pgc_length
/
(
double
)
len
)
*
(
double
)
pos
;
*
pi64
=
p_sys
->
i_pgc_length
*
pos
/
len
;
return
VLC_SUCCESS
;
}
}
...
...
@@ -754,7 +754,7 @@ static int Demux( demux_t *p_demux )
msg_Dbg
(
p_demux
,
"DVDNAV_HIGHLIGHT"
);
msg_Dbg
(
p_demux
,
" - display=%d"
,
event
->
display
);
msg_Dbg
(
p_demux
,
" - buttonN=%d"
,
event
->
buttonN
);
ButtonUpdate
(
p_demux
);
ButtonUpdate
(
p_demux
,
0
);
break
;
}
...
...
@@ -879,7 +879,7 @@ static void DemuxTitles( demux_t *p_demux )
/*****************************************************************************
* Update functions:
*****************************************************************************/
static
void
ButtonUpdate
(
demux_t
*
p_demux
)
static
void
ButtonUpdate
(
demux_t
*
p_demux
,
vlc_bool_t
b_mode
)
{
demux_sys_t
*
p_sys
=
p_demux
->
p_sys
;
vlc_value_t
val
;
...
...
@@ -902,15 +902,22 @@ static void ButtonUpdate( demux_t *p_demux )
if
(
i_button
>
0
&&
i_title
==
0
)
{
int
i
;
pci_t
*
pci
=
dvdnav_get_current_nav_pci
(
p_sys
->
dvdnav
);
dvdnav_get_highlight_area
(
pci
,
i_button
,
1
,
&
hl
);
dvdnav_get_highlight_area
(
pci
,
i_button
,
b_mode
,
&
hl
);
/* I fear it is plain wrong */
p_sys
->
alpha
[
0
]
=
hl
.
palette
&
0x0f
;
p_sys
->
alpha
[
1
]
=
(
hl
.
palette
>>
4
)
&
0x0f
;
p_sys
->
alpha
[
2
]
=
(
hl
.
palette
>>
8
)
&
0x0f
;
p_sys
->
alpha
[
3
]
=
(
hl
.
palette
>>
12
)
&
0x0f
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
uint32_t
i_yuv
=
p_sys
->
clut
[(
hl
.
palette
>>
(
16
+
i
*
4
))
&
0x0f
];
uint8_t
i_alpha
=
(
hl
.
palette
>>
(
i
*
4
))
&
0x0f
;
i_alpha
=
i_alpha
==
0xf
?
0xff
:
i_alpha
<<
4
;
p_sys
->
palette
[
i
][
0
]
=
(
i_yuv
>>
16
)
&
0xff
;
p_sys
->
palette
[
i
][
1
]
=
(
i_yuv
>>
0
)
&
0xff
;
p_sys
->
palette
[
i
][
2
]
=
(
i_yuv
>>
8
)
&
0xff
;
p_sys
->
palette
[
i
][
3
]
=
i_alpha
;
}
vlc_mutex_lock
(
p_mutex
);
val
.
i_int
=
hl
.
sx
;
var_Set
(
p_sys
->
p_input
,
"x-start"
,
val
);
...
...
@@ -918,8 +925,8 @@ static void ButtonUpdate( demux_t *p_demux )
val
.
i_int
=
hl
.
sy
;
var_Set
(
p_sys
->
p_input
,
"y-start"
,
val
);
val
.
i_int
=
hl
.
ey
;
var_Set
(
p_sys
->
p_input
,
"y-end"
,
val
);
val
.
p_address
=
(
void
*
)
p_sys
->
alpha
;
var_Set
(
p_sys
->
p_input
,
"menu-
contrast
"
,
val
);
val
.
p_address
=
(
void
*
)
p_sys
->
palette
;
var_Set
(
p_sys
->
p_input
,
"menu-
palette
"
,
val
);
val
.
b_bool
=
VLC_TRUE
;
var_Set
(
p_sys
->
p_input
,
"highlight"
,
val
);
vlc_mutex_unlock
(
p_mutex
);
...
...
@@ -946,7 +953,7 @@ static void ESSubtitleUpdate( demux_t *p_demux )
int
i_spu
=
dvdnav_get_active_spu_stream
(
p_sys
->
dvdnav
);
int32_t
i_title
,
i_part
;
ButtonUpdate
(
p_demux
);
ButtonUpdate
(
p_demux
,
0
);
dvdnav_current_title_info
(
p_sys
->
dvdnav
,
&
i_title
,
&
i_part
);
if
(
i_title
>
0
)
return
;
...
...
@@ -1160,7 +1167,7 @@ static void ESNew( demux_t *p_demux, int i_id )
}
tk
->
b_seen
=
VLC_TRUE
;
if
(
tk
->
fmt
.
i_cat
==
VIDEO_ES
)
ButtonUpdate
(
p_demux
);
if
(
tk
->
fmt
.
i_cat
==
VIDEO_ES
)
ButtonUpdate
(
p_demux
,
0
);
}
/*****************************************************************************
...
...
@@ -1227,6 +1234,7 @@ static int EventThread( vlc_object_t *p_this )
case
ACTIONID_NAV_ACTIVATE
:
b_activated
=
VLC_TRUE
;
dvdnav_button_activate
(
p_sys
->
dvdnav
,
pci
);
ButtonUpdate
(
p_ev
->
p_demux
,
VLC_TRUE
);
break
;
default:
break
;
...
...
@@ -1255,6 +1263,7 @@ static int EventThread( vlc_object_t *p_this )
b_activated
=
VLC_TRUE
;
dvdnav_mouse_activate
(
p_sys
->
dvdnav
,
pci
,
valx
.
i_int
,
valy
.
i_int
);
ButtonUpdate
(
p_ev
->
p_demux
,
VLC_TRUE
);
}
p_ev
->
b_moved
=
VLC_FALSE
;
...
...
src/video_output/vout_subpictures.c
View file @
15006f7b
...
...
@@ -599,13 +599,11 @@ void spu_RenderSubpictures( spu_t *p_spu, video_format_t *p_fmt,
}
/* Force palette if requested */
if
(
p_spu
->
b_force_
alpha
&&
VLC_FOURCC
(
'Y'
,
'U'
,
'V'
,
'P'
)
==
if
(
p_spu
->
b_force_
palette
&&
VLC_FOURCC
(
'Y'
,
'U'
,
'V'
,
'P'
)
==
p_region
->
fmt
.
i_chroma
)
{
p_region
->
fmt
.
p_palette
->
palette
[
0
][
3
]
=
p_spu
->
pi_alpha
[
0
];
p_region
->
fmt
.
p_palette
->
palette
[
1
][
3
]
=
p_spu
->
pi_alpha
[
1
];
p_region
->
fmt
.
p_palette
->
palette
[
2
][
3
]
=
p_spu
->
pi_alpha
[
2
];
p_region
->
fmt
.
p_palette
->
palette
[
3
][
3
]
=
p_spu
->
pi_alpha
[
3
];
memcpy
(
p_region
->
fmt
.
p_palette
->
palette
,
p_spu
->
palette
,
16
);
}
/* Scale SPU if necessary */
...
...
@@ -964,7 +962,7 @@ static void UpdateSPU( spu_t *p_spu, vlc_object_t *p_object )
{
vlc_value_t
val
;
p_spu
->
b_force_
alpha
=
VLC_FALSE
;
p_spu
->
b_force_
palette
=
VLC_FALSE
;
p_spu
->
b_force_crop
=
VLC_FALSE
;
if
(
var_Get
(
p_object
,
"highlight"
,
&
val
)
||
!
val
.
b_bool
)
return
;
...
...
@@ -979,32 +977,16 @@ static void UpdateSPU( spu_t *p_spu, vlc_object_t *p_object )
var_Get
(
p_object
,
"y-end"
,
&
val
);
p_spu
->
i_crop_height
=
val
.
i_int
-
p_spu
->
i_crop_y
;
#if 0
if( var_Get( p_object, "color", &val ) == VLC_SUCCESS )
if
(
var_Get
(
p_object
,
"menu-palette"
,
&
val
)
==
VLC_SUCCESS
)
{
int i;
for( i = 0; i < 4; i++ )
{
p_spu->pi_color[i] = ((uint8_t *)val.p_address)[i];
}
}
#endif
if
(
var_Get
(
p_object
,
"menu-contrast"
,
&
val
)
==
VLC_SUCCESS
)
{
int
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
p_spu
->
pi_alpha
[
i
]
=
((
uint8_t
*
)
val
.
p_address
)[
i
];
p_spu
->
pi_alpha
[
i
]
=
p_spu
->
pi_alpha
[
i
]
==
0xf
?
0xff
:
p_spu
->
pi_alpha
[
i
]
<<
4
;
}
p_spu
->
b_force_alpha
=
VLC_TRUE
;
memcpy
(
p_spu
->
palette
,
val
.
p_address
,
16
);
p_spu
->
b_force_palette
=
VLC_TRUE
;
}
msg_Dbg
(
p_object
,
"crop: %i,%i,%i,%i,
alpha
: %i"
,
msg_Dbg
(
p_object
,
"crop: %i,%i,%i,%i,
palette forced
: %i"
,
p_spu
->
i_crop_x
,
p_spu
->
i_crop_y
,
p_spu
->
i_crop_width
,
p_spu
->
i_crop_height
,
p_spu
->
b_force_alpha
);
p_spu
->
i_crop_width
,
p_spu
->
i_crop_height
,
p_spu
->
b_force_palette
);
}
/*****************************************************************************
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment