summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2021-09-26 21:23:24 +0100
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2021-09-26 21:23:24 +0100
commit2ce7feb3d5e1a0ee1a517aa87a10060924e014ff (patch)
tree5394e4680dd521e4a5dbf150e3042e8107bf8380 /src
parentec527a9026a78ee57ccaff42a46554e6cc39574e (diff)
downloadefl-2ce7feb3d5e1a0ee1a517aa87a10060924e014ff.tar.gz
emotion - properly track subtitle mute state and init emotion obj early
fix setting things on an emotion obj early bu initting engine early and also track spu mute flags to set on pipe later @fix
Diffstat (limited to 'src')
-rw-r--r--src/lib/emotion/emotion_smart.c7
-rw-r--r--src/modules/emotion/gstreamer1/emotion_gstreamer.c18
-rw-r--r--src/modules/emotion/gstreamer1/emotion_gstreamer.h1
3 files changed, 16 insertions, 10 deletions
diff --git a/src/lib/emotion/emotion_smart.c b/src/lib/emotion/emotion_smart.c
index e8c22e912c..3dc5dd4270 100644
--- a/src/lib/emotion/emotion_smart.c
+++ b/src/lib/emotion/emotion_smart.c
@@ -242,12 +242,17 @@ emotion_object_add(Evas *evas)
}
EOLIAN static Eo *
-_efl_canvas_video_efl_object_constructor(Eo *obj, Efl_Canvas_Video_Data *pd EINA_UNUSED)
+_efl_canvas_video_efl_object_constructor(Eo *obj, Efl_Canvas_Video_Data *pd)
{
efl_canvas_group_clipped_set(obj, EINA_TRUE);
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, E_OBJ_NAME);
+ eina_stringshare_replace(&(pd->engine), "gstreamer1");
+ pd->spu.button = -1;
+ pd->ratio = 1.0;
+ _engine_init(obj, pd);
+
return obj;
}
diff --git a/src/modules/emotion/gstreamer1/emotion_gstreamer.c b/src/modules/emotion/gstreamer1/emotion_gstreamer.c
index 2def4d70d3..b96478d02e 100644
--- a/src/modules/emotion/gstreamer1/emotion_gstreamer.c
+++ b/src/modules/emotion/gstreamer1/emotion_gstreamer.c
@@ -922,15 +922,13 @@ em_spu_channel_mute_set(void *video, int mute)
Emotion_Gstreamer *ev = video;
gint flags;
+ ev->spu_mute = !!mute;
+
if (!ev->pipeline) return;
g_object_get(ev->pipeline, "flags", &flags, NULL);
-
- if (mute)
- flags &= ~GST_PLAY_FLAG_TEXT;
- else
- flags |= GST_PLAY_FLAG_TEXT;
-
+ if (ev->spu_mute) flags &= ~GST_PLAY_FLAG_TEXT;
+ else flags |= GST_PLAY_FLAG_TEXT;
g_object_set(ev->pipeline, "flags", flags, NULL);
}
@@ -1113,10 +1111,11 @@ em_add(const Emotion_Engine *api,
/* Default values */
ev->vis = EMOTION_VIS_NONE;
- ev->volume = 0.8;
+ ev->volume = 1.0;
ev->ready = EINA_FALSE;
ev->shutdown = EINA_FALSE;
ev->threads = NULL;
+ ev->spu_mute = EINA_TRUE;
return ev;
}
@@ -1772,8 +1771,9 @@ _create_pipeline(Emotion_Gstreamer *ev,
g_object_set(G_OBJECT(vsink), "emotion-object", o, NULL);
g_object_get(G_OBJECT(playbin), "flags", &flags, NULL);
- g_object_set(G_OBJECT(playbin), "flags",
- (flags | GST_PLAY_FLAG_DOWNLOAD) & ~GST_PLAY_FLAG_TEXT, NULL);
+ if (ev->spu_mute) flags &= ~GST_PLAY_FLAG_TEXT;
+ else flags |= GST_PLAY_FLAG_TEXT;
+ g_object_set(G_OBJECT(playbin), "flags", (flags | GST_PLAY_FLAG_DOWNLOAD), NULL);
g_object_set(G_OBJECT(playbin), "video-sink", vsink, NULL);
g_object_set(G_OBJECT(playbin), "uri", uri, NULL);
if (suburi)
diff --git a/src/modules/emotion/gstreamer1/emotion_gstreamer.h b/src/modules/emotion/gstreamer1/emotion_gstreamer.h
index 2469ef28d4..fd5e24fde7 100644
--- a/src/modules/emotion/gstreamer1/emotion_gstreamer.h
+++ b/src/modules/emotion/gstreamer1/emotion_gstreamer.h
@@ -87,6 +87,7 @@ struct _Emotion_Gstreamer
Eina_Bool play : 1;
Eina_Bool video_mute : 1;
Eina_Bool audio_mute : 1;
+ Eina_Bool spu_mute : 1;
Eina_Bool ready : 1;
Eina_Bool live : 1;
Eina_Bool buffering : 1;