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-bad
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
Justin Kim
gst-plugins-bad
Commits
454409da
Commit
454409da
authored
Sep 26, 2017
by
Justin Kim
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ahc2src: implement color_tone
Signed-off-by:
Justin Kim
<
justin.kim@collabora.com
>
parent
a04142e4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
127 additions
and
0 deletions
+127
-0
sys/androidmedia/gstahc2src.c
sys/androidmedia/gstahc2src.c
+127
-0
No files found.
sys/androidmedia/gstahc2src.c
View file @
454409da
...
...
@@ -215,6 +215,119 @@ gst_ahc2_src_get_capabilities (GstPhotography * photo)
return
caps
;
}
static
gboolean
gst_ahc2_src_get_color_tone_mode
(
GstPhotography
*
photo
,
GstPhotographyColorToneMode
*
tone_mode
)
{
GstAHC2Src
*
self
=
GST_AHC2_SRC
(
photo
);
GstAHC2SrcPrivate
*
priv
=
GST_AHC2_SRC_GET_PRIVATE
(
self
);
ACameraMetadata_const_entry
entry
;
g_return_val_if_fail
(
priv
->
capture_request
!=
NULL
,
FALSE
);
if
(
ACaptureRequest_getConstEntry
(
priv
->
capture_request
,
ACAMERA_CONTROL_EFFECT_MODE
,
&
entry
)
!=
ACAMERA_OK
)
{
GST_WARNING_OBJECT
(
self
,
"Failed to get EFFECT MODE"
);
return
FALSE
;
}
switch
(
entry
.
data
.
u8
[
0
])
{
case
ACAMERA_CONTROL_EFFECT_MODE_OFF
:
*
tone_mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_NORMAL
;
break
;
case
ACAMERA_CONTROL_EFFECT_MODE_MONO
:
*
tone_mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRAYSCALE
;
break
;
case
ACAMERA_CONTROL_EFFECT_MODE_NEGATIVE
:
*
tone_mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEGATIVE
;
break
;
case
ACAMERA_CONTROL_EFFECT_MODE_SOLARIZE
:
*
tone_mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_SOLARIZE
;
break
;
case
ACAMERA_CONTROL_EFFECT_MODE_SEPIA
:
*
tone_mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_SEPIA
;
break
;
case
ACAMERA_CONTROL_EFFECT_MODE_POSTERIZE
:
*
tone_mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_POSTERIZE
;
break
;
case
ACAMERA_CONTROL_EFFECT_MODE_WHITEBOARD
:
*
tone_mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_WHITEBOARD
;
break
;
case
ACAMERA_CONTROL_EFFECT_MODE_BLACKBOARD
:
*
tone_mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_BLACKBOARD
;
break
;
case
ACAMERA_CONTROL_EFFECT_MODE_AQUA
:
*
tone_mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_AQUA
;
break
;
default:
g_assert_not_reached
();
break
;
}
return
TRUE
;
}
static
gboolean
gst_ahc2_src_set_color_tone_mode
(
GstPhotography
*
photo
,
GstPhotographyColorToneMode
tone_mode
)
{
GstAHC2Src
*
self
=
GST_AHC2_SRC
(
photo
);
GstAHC2SrcPrivate
*
priv
=
GST_AHC2_SRC_GET_PRIVATE
(
self
);
guint8
mode
;
g_return_val_if_fail
(
priv
->
capture_request
!=
NULL
,
FALSE
);
switch
(
tone_mode
)
{
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_NORMAL
:
mode
=
ACAMERA_CONTROL_EFFECT_MODE_OFF
;
break
;
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_SEPIA
:
mode
=
ACAMERA_CONTROL_EFFECT_MODE_SEPIA
;
break
;
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEGATIVE
:
mode
=
ACAMERA_CONTROL_EFFECT_MODE_NEGATIVE
;
break
;
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRAYSCALE
:
mode
=
ACAMERA_CONTROL_EFFECT_MODE_MONO
;
break
;
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_SOLARIZE
:
mode
=
ACAMERA_CONTROL_EFFECT_MODE_SOLARIZE
;
break
;
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_POSTERIZE
:
mode
=
GST_PHOTOGRAPHY_COLOR_TONE_MODE_POSTERIZE
;
break
;
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_WHITEBOARD
:
mode
=
ACAMERA_CONTROL_EFFECT_MODE_WHITEBOARD
;
break
;
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_BLACKBOARD
:
mode
=
ACAMERA_CONTROL_EFFECT_MODE_BLACKBOARD
;
break
;
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_AQUA
:
mode
=
ACAMERA_CONTROL_EFFECT_MODE_AQUA
;
break
;
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_NATURAL
:
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_VIVID
:
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_COLORSWAP
:
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_OUT_OF_FOCUS
:
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKY_BLUE
:
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRASS_GREEN
:
case
GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKIN_WHITEN
:
default:
GST_WARNING_OBJECT
(
self
,
"Unsupported color tone (%d)"
,
tone_mode
);
return
FALSE
;
}
ACameraCaptureSession_stopRepeating
(
priv
->
camera_capture_session
);
ACaptureRequest_setEntry_u8
(
priv
->
capture_request
,
ACAMERA_CONTROL_EFFECT_MODE
,
1
,
&
mode
);
ACameraCaptureSession_setRepeatingRequest
(
priv
->
camera_capture_session
,
NULL
,
1
,
&
priv
->
capture_request
,
NULL
);
return
TRUE
;
}
static
void
gst_ahc2_src_set_autofocus
(
GstPhotography
*
photo
,
gboolean
on
)
{
...
...
@@ -1120,6 +1233,11 @@ gst_ahc2_src_set_property (GObject * object,
case
PROP_MAX_IMAGES
:
priv
->
max_images
=
g_value_get_int
(
value
);
break
;
case
PROP_COLOR_TONE_MODE
:
{
GstPhotographyColorToneMode
tone
=
g_value_get_enum
(
value
);
gst_ahc2_src_set_color_tone_mode
(
GST_PHOTOGRAPHY
(
self
),
tone
);
break
;
}
case
PROP_EV_COMPENSATION
:
{
gfloat
ev
=
g_value_get_float
(
value
);
gst_ahc2_src_set_ev_compensation
(
GST_PHOTOGRAPHY
(
self
),
ev
);
...
...
@@ -1176,6 +1294,12 @@ gst_ahc2_src_get_property (GObject * object,
break
;
}
case
PROP_COLOR_TONE_MODE
:
{
GstPhotographyColorToneMode
tone
;
if
(
gst_ahc2_src_get_color_tone_mode
(
GST_PHOTOGRAPHY
(
self
),
&
tone
))
g_value_set_enum
(
value
,
tone
);
break
;
}
case
PROP_EV_COMPENSATION
:
{
gfloat
ev
;
...
...
@@ -1661,6 +1785,9 @@ gst_ahc2_src_photography_init (gpointer g_iface, gpointer iface_data)
iface
->
get_capabilities
=
gst_ahc2_src_get_capabilities
;
iface
->
get_color_tone_mode
=
gst_ahc2_src_get_color_tone_mode
;
iface
->
set_color_tone_mode
=
gst_ahc2_src_set_color_tone_mode
;
iface
->
set_autofocus
=
gst_ahc2_src_set_autofocus
;
iface
->
get_focus_mode
=
gst_ahc2_src_get_focus_mode
;
iface
->
set_focus_mode
=
gst_ahc2_src_set_focus_mode
;
...
...
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