mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 02:01:12 +00:00
nlecomposition: Fix seeking with stop
And add some tests Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/166>
This commit is contained in:
parent
f30a127776
commit
7bef18169a
12 changed files with 622 additions and 41 deletions
|
@ -267,7 +267,7 @@ static gboolean _nle_composition_remove_object (NleComposition * comp,
|
|||
NleObject * object);
|
||||
static void _deactivate_stack (NleComposition * comp,
|
||||
NleUpdateStackReason reason);
|
||||
static gboolean _set_real_eos_seqnum_from_seek (NleComposition * comp,
|
||||
static void _set_real_eos_seqnum_from_seek (NleComposition * comp,
|
||||
GstEvent * event);
|
||||
static void _emit_commited_signal_func (NleComposition * comp, gpointer udata);
|
||||
static void _restart_task (NleComposition * comp);
|
||||
|
@ -2772,6 +2772,8 @@ update_start_stop_duration (NleComposition * comp)
|
|||
{
|
||||
NleObject *obj;
|
||||
NleObject *cobj = (NleObject *) comp;
|
||||
gboolean reverse = (comp->priv->segment->rate < 0);
|
||||
GstClockTime prev_stop = NLE_OBJECT_STOP (comp);
|
||||
NleCompositionPrivate *priv = comp->priv;
|
||||
|
||||
_assert_proper_thread (comp);
|
||||
|
@ -2843,7 +2845,9 @@ update_start_stop_duration (NleComposition * comp)
|
|||
}
|
||||
}
|
||||
|
||||
priv->segment->stop = obj->stop;
|
||||
if (reverse || priv->segment->stop == prev_stop
|
||||
|| obj->stop < priv->segment->stop)
|
||||
priv->segment->stop = obj->stop;
|
||||
cobj->stop = obj->stop;
|
||||
g_object_notify_by_pspec (G_OBJECT (cobj),
|
||||
nleobject_properties[NLEOBJECT_PROP_STOP]);
|
||||
|
@ -3166,42 +3170,52 @@ resync_state:
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/* WITH OBJECTS LOCK TAKEN */
|
||||
static gboolean
|
||||
static void
|
||||
_set_real_eos_seqnum_from_seek (NleComposition * comp, GstEvent * event)
|
||||
{
|
||||
GList *tmp;
|
||||
|
||||
gboolean should_check_objects = FALSE;
|
||||
NleCompositionPrivate *priv = comp->priv;
|
||||
gboolean reverse = (priv->segment->rate < 0);
|
||||
gint stack_seqnum = gst_event_get_seqnum (event);
|
||||
|
||||
if (reverse && GST_CLOCK_TIME_IS_VALID (priv->current_stack_start))
|
||||
should_check_objects = TRUE;
|
||||
else if (!reverse && GST_CLOCK_TIME_IS_VALID (priv->current_stack_stop))
|
||||
should_check_objects = TRUE;
|
||||
if (reverse) {
|
||||
if (!GST_CLOCK_TIME_IS_VALID (priv->current_stack_start))
|
||||
goto done;
|
||||
|
||||
if (should_check_objects) {
|
||||
for (tmp = priv->objects_stop; tmp; tmp = g_list_next (tmp)) {
|
||||
NleObject *object = (NleObject *) tmp->data;
|
||||
if (priv->segment->start != 0 &&
|
||||
priv->current_stack_start <= priv->segment->start
|
||||
&& priv->current_stack_stop > priv->segment->start) {
|
||||
goto done;
|
||||
}
|
||||
} else {
|
||||
if (!GST_CLOCK_TIME_IS_VALID (priv->current_stack_stop))
|
||||
goto done;
|
||||
|
||||
if (!NLE_IS_SOURCE (object))
|
||||
continue;
|
||||
|
||||
if ((!reverse && priv->current_stack_stop < object->stop) ||
|
||||
(reverse && priv->current_stack_start > object->start)) {
|
||||
priv->next_eos_seqnum = stack_seqnum;
|
||||
g_atomic_int_set (&priv->real_eos_seqnum, 0);
|
||||
return FALSE;
|
||||
}
|
||||
if (GST_CLOCK_TIME_IS_VALID (priv->seek_segment->stop) &&
|
||||
priv->current_stack_start <= priv->segment->stop
|
||||
&& priv->current_stack_stop >= priv->segment->stop) {
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
for (tmp = priv->objects_stop; tmp; tmp = g_list_next (tmp)) {
|
||||
NleObject *object = (NleObject *) tmp->data;
|
||||
|
||||
if (!NLE_IS_SOURCE (object))
|
||||
continue;
|
||||
|
||||
if ((!reverse && priv->current_stack_stop < object->stop) ||
|
||||
(reverse && priv->current_stack_start > object->start)) {
|
||||
priv->next_eos_seqnum = stack_seqnum;
|
||||
g_atomic_int_set (&priv->real_eos_seqnum, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
priv->next_eos_seqnum = stack_seqnum;
|
||||
g_atomic_int_set (&priv->real_eos_seqnum, stack_seqnum);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifndef GST_DISABLE_GST_DEBUG
|
||||
|
|
|
@ -72,23 +72,36 @@ foreach t : ges_tests
|
|||
endforeach
|
||||
|
||||
if gstvalidate_dep.found()
|
||||
scenarios = [
|
||||
'check_video_track_restriction_scale',
|
||||
'check_video_track_restriction_scale_with_keyframes',
|
||||
'check_edit_in_frames',
|
||||
'check_edit_in_frames_with_framerate_mismatch',
|
||||
'check_layer_activness_gaps',
|
||||
]
|
||||
# filename: is .validatetest
|
||||
scenarios = {
|
||||
'check_video_track_restriction_scale': false,
|
||||
'check_video_track_restriction_scale_with_keyframes': false,
|
||||
'check_edit_in_frames': false,
|
||||
'check_edit_in_frames_with_framerate_mismatch': false,
|
||||
'check_layer_activness_gaps': false,
|
||||
'seek_with_stop': true,
|
||||
'seek_with_stop.check_clock_sync': true,
|
||||
'edit_while_seeked_with_stop': true,
|
||||
}
|
||||
|
||||
foreach scenario, is_validatetest: scenarios
|
||||
|
||||
env = environment()
|
||||
env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '')
|
||||
env.set('GST_STATE_IGNORE_ELEMENTS', '')
|
||||
env.set('CK_DEFAULT_TIMEOUT', '20')
|
||||
env.set('GST_REGISTRY', '@0@/@1@.registry'.format(meson.current_build_dir(), 'scenarios'))
|
||||
env.set('GST_PLUGIN_PATH_1_0', [meson.build_root()] + pluginsdirs)
|
||||
env.set('GST_VALIDATE_LOGSDIR', meson.current_build_dir() / scenario)
|
||||
|
||||
if is_validatetest
|
||||
testfile = meson.current_source_dir() / 'scenarios' / scenario + '.validatetest'
|
||||
test(scenario, ges_launch, env: env, args: ['--set-test-file', testfile, '--mute'])
|
||||
else
|
||||
scenario_file = meson.current_source_dir() / 'scenarios' / scenario + '.scenario'
|
||||
test(scenario, ges_launch, env: env, args: ['--set-scenario', scenario_file])
|
||||
endif
|
||||
|
||||
env = environment()
|
||||
env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '')
|
||||
env.set('GST_STATE_IGNORE_ELEMENTS', '')
|
||||
env.set('CK_DEFAULT_TIMEOUT', '20')
|
||||
env.set('GST_REGISTRY', '@0@/@1@.registry'.format(meson.current_build_dir(), 'scenarios'))
|
||||
env.set('GST_PLUGIN_PATH_1_0', [meson.build_root()] + pluginsdirs)
|
||||
foreach scenario: scenarios
|
||||
scenario_file = join_paths(meson.current_source_dir(), 'scenarios', scenario + '.scenario')
|
||||
test(scenario, ges_launch, env: env, args: ['--set-scenario', scenario_file])
|
||||
endforeach
|
||||
test('simple_playback_test', ges_launch, env: env, args: ['+test-clip', 'blue', 'd=0.1', '--disable-validate', '--videosink=fakevideosink', '--audiosink=fakesink'])
|
||||
endif
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
meta,
|
||||
tool = "ges-launch-$(gst_api_version)",
|
||||
args = {
|
||||
--track-types, video,
|
||||
--videosink, "$(videosink) name=videosink",
|
||||
--video-caps, "video/x-raw,width=1280,height=720,framerate=10/1",
|
||||
},
|
||||
handles-states=true,
|
||||
ignore-eos=true,
|
||||
configs = {
|
||||
# Ideally we should be able to record checksums... but they are not reproducible
|
||||
"$(validateflow), pad=videosink:sink, record-buffers=true, ignored-fields={\"stream-start=stream-id,group-id,stream\"}",
|
||||
}
|
||||
|
||||
add-clip, name=c0, asset-id=GESTestClip, layer-priority=0, type=GESTestClip, start=0, duration=1.0
|
||||
set-child-properties, element-name=c0, pattern=blue, time-mode=time-code, valignment=center, halignment=center
|
||||
|
||||
add-clip, name=c1, asset-id=GESTestClip, layer-priority=0, type=GESTestClip, start=1.0, duration=1.0
|
||||
set-child-properties, element-name=c1, pattern=red, time-mode=time-code, valignment=center, halignment=center
|
||||
commit;
|
||||
play
|
||||
|
||||
seek, start=0.0, stop=0.5, flags=accurate+flush
|
||||
|
||||
edit, element-name=c0, position=0.5, edge=end, edit-mode=trim
|
||||
commit;
|
||||
|
||||
crank-clock, expected-elapsed-time=0.0
|
||||
crank-clock, repeat=5, expected-elapsed-time=0.1
|
||||
check-position, on-message=eos, expected-position=0.5
|
||||
|
||||
seek, start=0.5, stop=1.0, flags=accurate+flush
|
||||
|
||||
edit, element-name=c1, position=5.0, edge=end, edit-mode=trim
|
||||
commit;
|
||||
|
||||
crank-clock, expected-elapsed-time=0.0
|
||||
crank-clock, repeat=5, expected-elapsed-time=0.1
|
||||
check-position, on-message=eos, expected-position=1.0
|
||||
|
||||
edit, element-name=c1, position=3.0, edge=end, edit-mode=trim
|
||||
commit;
|
||||
check-position, on-message=eos, expected-position=1.0
|
||||
|
||||
seek, start=1.0, stop=2.0, flags=accurate+flush
|
||||
check-position, expected-position=1.0
|
||||
|
||||
edit, element-name=c1, position=1.5, edge=end, edit-mode=trim
|
||||
commit;
|
||||
|
||||
crank-clock, expected-elapsed-time=0.0
|
||||
crank-clock, repeat=5, expected-elapsed-time=0.1
|
||||
|
||||
# Last 1ns clip added by GES
|
||||
crank-clock, repeat=1, expected-elapsed-time=(guint64)1
|
||||
check-position, on-message=eos, expected-position=1500000001
|
||||
|
||||
stop;
|
|
@ -0,0 +1,52 @@
|
|||
event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, stream=(GstStream)"\(GstStream\)\ stream0", group-id=(uint)2;
|
||||
event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)10/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.100000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.200000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.300000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.400000000, dur=0:00:00.100000000
|
||||
event eos: (no structure)
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)10/1, chroma-site=(string)jpeg, colorimetry=(string)bt601;
|
||||
event segment: format=TIME, start=0:00:00.500000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.500000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.500000000, dur=0:00:00.100000000
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.500000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.500000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.500000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.600000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.700000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.800000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.900000000, dur=0:00:00.100000000
|
||||
event eos: (no structure)
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)10/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
|
||||
event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000, position=none
|
||||
event eos: (no structure)
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:02.000000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:01.000000000, dur=0:00:00.100000000
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:01.500000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:01.000000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:01.100000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:01.200000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:01.300000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:01.400000000, dur=0:00:00.100000000
|
||||
event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)10/1, chroma-site=(string)jpeg, colorimetry=(string)bt601;
|
||||
event segment: format=TIME, start=0:00:01.500000000, offset=0:00:00.000000000, stop=0:00:01.500000001, flags=0x01, time=0:00:01.500000000, base=0:00:00.500000000, position=none
|
||||
buffer: pts=0:00:01.500000000, dur=0:00:00.000000001
|
||||
event eos: (no structure)
|
|
@ -0,0 +1,30 @@
|
|||
meta,
|
||||
tool = "ges-launch-$(gst_api_version)",
|
||||
args = {
|
||||
--track-types, video,
|
||||
--videosink, "$(videosink) name=videosink",
|
||||
--video-caps, "video/x-raw,width=1280,height=720,framerate=10/1",
|
||||
},
|
||||
handles-states=true,
|
||||
ignore-eos=true,
|
||||
configs = {
|
||||
# Ideally we should be able to record checksums... but they are not reproducible
|
||||
"$(validateflow), pad=videosink:sink, record-buffers=true, ignored-fields={\"stream-start=stream-id,group-id,stream\"}",
|
||||
}
|
||||
|
||||
add-clip, name=c0, asset-id=GESTestClip, layer-priority=0, type=GESTestClip, start=0, duration=1.0
|
||||
set-child-properties, element-name=c0, pattern=blue, time-mode=time-code, valignment=center, halignment=center
|
||||
|
||||
add-clip, name=c1, asset-id=GESTestClip, layer-priority=0, type=GESTestClip, start=1.0, duration=1.0
|
||||
set-child-properties, element-name=c1, pattern=red, time-mode=time-code, valignment=center, halignment=center
|
||||
commit;
|
||||
play
|
||||
|
||||
seek, start=0.0, stop=0.5, flags=accurate+flush
|
||||
crank-clock, expected-elapsed-time=0.0
|
||||
|
||||
# 4 remaining buffers + eos.
|
||||
crank-clock, repeat=5, expected-elapsed-time=0.1
|
||||
|
||||
check-position, on-message=eos, expected-position=0.5
|
||||
stop;
|
|
@ -0,0 +1,13 @@
|
|||
event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, stream=(GstStream)"\(GstStream\)\ stream0", group-id=(uint)2;
|
||||
event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)10/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.100000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.200000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.300000000, dur=0:00:00.100000000
|
||||
buffer: pts=0:00:00.400000000, dur=0:00:00.100000000
|
||||
event eos: (no structure)
|
27
tests/check/scenarios/seek_with_stop.validatetest
Normal file
27
tests/check/scenarios/seek_with_stop.validatetest
Normal file
|
@ -0,0 +1,27 @@
|
|||
meta,
|
||||
tool = "ges-launch-$(gst_api_version)",
|
||||
args = {
|
||||
--videosink, "$(videosink) name=videosink",
|
||||
--audiosink, "$(audiosink) name=audiosink",
|
||||
},
|
||||
handles-states=true,
|
||||
ignore-eos=true,
|
||||
configs = {
|
||||
"$(validateflow), pad=videosink:sink, record-buffers=true, ignored-fields={\"stream-start=stream-id,group-id,stream\"}",
|
||||
"$(validateflow), pad=audiosink:sink, record-buffers=true, ignored-fields={\"stream-start=stream-id,group-id,stream\"}",
|
||||
}
|
||||
|
||||
add-clip, name=c0, asset-id=GESTestClip, layer-priority=0, type=GESTestClip, start=0, duration=1.0
|
||||
set-child-properties, element-name=c0, pattern=blue, time-mode=time-code, valignment=center, halignment=center
|
||||
|
||||
add-clip, name=c1, asset-id=GESTestClip, layer-priority=0, type=GESTestClip, start=1.0, duration=1.0
|
||||
set-child-properties, element-name=c1, pattern=red, time-mode=time-code, valignment=center, halignment=center
|
||||
pause
|
||||
|
||||
seek, start=0.0, stop=0.5, flags=accurate+flush
|
||||
play
|
||||
|
||||
seek, on-message=eos, start=0.0, stop=0.5, flags=accurate+flush
|
||||
seek, on-message=eos, start=0.0, stop=1.0, flags=accurate+flush
|
||||
seek, on-message=eos, start=1.0, stop=1.5, flags=accurate+flush
|
||||
stop, on-message=eos
|
|
@ -0,0 +1,274 @@
|
|||
event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, stream=(GstStream)"\(GstStream\)\ stream1", group-id=(uint)3;
|
||||
event caps: audio/x-raw, rate=(int)44100, format=(string)S32LE, channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=0:00:00.000000000
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.010000000
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=0:00:00.000000000
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.010000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.020000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.030000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.040000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.050000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.060000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.070000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.080000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.090000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.100000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.110000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.120000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.130000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.140000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.150000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.160000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.170000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.180000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.190000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.200000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.210000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.220000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.230000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.240000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.250000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.260000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.270000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.280000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.290000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.300000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.310000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.320000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.330000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.340000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.350000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.360000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.370000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.380000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.390000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.400000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.410000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.420000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.430000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.440000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.450000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.460000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.470000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.480000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.490000000, dur=0:00:00.010000000
|
||||
event gap: GstEventGap, timestamp=(guint64)500000000, duration=(guint64)18446744073709551615;
|
||||
event eos: (no structure)
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=0:00:00.000000000
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.010000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.020000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.030000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.040000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.050000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.060000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.070000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.080000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.090000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.100000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.110000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.120000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.130000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.140000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.150000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.160000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.170000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.180000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.190000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.200000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.210000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.220000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.230000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.240000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.250000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.260000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.270000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.280000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.290000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.300000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.310000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.320000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.330000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.340000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.350000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.360000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.370000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.380000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.390000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.400000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.410000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.420000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.430000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.440000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.450000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.460000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.470000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.480000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.490000000, dur=0:00:00.010000000
|
||||
event gap: GstEventGap, timestamp=(guint64)500000000, duration=(guint64)18446744073709551615;
|
||||
event eos: (no structure)
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=0:00:00.000000000
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.010000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.020000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.030000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.040000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.050000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.060000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.070000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.080000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.090000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.100000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.110000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.120000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.130000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.140000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.150000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.160000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.170000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.180000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.190000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.200000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.210000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.220000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.230000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.240000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.250000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.260000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.270000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.280000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.290000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.300000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.310000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.320000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.330000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.340000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.350000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.360000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.370000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.380000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.390000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.400000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.410000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.420000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.430000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.440000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.450000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.460000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.470000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.480000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.490000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.500000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.510000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.520000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.530000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.540000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.550000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.560000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.570000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.580000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.590000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.600000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.610000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.620000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.630000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.640000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.650000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.660000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.670000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.680000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.690000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.700000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.710000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.720000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.730000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.740000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.750000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.760000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.770000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.780000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.790000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.800000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.810000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.820000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.830000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.840000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.850000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.860000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.870000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.880000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.890000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.900000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.910000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.920000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.930000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.940000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.950000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.960000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.970000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.980000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:00.990000000, dur=0:00:00.010000000
|
||||
event gap: GstEventGap, timestamp=(guint64)1000000000, duration=(guint64)18446744073709551615;
|
||||
event eos: (no structure)
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:01.500000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000, position=0:00:01.000000000
|
||||
buffer: pts=0:00:01.000000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.010000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.020000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.030000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.040000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.050000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.060000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.070000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.080000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.090000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.100000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.110000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.120000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.130000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.140000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.150000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.160000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.170000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.180000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.190000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.200000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.210000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.220000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.230000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.240000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.250000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.260000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.270000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.280000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.290000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.300000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.310000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.320000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.330000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.340000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.350000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.360000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.370000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.380000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.390000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.400000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.410000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.420000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.430000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.440000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.450000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.460000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.470000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.480000000, dur=0:00:00.010000000
|
||||
buffer: pts=0:00:01.490000000, dur=0:00:00.010000000
|
||||
event gap: GstEventGap, timestamp=(guint64)1500000000, duration=(guint64)18446744073709551615;
|
||||
event eos: (no structure)
|
|
@ -0,0 +1,95 @@
|
|||
event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, stream=(GstStream)"\(GstStream\)\ stream0", group-id=(uint)3;
|
||||
event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)30/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.033333333
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.033333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.066666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.100000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.133333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.166666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.200000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.233333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.266666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.300000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.333333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.366666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.400000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.433333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.466666667, dur=0:00:00.033333333
|
||||
event eos: (no structure)
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.033333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.066666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.100000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.133333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.166666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.200000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.233333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.266666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.300000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.333333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.366666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.400000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.433333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.466666667, dur=0:00:00.033333333
|
||||
event eos: (no structure)
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:00.000000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.033333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.066666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.100000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.133333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.166666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.200000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.233333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.266666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.300000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.333333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.366666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.400000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.433333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.466666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.500000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.533333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.566666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.600000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.633333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.666666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.700000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.733333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.766666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.800000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.833333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.866666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.900000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:00.933333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:00.966666667, dur=0:00:00.033333333
|
||||
event eos: (no structure)
|
||||
event flush-start: (no structure)
|
||||
event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
|
||||
event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:01.500000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000, position=none
|
||||
buffer: pts=0:00:01.000000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:01.033333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:01.066666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:01.100000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:01.133333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:01.166666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:01.200000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:01.233333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:01.266666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:01.300000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:01.333333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:01.366666667, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:01.400000000, dur=0:00:00.033333333
|
||||
buffer: pts=0:00:01.433333333, dur=0:00:00.033333334
|
||||
buffer: pts=0:00:01.466666667, dur=0:00:00.033333333
|
||||
event eos: (no structure)
|
|
@ -338,8 +338,10 @@ bus_message_cb (GstBus * bus, GstMessage * message, GESLauncher * self)
|
|||
break;
|
||||
}
|
||||
case GST_MESSAGE_EOS:
|
||||
ok ("\nDone\n");
|
||||
g_application_quit (G_APPLICATION (self));
|
||||
if (!self->priv->parsed_options.ignore_eos) {
|
||||
ok ("\nDone\n");
|
||||
g_application_quit (G_APPLICATION (self));
|
||||
}
|
||||
break;
|
||||
case GST_MESSAGE_STATE_CHANGED:
|
||||
if (GST_MESSAGE_SRC (message) == GST_OBJECT_CAST (self->priv->pipeline)) {
|
||||
|
|
|
@ -52,6 +52,8 @@ typedef struct
|
|||
gchar *audio_track_caps;
|
||||
gboolean embed_nesteds;
|
||||
gboolean disable_validate;
|
||||
|
||||
gboolean ignore_eos;
|
||||
} GESLauncherParsedOptions;
|
||||
|
||||
struct _GESLauncher {
|
||||
|
|
|
@ -150,6 +150,7 @@ ges_validate_activate (GstPipeline * pipeline, GESLauncher * launcher,
|
|||
if (!ges_options)
|
||||
ges_options = gst_validate_utils_get_strv (metas, "args");
|
||||
|
||||
gst_structure_get_boolean (metas, "ignore-eos", &opts->ignore_eos);
|
||||
if (ges_options) {
|
||||
gint i;
|
||||
gchar **ges_options_full =
|
||||
|
|
Loading…
Reference in a new issue