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
1f382c03
Commit
1f382c03
authored
Mar 31, 2007
by
Antoine Cellerier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove trailing spaces.
parent
3558ffb0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
43 deletions
+43
-43
modules/video_filter/opencv_wrapper.c
modules/video_filter/opencv_wrapper.c
+43
-43
No files found.
modules/video_filter/opencv_wrapper.c
View file @
1f382c03
...
...
@@ -84,23 +84,23 @@ vlc_module_begin();
add_shortcut
(
"opencv_wrapper"
);
set_callbacks
(
Create
,
Destroy
);
add_float_with_range
(
"opencv-scale"
,
1
.
0
,
0
.
1
,
2
.
0
,
NULL
,
N_
(
"Scale factor (0.1-2.0)"
),
N_
(
"Ammount by which to scale the picture before sending it to the internal OpenCV filter"
),
N_
(
"Scale factor (0.1-2.0)"
),
N_
(
"Ammount by which to scale the picture before sending it to the internal OpenCV filter"
),
VLC_FALSE
);
add_string
(
"opencv-chroma"
,
"input"
,
NULL
,
N_
(
"OpenCV filter chroma"
),
N_
(
"OpenCV filter chroma"
),
N_
(
"Chroma to convert picture to before sending it to the internal OpenCV filter"
),
VLC_FALSE
);
change_string_list
(
chroma_list
,
chroma_list_text
,
0
);
add_string
(
"opencv-output"
,
"input"
,
NULL
,
N_
(
"Wrapper filter output"
),
N_
(
"Wrapper filter output"
),
N_
(
"Determines what (if any) video is displayed by the wrapper filter"
),
VLC_FALSE
);
change_string_list
(
output_list
,
output_list_text
,
0
);
add_string
(
"opencv-verbosity"
,
"error"
,
NULL
,
N_
(
"Wrapper filter verbosity"
),
N_
(
"Wrapper filter verbosity"
),
N_
(
"Determines wrapper filter verbosity level"
),
VLC_FALSE
);
change_string_list
(
verbosity_list
,
verbosity_list_text
,
0
);
add_string
(
"opencv-filter-name"
,
"none"
,
NULL
,
N_
(
"OpenCV internal filter name"
),
N_
(
"OpenCV internal filter name"
),
N_
(
"Name of internal OpenCV plugin filter to use"
),
VLC_FALSE
);
vlc_module_end
();
...
...
@@ -126,7 +126,7 @@ enum internal_chroma_t
};
/*****************************************************************************
* verbosity_t:
* verbosity_t:
*****************************************************************************/
enum
verbosity_t
{
...
...
@@ -134,7 +134,7 @@ enum verbosity_t
VERB_WARN
,
VERB_DEBUG
};
/*****************************************************************************
* vout_sys_t: opencv_wrapper video output method descriptor
*****************************************************************************
...
...
@@ -146,23 +146,23 @@ struct vout_sys_t
vout_thread_t
*
p_vout
;
image_handler_t
*
p_image
;
int
i_cv_image_size
;
picture_t
*
p_proc_image
;
picture_t
*
p_to_be_freed
;
float
f_scale
;
int
i_wrapper_output
;
int
i_internal_chroma
;
int
i_verbosity
;
IplImage
*
p_cv_image
[
VOUT_MAX_PLANES
];
filter_t
*
p_opencv
;
char
*
psz_inner_name
;
picture_t
hacked_pic
;
};
...
...
@@ -277,18 +277,18 @@ static int Create( vlc_object_t *p_this )
p_vout
->
p_sys
->
psz_inner_name
=
config_GetPsz
(
p_vout
,
"opencv-filter-name"
);
p_vout
->
p_sys
->
f_scale
=
p_vout
->
p_sys
->
f_scale
=
config_GetFloat
(
p_vout
,
"opencv-scale"
);
if
(
p_vout
->
p_sys
->
i_verbosity
>
VERB_WARN
)
msg_Info
(
p_vout
,
"Configuration: opencv-scale: %f, opencv-chroma: %d, "
"opencv-output: %d, opencv-verbosity %d, opencv-filter %s"
,
"opencv-output: %d, opencv-verbosity %d, opencv-filter %s"
,
p_vout
->
p_sys
->
f_scale
,
p_vout
->
p_sys
->
i_internal_chroma
,
p_vout
->
p_sys
->
i_wrapper_output
,
p_vout
->
p_sys
->
i_verbosity
,
p_vout
->
p_sys
->
psz_inner_name
);
return
VLC_SUCCESS
;
}
...
...
@@ -309,7 +309,7 @@ static int Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
p_vout
->
fmt_out
=
p_vout
->
fmt_in
;
//set to input video format
fmt
=
p_vout
->
fmt_out
;
if
(
p_sys
->
i_wrapper_output
==
PROCESSED
)
//set to processed video format
{
...
...
@@ -319,7 +319,7 @@ static int Init( vout_thread_t *p_vout )
fmt
.
i_visible_height
=
fmt
.
i_visible_height
*
p_sys
->
f_scale
;
fmt
.
i_x_offset
=
fmt
.
i_x_offset
*
p_sys
->
f_scale
;
fmt
.
i_y_offset
=
fmt
.
i_y_offset
*
p_sys
->
f_scale
;
if
(
p_sys
->
i_internal_chroma
==
GREY
)
fmt
.
i_chroma
=
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
);
else
if
(
p_sys
->
i_internal_chroma
==
RGB
)
...
...
@@ -330,11 +330,11 @@ static int Init( vout_thread_t *p_vout )
/* We don't need to set up video formats for this filter as it not actually using a picture_t */
p_sys
->
p_opencv
=
vlc_object_create
(
p_vout
,
sizeof
(
filter_t
)
);
vlc_object_attach
(
p_sys
->
p_opencv
,
p_vout
);
if
(
p_vout
->
p_sys
->
psz_inner_name
)
p_sys
->
p_opencv
->
p_module
=
module_Need
(
p_sys
->
p_opencv
,
p_sys
->
psz_inner_name
,
0
,
0
);
if
(
!
p_sys
->
p_opencv
->
p_module
)
{
msg_Err
(
p_vout
,
"can't open internal opencv filter: %s"
,
p_vout
->
p_sys
->
psz_inner_name
);
...
...
@@ -379,7 +379,7 @@ static void End( vout_thread_t *p_vout )
i_index
--
;
free
(
PP_OUTPUTPICTURE
[
i_index
]
->
p_data_orig
);
}
if
(
p_vout
->
p_sys
->
p_opencv
)
{
//release the internal opencv filter
...
...
@@ -389,7 +389,7 @@ static void End( vout_thread_t *p_vout )
vlc_object_destroy
(
p_vout
->
p_sys
->
p_opencv
);
p_vout
->
p_sys
->
p_opencv
=
NULL
;
}
}
/*****************************************************************************
...
...
@@ -414,7 +414,7 @@ static void Destroy( vlc_object_t *p_this )
if
(
p_vout
->
p_sys
->
p_image
)
image_HandlerDelete
(
p_vout
->
p_sys
->
p_image
);
free
(
p_vout
->
p_sys
);
}
...
...
@@ -434,7 +434,7 @@ static void ReleaseImages(vout_thread_t *p_vout)
}
}
p_vout
->
p_sys
->
i_cv_image_size
=
0
;
/* Release temp picture_t if it exists */
if
(
p_vout
->
p_sys
->
p_to_be_freed
)
{
...
...
@@ -454,51 +454,51 @@ static void ReleaseImages(vout_thread_t *p_vout)
static
void
VlcPictureToIplImage
(
vout_thread_t
*
p_vout
,
picture_t
*
p_in
)
{
int
planes
=
p_in
->
i_planes
;
//num input video planes
// input video size
// input video size
CvSize
sz
=
cvSize
(
abs
(
p_in
->
format
.
i_width
),
abs
(
p_in
->
format
.
i_height
));
video_format_t
fmt_out
=
{
0
};
clock_t
start
,
finish
;
//performance measures
double
duration
;
int
i
=
0
;
vout_sys_t
*
p_sys
=
p_vout
->
p_sys
;
start
=
clock
();
//do scale / color conversion according to p_sys config
if
((
p_sys
->
f_scale
!=
1
)
||
(
p_sys
->
i_internal_chroma
!=
CINPUT
))
{
fmt_out
=
p_in
->
format
;
//calc the scaled video size
fmt_out
.
i_width
=
p_in
->
format
.
i_width
*
p_sys
->
f_scale
;
fmt_out
.
i_height
=
p_in
->
format
.
i_height
*
p_sys
->
f_scale
;
fmt_out
.
i_height
=
p_in
->
format
.
i_height
*
p_sys
->
f_scale
;
if
(
p_sys
->
i_internal_chroma
==
RGB
)
{
//rgb2 gives 3 separate planes, this gives 1 interleaved plane
//rv24 gives is about 20% faster but gives r&b the wrong way round
//rv24 gives is about 20% faster but gives r&b the wrong way round
//and I cant think of an easy way to fix this
fmt_out
.
i_chroma
=
VLC_FOURCC
(
'R'
,
'V'
,
'3'
,
'2'
);
fmt_out
.
i_chroma
=
VLC_FOURCC
(
'R'
,
'V'
,
'3'
,
'2'
);
}
else
if
(
p_sys
->
i_internal_chroma
==
GREY
)
{
//take the I (gray) plane (video seems to commonly be in this fmt so usually the
//take the I (gray) plane (video seems to commonly be in this fmt so usually the
//conversion does nothing)
fmt_out
.
i_chroma
=
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
);
fmt_out
.
i_chroma
=
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
);
}
//convert from the input image
p_sys
->
p_proc_image
=
image_Convert
(
p_sys
->
p_image
,
p_in
,
&
(
p_in
->
format
),
&
fmt_out
);
if
(
!
p_sys
->
p_proc_image
)
{
msg_Err
(
p_vout
,
"can't convert (unsupported formats?), aborting..."
);
return
;
}
}
p_sys
->
p_to_be_freed
=
p_sys
->
p_proc_image
;
//remember this so we can free it later
}
else
//((p_sys->f_scale != 1) || (p_sys->i_internal_chroma != CINPUT))
{
...
...
@@ -509,22 +509,22 @@ static void VlcPictureToIplImage( vout_thread_t *p_vout, picture_t *p_in )
//Convert to the IplImage array that is to be processed.
//If there are multiple planes in p_sys->p_proc_image, then 1 IplImage
//is created for each plane.
planes
=
p_sys
->
p_proc_image
->
i_planes
;
planes
=
p_sys
->
p_proc_image
->
i_planes
;
p_sys
->
i_cv_image_size
=
planes
;
for
(
i
=
0
;
i
<
planes
;
i
++
)
{
sz
=
cvSize
(
abs
(
p_sys
->
p_proc_image
->
p
[
i
].
i_visible_pitch
/
p_sys
->
p_proc_image
->
p
[
i
].
i_pixel_pitch
),
sz
=
cvSize
(
abs
(
p_sys
->
p_proc_image
->
p
[
i
].
i_visible_pitch
/
p_sys
->
p_proc_image
->
p
[
i
].
i_pixel_pitch
),
abs
(
p_sys
->
p_proc_image
->
p
[
i
].
i_visible_lines
));
p_sys
->
p_cv_image
[
i
]
=
cvCreateImageHeader
(
sz
,
IPL_DEPTH_8U
,
p_sys
->
p_cv_image
[
i
]
=
cvCreateImageHeader
(
sz
,
IPL_DEPTH_8U
,
p_sys
->
p_proc_image
->
p
[
i
].
i_pixel_pitch
);
cvSetData
(
p_sys
->
p_cv_image
[
i
],
cvSetData
(
p_sys
->
p_cv_image
[
i
],
(
char
*
)(
p_sys
->
p_proc_image
->
p
[
i
].
p_pixels
),
p_sys
->
p_proc_image
->
p
[
i
].
i_pitch
);
}
//Hack the above opencv image array into a picture_t so that it can be sent to
//Hack the above opencv image array into a picture_t so that it can be sent to
//another video filter
p_sys
->
hacked_pic
.
p_data_orig
=
p_sys
->
p_cv_image
;
p_sys
->
hacked_pic
.
i_planes
=
planes
;
...
...
@@ -581,7 +581,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
//copy the processed image into the output image
if
((
p_vout
->
p_sys
->
p_proc_image
)
&&
(
p_vout
->
p_sys
->
p_proc_image
->
p_data
))
vout_CopyPicture
(
p_vout
,
p_outpic
,
p_vout
->
p_sys
->
p_proc_image
);
}
}
//calculate duration
finish
=
clock
();
...
...
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