Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
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