Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
GStreamer
gst-editing-services
Commits
7bef1816
Commit
7bef1816
authored
Apr 21, 2020
by
Thibault Saunier
🌵
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nlecomposition: Fix seeking with stop
And add some tests Part-of: <
!166
>
parent
f30a1277
Pipeline
#139480
waiting for manual action with stages
in 18 seconds
Changes
12
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
621 additions
and
40 deletions
+621
-40
plugins/nle/nlecomposition.c
plugins/nle/nlecomposition.c
+36
-22
tests/check/meson.build
tests/check/meson.build
+29
-16
tests/check/scenarios/edit_while_seeked_with_stop.validatetest
.../check/scenarios/edit_while_seeked_with_stop.validatetest
+58
-0
tests/check/scenarios/edit_while_seeked_with_stop/flow-expectations/log-videosink-sink-expected
...d_with_stop/flow-expectations/log-videosink-sink-expected
+52
-0
tests/check/scenarios/seek_with_stop.check_clock_sync.validatetest
...ck/scenarios/seek_with_stop.check_clock_sync.validatetest
+30
-0
tests/check/scenarios/seek_with_stop.check_clock_sync/flow-expectations/log-videosink-sink-expected
..._clock_sync/flow-expectations/log-videosink-sink-expected
+13
-0
tests/check/scenarios/seek_with_stop.validatetest
tests/check/scenarios/seek_with_stop.validatetest
+27
-0
tests/check/scenarios/seek_with_stop/flow-expectations/log-audiosink-sink-expected
...k_with_stop/flow-expectations/log-audiosink-sink-expected
+274
-0
tests/check/scenarios/seek_with_stop/flow-expectations/log-videosink-sink-expected
...k_with_stop/flow-expectations/log-videosink-sink-expected
+95
-0
tools/ges-launcher.c
tools/ges-launcher.c
+4
-2
tools/ges-launcher.h
tools/ges-launcher.h
+2
-0
tools/ges-validate.c
tools/ges-validate.c
+1
-0
No files found.
plugins/nle/nlecomposition.c
View file @
7bef1816
...
...
@@ -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
(
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
;
}
}
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
;
}
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
...
...
tests/check/meson.build
View file @
7bef1816
...
...
@@ -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
...
...
tests/check/scenarios/edit_while_seeked_with_stop.validatetest
0 → 100644
View file @
7bef1816
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;
\ No newline at end of file
tests/check/scenarios/edit_while_seeked_with_stop/flow-expectations/log-videosink-sink-expected
0 → 100644
View file @
7bef1816
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)
tests/check/scenarios/seek_with_stop.check_clock_sync.validatetest
0 → 100644
View file @
7bef1816
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;
\ No newline at end of file
tests/check/scenarios/seek_with_stop.check_clock_sync/flow-expectations/log-videosink-sink-expected
0 → 100644
View file @
7bef1816
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)
tests/check/scenarios/seek_with_stop.validatetest
0 → 100644
View file @
7bef1816
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
\ No newline at end of file
tests/check/scenarios/seek_with_stop/flow-expectations/log-audiosink-sink-expected
0 → 100644
View file @
7bef1816
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