mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
gst-play: add --start-position command line argument
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1126>
This commit is contained in:
parent
b14347041a
commit
a7114f4b88
1 changed files with 12 additions and 3 deletions
|
@ -102,6 +102,7 @@ typedef struct
|
||||||
|
|
||||||
GstPlayTrickMode trick_mode;
|
GstPlayTrickMode trick_mode;
|
||||||
gdouble rate;
|
gdouble rate;
|
||||||
|
gdouble start_position;
|
||||||
} GstPlay;
|
} GstPlay;
|
||||||
|
|
||||||
static gboolean quiet = FALSE;
|
static gboolean quiet = FALSE;
|
||||||
|
@ -151,7 +152,7 @@ gst_play_printf (const gchar * format, ...)
|
||||||
static GstPlay *
|
static GstPlay *
|
||||||
play_new (gchar ** uris, const gchar * audio_sink, const gchar * video_sink,
|
play_new (gchar ** uris, const gchar * audio_sink, const gchar * video_sink,
|
||||||
gboolean gapless, gdouble initial_volume, gboolean verbose,
|
gboolean gapless, gdouble initial_volume, gboolean verbose,
|
||||||
const gchar * flags_string, gboolean use_playbin3)
|
const gchar * flags_string, gboolean use_playbin3, gdouble start_position)
|
||||||
{
|
{
|
||||||
GstElement *sink, *playbin;
|
GstElement *sink, *playbin;
|
||||||
GstPlay *play;
|
GstPlay *play;
|
||||||
|
@ -251,7 +252,7 @@ play_new (gchar ** uris, const gchar * audio_sink, const gchar * video_sink,
|
||||||
|
|
||||||
play->rate = 1.0;
|
play->rate = 1.0;
|
||||||
play->trick_mode = GST_PLAY_TRICK_MODE_NONE;
|
play->trick_mode = GST_PLAY_TRICK_MODE_NONE;
|
||||||
|
play->start_position = start_position;
|
||||||
return play;
|
return play;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,6 +358,11 @@ play_bus_msg (GstBus * bus, GstMessage * msg, gpointer user_data)
|
||||||
--play->cur_idx;
|
--play->cur_idx;
|
||||||
play_next (play);
|
play_next (play);
|
||||||
}
|
}
|
||||||
|
if (play->start_position > 0.0) {
|
||||||
|
play_do_seek (play, play->start_position * GST_SECOND,
|
||||||
|
play->rate, play->trick_mode);
|
||||||
|
play->start_position = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GST_MESSAGE_BUFFERING:{
|
case GST_MESSAGE_BUFFERING:{
|
||||||
gint percent;
|
gint percent;
|
||||||
|
@ -1469,6 +1475,7 @@ main (int argc, char **argv)
|
||||||
gboolean gapless = FALSE;
|
gboolean gapless = FALSE;
|
||||||
gboolean shuffle = FALSE;
|
gboolean shuffle = FALSE;
|
||||||
gdouble volume = -1;
|
gdouble volume = -1;
|
||||||
|
gdouble start_position = 0;
|
||||||
gchar **filenames = NULL;
|
gchar **filenames = NULL;
|
||||||
gchar *audio_sink = NULL;
|
gchar *audio_sink = NULL;
|
||||||
gchar *video_sink = NULL;
|
gchar *video_sink = NULL;
|
||||||
|
@ -1500,6 +1507,8 @@ main (int argc, char **argv)
|
||||||
N_("Disable interactive control via the keyboard"), NULL},
|
N_("Disable interactive control via the keyboard"), NULL},
|
||||||
{"volume", 0, 0, G_OPTION_ARG_DOUBLE, &volume,
|
{"volume", 0, 0, G_OPTION_ARG_DOUBLE, &volume,
|
||||||
N_("Volume"), NULL},
|
N_("Volume"), NULL},
|
||||||
|
{"start-position", 's', 0, G_OPTION_ARG_DOUBLE, &start_position,
|
||||||
|
N_("Start position in seconds."), NULL},
|
||||||
{"playlist", 0, 0, G_OPTION_ARG_FILENAME, &playlist_file,
|
{"playlist", 0, 0, G_OPTION_ARG_FILENAME, &playlist_file,
|
||||||
N_("Playlist file containing input media files"), NULL},
|
N_("Playlist file containing input media files"), NULL},
|
||||||
{"instant-rate-changes", 'i', 0, G_OPTION_ARG_NONE, &instant_rate_changes,
|
{"instant-rate-changes", 'i', 0, G_OPTION_ARG_NONE, &instant_rate_changes,
|
||||||
|
@ -1626,7 +1635,7 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
/* prepare */
|
/* prepare */
|
||||||
play = play_new (uris, audio_sink, video_sink, gapless, volume, verbose,
|
play = play_new (uris, audio_sink, video_sink, gapless, volume, verbose,
|
||||||
flags, use_playbin3);
|
flags, use_playbin3, start_position);
|
||||||
|
|
||||||
if (play == NULL) {
|
if (play == NULL) {
|
||||||
gst_printerr
|
gst_printerr
|
||||||
|
|
Loading…
Reference in a new issue