Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
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-gpu
Commits
a974af8d
Commit
a974af8d
authored
Jun 04, 2009
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added blend filter helpers.
parent
09a08687
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
136 additions
and
0 deletions
+136
-0
include/vlc_filter.h
include/vlc_filter.h
+23
-0
src/Makefile.am
src/Makefile.am
+1
-0
src/libvlccore.sym
src/libvlccore.sym
+4
-0
src/misc/filter.c
src/misc/filter.c
+108
-0
No files found.
include/vlc_filter.h
View file @
a974af8d
...
...
@@ -181,6 +181,29 @@ static inline block_t *filter_NewAudioBuffer( filter_t *p_filter, int i_size )
return
p_block
;
}
/**
* It creates a blend filter
*/
VLC_EXPORT
(
filter_t
*
,
filter_NewBlend
,
(
vlc_object_t
*
,
vlc_fourcc_t
i_chroma_dst
)
);
/**
* It configures blend filter parameters that are allowed to changed
* after the creation.
*/
VLC_EXPORT
(
int
,
filter_ConfigureBlend
,
(
filter_t
*
,
int
i_dst_width
,
int
i_dst_height
,
const
video_format_t
*
p_src
)
);
/**
* It blends a picture into another one.
*
* The input picture is not modified and not released.
*/
VLC_EXPORT
(
int
,
filter_Blend
,
(
filter_t
*
,
picture_t
*
p_dst
,
int
i_dst_x
,
int
i_dst_y
,
picture_t
*
p_src
,
int
i_alpha
)
);
/**
* It destroys a blend filter created by filter_NewBlend.
*/
VLC_EXPORT
(
void
,
filter_DeleteBlend
,
(
filter_t
*
)
);
/**
* Create a picture_t *(*)( filter_t *, picture_t * ) compatible wrapper
* using a void (*)( filter_t *, picture_t *, picture_t * ) function
...
...
src/Makefile.am
View file @
a974af8d
...
...
@@ -409,6 +409,7 @@ SOURCES_libvlc_common = \
misc/xml.c
\
misc/devices.c
\
extras/libc.c
\
misc/filter.c
\
misc/filter_chain.c
\
$(NULL)
...
...
src/libvlccore.sym
View file @
a974af8d
...
...
@@ -122,6 +122,7 @@ es_format_Clean
es_format_Copy
es_format_Init
filename_sanitize
filter_Blend
filter_chain_AppendFilter
filter_chain_AppendFromString
filter_chain_AudioFilter
...
...
@@ -135,6 +136,9 @@ __filter_chain_New
filter_chain_Reset
filter_chain_SubFilter
filter_chain_VideoFilter
filter_ConfigureBlend
filter_DeleteBlend
filter_NewBlend
FromLocale
FromLocaleDup
GetFallbackEncoding
...
...
src/misc/filter.c
0 → 100644
View file @
a974af8d
/*****************************************************************************
* filter.c : filter_t helpers.
*****************************************************************************
* Copyright (C) 2009 Laurent Aimar
* $Id$
*
* Author: Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <vlc_common.h>
#include <libvlc.h>
#include <vlc_filter.h>
filter_t
*
filter_NewBlend
(
vlc_object_t
*
p_this
,
vlc_fourcc_t
i_chroma_dst
)
{
filter_t
*
p_blend
=
vlc_custom_create
(
p_this
,
sizeof
(
*
p_blend
),
VLC_OBJECT_GENERIC
,
"blend"
);
if
(
!
p_blend
)
return
NULL
;
es_format_Init
(
&
p_blend
->
fmt_in
,
VIDEO_ES
,
0
);
es_format_Init
(
&
p_blend
->
fmt_out
,
VIDEO_ES
,
0
);
p_blend
->
fmt_out
.
i_codec
=
p_blend
->
fmt_out
.
video
.
i_chroma
=
i_chroma_dst
;
/* The blend module will be loaded when needed with the real
* input format */
p_blend
->
p_module
=
NULL
;
/* */
vlc_object_attach
(
p_blend
,
p_this
);
return
p_blend
;
}
int
filter_ConfigureBlend
(
filter_t
*
p_blend
,
int
i_dst_width
,
int
i_dst_height
,
const
video_format_t
*
p_src
)
{
/* */
if
(
p_blend
->
p_module
&&
p_blend
->
fmt_in
.
video
.
i_chroma
!=
p_src
->
i_chroma
)
{
/* The chroma is not the same, we need to reload the blend module */
module_unneed
(
p_blend
,
p_blend
->
p_module
);
p_blend
->
p_module
=
NULL
;
}
/* */
p_blend
->
fmt_in
.
i_codec
=
p_src
->
i_chroma
;
p_blend
->
fmt_in
.
video
=
*
p_src
;
/* */
p_blend
->
fmt_out
.
video
.
i_width
=
p_blend
->
fmt_out
.
video
.
i_visible_width
=
i_dst_width
;
p_blend
->
fmt_out
.
video
.
i_height
=
p_blend
->
fmt_out
.
video
.
i_visible_height
=
i_dst_height
;
/* */
if
(
!
p_blend
->
p_module
)
p_blend
->
p_module
=
module_need
(
p_blend
,
"video blending"
,
NULL
,
false
);
if
(
!
p_blend
->
p_module
)
return
VLC_EGENERIC
;
return
VLC_SUCCESS
;
}
int
filter_Blend
(
filter_t
*
p_blend
,
picture_t
*
p_dst
,
int
i_dst_x
,
int
i_dst_y
,
picture_t
*
p_src
,
int
i_alpha
)
{
if
(
!
p_blend
->
p_module
)
return
VLC_EGENERIC
;
p_blend
->
pf_video_blend
(
p_blend
,
p_dst
,
p_src
,
i_dst_x
,
i_dst_y
,
i_alpha
);
return
VLC_SUCCESS
;
}
void
filter_DeleteBlend
(
filter_t
*
p_blend
)
{
if
(
p_blend
->
p_module
)
module_unneed
(
p_blend
,
p_blend
->
p_module
);
vlc_object_detach
(
p_blend
);
vlc_object_release
(
p_blend
);
}
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