Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
063357c9
Commit
063357c9
authored
Jun 01, 2011
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Converted subpicture widget/epg to YUVP.
parent
52cd14db
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
48 additions
and
44 deletions
+48
-44
src/video_output/video_epg.c
src/video_output/video_epg.c
+16
-15
src/video_output/video_widgets.c
src/video_output/video_widgets.c
+32
-29
No files found.
src/video_output/video_epg.c
View file @
063357c9
...
...
@@ -41,17 +41,26 @@ static subpicture_region_t * vout_OSDEpgSlider(int x, int y,
int
width
,
int
height
,
float
ratio
)
{
video_format_t
fmt
;
subpicture_region_t
*
region
;
/* Create a new subpicture region */
video_format_Init
(
&
fmt
,
VLC_CODEC_YUVA
);
video_palette_t
palette
=
{
.
i_entries
=
4
,
.
palette
=
{
[
0
]
=
{
0xff
,
0x80
,
0x80
,
0x00
},
[
1
]
=
{
0x00
,
0x80
,
0x80
,
0x00
},
[
2
]
=
{
0xff
,
0x80
,
0x80
,
0xff
},
[
3
]
=
{
0x00
,
0x80
,
0x80
,
0xff
},
},
};
video_format_t
fmt
;
video_format_Init
(
&
fmt
,
VLC_CODEC_YUVP
);
fmt
.
i_width
=
fmt
.
i_visible_width
=
width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
height
;
fmt
.
i_sar_num
=
1
;
fmt
.
i_sar_den
=
1
;
fmt
.
p_palette
=
&
palette
;
region
=
subpicture_region_New
(
&
fmt
);
subpicture_region_t
*
region
=
subpicture_region_New
(
&
fmt
);
if
(
!
region
)
return
NULL
;
...
...
@@ -65,24 +74,16 @@ static subpicture_region_t * vout_OSDEpgSlider(int x, int y,
for
(
int
j
=
0
;
j
<
height
;
j
++
)
{
for
(
int
i
=
0
;
i
<
width
;
i
++
)
{
#define WRITE_COMP(plane, value) \
picture->p[plane].p_pixels[picture->p[plane].i_pitch * j + i] = value
/* Draw the slider. */
/* Slider border. */
bool
is_outline
=
j
==
0
||
j
==
height
-
1
||
i
==
0
||
i
==
width
-
1
;
WRITE_COMP
(
0
,
is_outline
?
0x00
:
0xff
);
WRITE_COMP
(
1
,
0x80
);
WRITE_COMP
(
2
,
0x80
);
/* We can see the video through the part of the slider
which corresponds to the leaving time. */
bool
is_border
=
j
<
3
||
j
>
height
-
4
||
i
<
3
||
i
>
width
-
4
||
i
<
filled_part_width
;
WRITE_COMP
(
3
,
is_border
?
0xff
:
0x00
);
#undef WRITE_COMP
picture
->
p
->
p_pixels
[
picture
->
p
->
i_pitch
*
j
+
i
]
=
2
*
is_border
+
is_outline
;
}
}
...
...
src/video_output/video_widgets.c
View file @
063357c9
...
...
@@ -46,22 +46,22 @@
static
void
DrawRect
(
subpicture_region_t
*
r
,
int
fill
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
{
uint8_t
*
a
=
r
->
p_picture
->
A_PIXELS
;
int
pitch
=
r
->
p_picture
->
A_PITCH
;
uint8_t
*
p
=
r
->
p_picture
->
p
->
p_pixels
;
int
pitch
=
r
->
p_picture
->
p
->
i_pitch
;
if
(
fill
==
STYLE_FILLED
)
{
for
(
int
y
=
y1
;
y
<=
y2
;
y
++
)
{
for
(
int
x
=
x1
;
x
<=
x2
;
x
++
)
a
[
x
+
pitch
*
y
]
=
0xff
;
p
[
x
+
pitch
*
y
]
=
1
;
}
}
else
{
for
(
int
y
=
y1
;
y
<=
y2
;
y
++
)
{
a
[
x1
+
pitch
*
y
]
=
0xff
;
a
[
x2
+
pitch
*
y
]
=
0xff
;
p
[
x1
+
pitch
*
y
]
=
1
;
p
[
x2
+
pitch
*
y
]
=
1
;
}
for
(
int
x
=
x1
;
x
<=
x2
;
x
++
)
{
a
[
x
+
pitch
*
y1
]
=
0xff
;
a
[
x
+
pitch
*
y2
]
=
0xff
;
p
[
x
+
pitch
*
y1
]
=
1
;
p
[
x
+
pitch
*
y2
]
=
1
;
}
}
}
...
...
@@ -73,8 +73,8 @@ static void DrawRect(subpicture_region_t *r, int fill,
static
void
DrawTriangle
(
subpicture_region_t
*
r
,
int
fill
,
int
x1
,
int
y1
,
int
x2
,
int
y2
)
{
uint8_t
*
a
=
r
->
p_picture
->
A_PIXELS
;
int
pitch
=
r
->
p_picture
->
A_PITCH
;
uint8_t
*
p
=
r
->
p_picture
->
p
->
p_pixels
;
int
pitch
=
r
->
p_picture
->
p
->
i_pitch
;
const
int
mid
=
y1
+
(
y2
-
y1
)
/
2
;
/* TODO factorize it */
...
...
@@ -83,17 +83,17 @@ static void DrawTriangle(subpicture_region_t *r, int fill,
for
(
int
y
=
y1
;
y
<=
mid
;
y
++
)
{
int
h
=
y
-
y1
;
for
(
int
x
=
x1
;
x
<=
x1
+
h
&&
x
<=
x2
;
x
++
)
{
a
[
x
+
pitch
*
y
]
=
0xff
;
a
[
x
+
pitch
*
(
y2
-
h
)]
=
0xff
;
p
[
x
+
pitch
*
y
]
=
1
;
p
[
x
+
pitch
*
(
y2
-
h
)]
=
1
;
}
}
}
else
{
for
(
int
y
=
y1
;
y
<=
mid
;
y
++
)
{
int
h
=
y
-
y1
;
a
[
x1
+
pitch
*
y
]
=
0xff
;
a
[
x1
+
h
+
pitch
*
y
]
=
0xff
;
a
[
x1
+
pitch
*
(
y2
-
h
)]
=
0xff
;
a
[
x1
+
h
+
pitch
*
(
y2
-
h
)]
=
0xff
;
p
[
x1
+
pitch
*
y
]
=
1
;
p
[
x1
+
h
+
pitch
*
y
]
=
1
;
p
[
x1
+
pitch
*
(
y2
-
h
)]
=
1
;
p
[
x1
+
h
+
pitch
*
(
y2
-
h
)]
=
1
;
}
}
}
else
{
...
...
@@ -101,17 +101,17 @@ static void DrawTriangle(subpicture_region_t *r, int fill,
for
(
int
y
=
y1
;
y
<=
mid
;
y
++
)
{
int
h
=
y
-
y1
;
for
(
int
x
=
x1
;
x
>=
x1
-
h
&&
x
>=
x2
;
x
--
)
{
a
[
x
+
pitch
*
y
]
=
0xff
;
a
[
x
+
pitch
*
(
y2
-
h
)]
=
0xff
;
p
[
x
+
pitch
*
y
]
=
1
;
p
[
x
+
pitch
*
(
y2
-
h
)]
=
1
;
}
}
}
else
{
for
(
int
y
=
y1
;
y
<=
mid
;
y
++
)
{
int
h
=
y
-
y1
;
a
[
x1
+
pitch
*
y
]
=
0xff
;
a
[
x1
-
h
+
pitch
*
y
]
=
0xff
;
a
[
x1
+
pitch
*
(
y2
-
h
)]
=
0xff
;
a
[
x1
-
h
+
pitch
*
(
y2
-
h
)]
=
0xff
;
p
[
x1
+
pitch
*
y
]
=
1
;
p
[
x1
-
h
+
pitch
*
y
]
=
1
;
p
[
x1
+
pitch
*
(
y2
-
h
)]
=
1
;
p
[
x1
-
h
+
pitch
*
(
y2
-
h
)]
=
1
;
}
}
}
...
...
@@ -122,28 +122,31 @@ static void DrawTriangle(subpicture_region_t *r, int fill,
*/
static
subpicture_region_t
*
OSDRegion
(
int
x
,
int
y
,
int
width
,
int
height
)
{
video_palette_t
palette
=
{
.
i_entries
=
2
,
.
palette
=
{
[
0
]
=
{
0xff
,
0x80
,
0x80
,
0x00
},
[
1
]
=
{
0xff
,
0x80
,
0x80
,
0xff
},
},
};
video_format_t
fmt
;
video_format_Init
(
&
fmt
,
VLC_CODEC_YUV
A
);
video_format_Init
(
&
fmt
,
VLC_CODEC_YUV
P
);
fmt
.
i_width
=
fmt
.
i_visible_width
=
width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
height
;
fmt
.
i_sar_num
=
1
;
fmt
.
i_sar_den
=
1
;
fmt
.
p_palette
=
&
palette
;
subpicture_region_t
*
r
=
subpicture_region_New
(
&
fmt
);
if
(
!
r
)
return
NULL
;
r
->
i_x
=
x
;
r
->
i_y
=
y
;
memset
(
r
->
p_picture
->
p
->
p_pixels
,
0
,
r
->
p_picture
->
p
->
i_pitch
*
height
);
for
(
int
i
=
0
;
i
<
r
->
p_picture
->
i_planes
;
i
++
)
{
plane_t
*
p
=
&
r
->
p_picture
->
p
[
i
];
int
colors
[
PICTURE_PLANE_MAX
]
=
{
0xff
,
0x80
,
0x80
,
0x00
};
memset
(
p
->
p_pixels
,
colors
[
i
],
p
->
i_pitch
*
height
);
}
return
r
;
}
...
...
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