Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gst-plugins-good
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
George Kiagiadakis
gst-plugins-good
Commits
d4c24cc5
Commit
d4c24cc5
authored
Mar 20, 2014
by
Nicolas Dufresne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
v4l2transform: Setup cropping if needed
parent
2676ac90
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
46 additions
and
4 deletions
+46
-4
sys/v4l2/gstv4l2object.c
sys/v4l2/gstv4l2object.c
+33
-0
sys/v4l2/gstv4l2object.h
sys/v4l2/gstv4l2object.h
+2
-0
sys/v4l2/gstv4l2transform.c
sys/v4l2/gstv4l2transform.c
+11
-4
No files found.
sys/v4l2/gstv4l2object.c
View file @
d4c24cc5
...
...
@@ -2825,6 +2825,39 @@ unsupported_format:
}
}
gboolean
gst_v4l2_object_set_crop
(
GstV4l2Object
*
obj
)
{
struct
v4l2_crop
crop
=
{
0
};
crop
.
type
=
obj
->
type
;
crop
.
c
.
left
=
obj
->
align
.
padding_left
;
crop
.
c
.
top
=
obj
->
align
.
padding_top
;
crop
.
c
.
width
=
obj
->
info
.
width
;
crop
.
c
.
height
=
obj
->
info
.
height
;
if
(
obj
->
align
.
padding_left
+
obj
->
align
.
padding_top
+
obj
->
align
.
padding_right
+
obj
->
align
.
padding_bottom
==
0
)
{
GST_DEBUG_OBJECT
(
obj
->
element
,
"no cropping needed"
);
return
TRUE
;
}
GST_DEBUG_OBJECT
(
obj
->
element
,
"Desired cropping left %u, top %u, size %ux%u"
,
crop
.
c
.
left
,
crop
.
c
.
top
,
crop
.
c
.
width
,
crop
.
c
.
height
);
if
(
v4l2_ioctl
(
obj
->
video_fd
,
VIDIOC_S_CROP
,
&
crop
)
<
0
)
{
GST_WARNING_OBJECT
(
obj
->
element
,
"VIDIOC_S_CROP failed"
);
return
FALSE
;
}
GST_DEBUG_OBJECT
(
obj
->
element
,
"Got cropping left %u, top %u, size %ux%u"
,
crop
.
c
.
left
,
crop
.
c
.
top
,
crop
.
c
.
width
,
crop
.
c
.
height
);
return
TRUE
;
}
gboolean
gst_v4l2_object_caps_equal
(
GstV4l2Object
*
v4l2object
,
GstCaps
*
caps
)
{
...
...
sys/v4l2/gstv4l2object.h
View file @
d4c24cc5
...
...
@@ -262,6 +262,8 @@ GstCaps * gst_v4l2_object_get_caps (GstV4l2Object * v4l2object,
gboolean
gst_v4l2_object_acquire_format
(
GstV4l2Object
*
v4l2object
,
GstVideoInfo
*
info
);
gboolean
gst_v4l2_object_set_crop
(
GstV4l2Object
*
obj
);
gboolean
gst_v4l2_object_decide_allocation
(
GstV4l2Object
*
v4l2object
,
GstQuery
*
query
);
...
...
sys/v4l2/gstv4l2transform.c
View file @
d4c24cc5
...
...
@@ -209,23 +209,30 @@ gst_v4l2_transform_set_caps (GstBaseTransform * trans, GstCaps * incaps,
if
(
!
gst_v4l2_object_set_format
(
self
->
v4l2capture
,
outcaps
))
goto
outcaps_failed
;
return
TRUE
;
/* FIXME implement fallback if crop not supported */
if
(
!
gst_v4l2_object_set_crop
(
self
->
v4l2output
))
goto
failed
;
if
(
!
gst_v4l2_object_set_crop
(
self
->
v4l2capture
))
goto
failed
;
return
TRUE
;
incaps_failed:
{
GST_ERROR_OBJECT
(
self
,
"failed to set input caps: %"
GST_PTR_FORMAT
,
incaps
);
return
FALSE
;
goto
failed
;
}
outcaps_failed:
{
gst_v4l2_object_stop
(
self
->
v4l2output
);
GST_ERROR_OBJECT
(
self
,
"failed to set output caps: %"
GST_PTR_FORMAT
,
outcaps
);
return
FALSE
;
goto
failed
;
}
failed:
return
FALSE
;
}
static
gboolean
...
...
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