forked from enlightenment/efl
gst loader - support key as stream position in 1/1000th of a second
This commit is contained in:
parent
20c029e1b9
commit
2092f31170
|
@ -45,7 +45,7 @@ _gst_init(const char *filename)
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
GstFormat format;
|
GstFormat format;
|
||||||
GstStateChangeReturn ret;
|
GstStateChangeReturn ret;
|
||||||
int vidstr = 0;
|
// int vidstr = 0;
|
||||||
|
|
||||||
if (!filename || !*filename)
|
if (!filename || !*filename)
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
@ -164,13 +164,17 @@ _gst_shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_gst_load_image(int size_w EINA_UNUSED, int size_h EINA_UNUSED)
|
_gst_load_image(int size_w EINA_UNUSED, int size_h EINA_UNUSED, double pos)
|
||||||
{
|
{
|
||||||
GstBuffer *buffer;
|
GstBuffer *buffer;
|
||||||
|
|
||||||
D("load image\n");
|
D("load image\n");
|
||||||
gst_element_seek_simple(pipeline, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,
|
if (pos >= 0.0)
|
||||||
duration / 2);
|
gst_element_seek_simple(pipeline, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,
|
||||||
|
pos * 1000000000.0);
|
||||||
|
else
|
||||||
|
gst_element_seek_simple(pipeline, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,
|
||||||
|
duration / 2);
|
||||||
g_signal_emit_by_name(sink, "pull-preroll", &buffer, NULL);
|
g_signal_emit_by_name(sink, "pull-preroll", &buffer, NULL);
|
||||||
D("load image : %p %d\n", GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer));
|
D("load image : %p %d\n", GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer));
|
||||||
|
|
||||||
|
@ -184,11 +188,11 @@ _gst_load_image(int size_w EINA_UNUSED, int size_h EINA_UNUSED)
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
char *file;
|
char *file, *p;
|
||||||
int i;
|
int i, numonly;
|
||||||
int size_w = 0, size_h = 0;
|
int size_w = 0, size_h = 0;
|
||||||
int head_only = 0;
|
int head_only = 0;
|
||||||
int page = 0;
|
long long pos = -1.0;
|
||||||
|
|
||||||
if (argc < 2) return -1;
|
if (argc < 2) return -1;
|
||||||
// file is ALWAYS first arg, other options come after
|
// file is ALWAYS first arg, other options come after
|
||||||
|
@ -201,7 +205,16 @@ main(int argc, char **argv)
|
||||||
else if (!strcmp(argv[i], "-key"))
|
else if (!strcmp(argv[i], "-key"))
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
page = atoi(argv[i]);
|
numonly = 1;
|
||||||
|
for (p = argv[i]; *p; p++)
|
||||||
|
{
|
||||||
|
if ((!*p < '0') || (*p > 9))
|
||||||
|
{
|
||||||
|
numonly = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (numonly) pos = (double)(atoll(argv[i])) / 1000.0;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else if (!strcmp(argv[i], "-opt-scale-down-by"))
|
else if (!strcmp(argv[i], "-opt-scale-down-by"))
|
||||||
|
@ -232,7 +245,7 @@ main(int argc, char **argv)
|
||||||
|
|
||||||
if (!head_only)
|
if (!head_only)
|
||||||
{
|
{
|
||||||
_gst_load_image(size_w, size_h);
|
_gst_load_image(size_w, size_h, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
D("size...: %ix%i\n", width, height);
|
D("size...: %ix%i\n", width, height);
|
||||||
|
|
Loading…
Reference in New Issue