Update
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
# GStreamer
|
||||
# Copyright (C) 2015 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
|
||||
# Copyright (C) 2021 Stéphane Cerveau <scerveau@collabora.com>
|
||||
#
|
||||
# bash/zsh completion support for gst-validate
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Library General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Library General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Library General Public
|
||||
# License along with this library; if not, write to the
|
||||
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
|
||||
_GST_HELPERDIR="${BASH_SOURCE[0]%/*}/../helpers"
|
||||
|
||||
if [[ ! -f $_GST_HELPERDIR/gst ]]; then
|
||||
_GST_HELPERDIR="$(pkg-config --variable=bashhelpersdir gstreamer-1.0)"
|
||||
else
|
||||
_GST_HELPERDIR=`cd "$_GST_HELPERDIR"; pwd`
|
||||
fi
|
||||
|
||||
# Common definitions
|
||||
. "$_GST_HELPERDIR"/gst
|
||||
|
||||
_gst_validate_all_arguments ()
|
||||
{
|
||||
_gst_all_arguments gst-validate-1.0
|
||||
}
|
||||
|
||||
_gst_complete_compatible_elements ()
|
||||
{
|
||||
COMPREPLY=( $(compgen -W "$($_GST_HELPER --compatible-with $previous_element)" -- $cur) )
|
||||
}
|
||||
|
||||
_gst_complete_all_elements ()
|
||||
{
|
||||
COMPREPLY=( $(compgen -W "$($_GST_HELPER -l)" -- $cur) )
|
||||
}
|
||||
|
||||
_gst_complete_element_properties ()
|
||||
{
|
||||
COMPREPLY=( $(compgen -W "$($_GST_HELPER --element-properties $previous_element)" -- $cur) )
|
||||
}
|
||||
|
||||
_gstvalidate___exclude_ () { _gst_mandatory_argument gst-validate-1.0; }
|
||||
|
||||
_gst_validate_main ()
|
||||
{
|
||||
local i=1 command function_exists previous_element have_previous_element=0 completion_func
|
||||
|
||||
while [[ $i -ne $COMP_CWORD ]];
|
||||
do
|
||||
local var
|
||||
var="${COMP_WORDS[i]}"
|
||||
if [[ "$var" == "-"* ]]
|
||||
then
|
||||
command="$var"
|
||||
fi
|
||||
i=$(($i+1))
|
||||
done
|
||||
|
||||
i=1
|
||||
while [[ $i -ne $COMP_CWORD ]];
|
||||
do
|
||||
local var
|
||||
var="${COMP_WORDS[i]}"
|
||||
|
||||
if [[ "$var" == "-"* ]]
|
||||
then
|
||||
i=$(($i+1))
|
||||
continue
|
||||
fi
|
||||
|
||||
$(gst-inspect-1.0 --exists $var)
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
previous_element="$var"
|
||||
have_previous_element=1
|
||||
fi
|
||||
i=$(($i+1))
|
||||
done
|
||||
|
||||
if [[ "$command" == "--gst"* ]]; then
|
||||
completion_func="_${command//-/_}"
|
||||
else
|
||||
completion_func="_gstlaunch_${command//-/_}"
|
||||
fi
|
||||
|
||||
# Seems like bash doesn't like "exclude" in function names
|
||||
if [[ "$completion_func" == "_gstlaunch___exclude" ]]
|
||||
then
|
||||
completion_func="_gstvalidate___exclude_"
|
||||
fi
|
||||
|
||||
declare -f $completion_func >/dev/null 2>&1
|
||||
|
||||
function_exists=$?
|
||||
|
||||
if [[ "$cur" == "-"* ]]; then
|
||||
_gst_validate_all_arguments
|
||||
elif [ $function_exists -eq 0 ]
|
||||
then
|
||||
$completion_func
|
||||
elif [ $have_previous_element -ne 0 ] && [[ "$prev" == "!" ]]
|
||||
then
|
||||
_gst_complete_compatible_elements
|
||||
elif [ $have_previous_element -ne 0 ]
|
||||
then
|
||||
_gst_complete_element_properties
|
||||
else
|
||||
_gst_complete_all_elements
|
||||
fi
|
||||
}
|
||||
|
||||
_gst_validate_func_wrap ()
|
||||
{
|
||||
local cur prev
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
$1
|
||||
}
|
||||
|
||||
# Setup completion for certain functions defined above by setting common
|
||||
# variables and workarounds.
|
||||
# This is NOT a public function; use at your own risk.
|
||||
_gst_validate_complete ()
|
||||
{
|
||||
local wrapper="__launch_wrap${2}"
|
||||
eval "$wrapper () { _gst_validate_func_wrap $2 ; }"
|
||||
complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
|
||||
|| complete -o default -o nospace -F $wrapper $1
|
||||
}
|
||||
|
||||
_gst_validate_complete gst-validate-1.0 _gst_validate_main
|
||||
@@ -0,0 +1,241 @@
|
||||
### This file contains either validate specific suppressions or bugs that we
|
||||
### can't easily address because they are lower in the stack.
|
||||
### All the other suppressions should be added ton gstreamer/tests/check/gstreamer.supp
|
||||
|
||||
### Each set of suppression rules should be prefixed by either:
|
||||
### - FIXED: if the bug/leak has been fixed upstream but we keep the rule
|
||||
### because the fix may not be deployed yet (because it's lower in the
|
||||
### stack and not in gst itself).
|
||||
### - PENDING: if the bug/leak hasn't been fixed yet. In this case, please
|
||||
### add an url to the bug report.
|
||||
|
||||
# PENDING: https://bugs.freedesktop.org/show_bug.cgi?id=90073
|
||||
{
|
||||
Leak in mesa fixed with http://lists.freedesktop.org/archives/mesa-dev/2015-April/082101.html
|
||||
Memcheck:Leak
|
||||
fun:malloc
|
||||
fun:read_packet
|
||||
fun:_xcb_in_read
|
||||
fun:_xcb_conn_wait
|
||||
fun:wait_for_reply
|
||||
fun:xcb_wait_for_reply
|
||||
fun:dri3_open
|
||||
fun:dri3_create_screen
|
||||
fun:AllocAndFetchScreenConfigs
|
||||
fun:__glXInitialize
|
||||
fun:glXQueryVersion
|
||||
}
|
||||
|
||||
{
|
||||
Leak in mesa fixed with http://lists.freedesktop.org/archives/mesa-dev/2015-April/082100.html
|
||||
Memcheck:Leak
|
||||
...
|
||||
fun:get_render_node_from_id_path_tag
|
||||
fun:loader_get_user_preferred_fd
|
||||
fun:dri3_create_screen
|
||||
fun:AllocAndFetchScreenConfigs
|
||||
fun:__glXInitialize
|
||||
fun:glXQueryVersion
|
||||
}
|
||||
|
||||
# FIXED
|
||||
{
|
||||
Fixed in pixman master
|
||||
Memcheck:Leak
|
||||
fun:memalign
|
||||
fun:allocate_and_init
|
||||
fun:tls_get_addr_tail
|
||||
}
|
||||
|
||||
# PENDING: https://bugzilla.gnome.org/show_bug.cgi?id=748417
|
||||
{
|
||||
Ignore all the invalid memory errors from libvpx
|
||||
Memcheck:Cond
|
||||
obj:/usr/lib64/libvpx.so*
|
||||
}
|
||||
|
||||
{
|
||||
Ignore all the invalid memory errors from libvpx
|
||||
Memcheck:Value8
|
||||
obj:/usr/lib64/libvpx.so*
|
||||
}
|
||||
|
||||
# PENDING: https://bugzilla.gnome.org/show_bug.cgi?id=747110
|
||||
{
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=747110
|
||||
Memcheck:Addr4
|
||||
...
|
||||
fun:aac_decode_frame_int
|
||||
fun:aac_decode_frame
|
||||
}
|
||||
|
||||
# PENDING: https://bugzilla.gnome.org/show_bug.cgi?id=752989
|
||||
{
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=752989
|
||||
Memcheck:Value4
|
||||
...
|
||||
fun:aac_decode_frame_int
|
||||
fun:aac_decode_frame
|
||||
}
|
||||
|
||||
# PENDING: https://bugs.freedesktop.org/show_bug.cgi?id=90194
|
||||
{
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=90194
|
||||
Memcheck:Param
|
||||
ioctl(generic)
|
||||
fun:ioctl
|
||||
fun:drmIoctl
|
||||
fun:drmPrimeHandleToFD
|
||||
}
|
||||
|
||||
# PENDING: https://bugzilla.gnome.org/show_bug.cgi?id=749232
|
||||
# x264 errors
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Cond
|
||||
...
|
||||
fun:x264_encoder_encode
|
||||
}
|
||||
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Value8
|
||||
...
|
||||
fun:x264_encoder_encode
|
||||
}
|
||||
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Cond
|
||||
...
|
||||
fun:x264_lookahead_thread
|
||||
}
|
||||
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Value8
|
||||
...
|
||||
fun:x264_lookahead_thread
|
||||
}
|
||||
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Cond
|
||||
...
|
||||
fun:x264_threadpool_thread
|
||||
}
|
||||
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Value8
|
||||
obj:/usr/lib64/libx264.so.*
|
||||
}
|
||||
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Cond
|
||||
obj:/usr/lib64/libx264.so.*
|
||||
}
|
||||
|
||||
# PENDING: https://bugzilla.gnome.org/show_bug.cgi?id=749428
|
||||
# Theora encoder
|
||||
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Value8
|
||||
...
|
||||
fun:theora_enc_handle_frame
|
||||
}
|
||||
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Cond
|
||||
...
|
||||
fun:theora_enc_handle_frame
|
||||
}
|
||||
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Value8
|
||||
fun:oc_enc_tokenize_ac
|
||||
}
|
||||
|
||||
# FIXED
|
||||
{
|
||||
Fixed with mesa master
|
||||
Memcheck:Cond
|
||||
fun:lp_build_blend_factor_unswizzled
|
||||
...
|
||||
fun:gst_glimage_sink_on_draw
|
||||
}
|
||||
|
||||
# FIXED
|
||||
{
|
||||
Fixed with mesa master
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:calloc
|
||||
...
|
||||
fun:_do_convert_draw
|
||||
fun:_do_convert_one_view
|
||||
}
|
||||
|
||||
# FIXED
|
||||
{
|
||||
Fixed with mesa master
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:malloc
|
||||
...
|
||||
fun:gst_gl_shader_compile
|
||||
}
|
||||
|
||||
# FIXED
|
||||
{
|
||||
Fixed with mesa master
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:calloc
|
||||
...
|
||||
fun:_draw_checker_background
|
||||
fun:_draw_background
|
||||
fun:gst_gl_video_mixer_callback
|
||||
}
|
||||
|
||||
{
|
||||
#https://bugs.freedesktop.org/show_bug.cgi?id=8215
|
||||
#https://bugs.freedesktop.org/show_bug.cgi?id=8428
|
||||
#FcPattern uses 'intptr_t elts_offset' instead of 'FcPatternEltPtr elts',
|
||||
#which confuses valgrind.
|
||||
font_config_bug_2
|
||||
Memcheck:Leak
|
||||
fun:*alloc
|
||||
...
|
||||
fun:Fc*Add*
|
||||
}
|
||||
{
|
||||
#Same root cause as font_config_bug_2.
|
||||
#The 'leak' here is a copy of rule values, as opposed to new values.
|
||||
font_config_bug_3
|
||||
Memcheck:Leak
|
||||
fun:*alloc
|
||||
...
|
||||
fun:FcConfigValues
|
||||
}
|
||||
{
|
||||
#Same root cause as font_config_bug_2.
|
||||
#The 'leak' is copies of font or pattern values into returned pattern values.
|
||||
font_config_bug_4
|
||||
Memcheck:Leak
|
||||
fun:*alloc
|
||||
...
|
||||
fun:FcValue*
|
||||
fun:FcFontRenderPrepare
|
||||
}
|
||||
{
|
||||
font_config_bug_6
|
||||
Memcheck:Leak
|
||||
fun:*alloc
|
||||
...
|
||||
obj:*/libfontconfig.so.*
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
subdir('scenarios')
|
||||
@@ -0,0 +1,5 @@
|
||||
description, duration=15.0
|
||||
set-restriction, playback-time=5.0, restriction-caps="video/x-raw,framerate=(fraction)5/1"
|
||||
set-restriction, playback-time=10.0, restriction-caps="video/x-raw,framerate=(fraction)30/1"
|
||||
eos, playback-time=15.0
|
||||
stop, playback-time=15.0
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
description, duration=25.0
|
||||
set-restriction, playback-time=5.0, restriction-caps="video/x-raw,framerate=(fraction)5/1"
|
||||
set-restriction, playback-time=10.0, restriction-caps="video/x-raw,height=20,width=20,framerate=(fraction)5/1"
|
||||
set-restriction, playback-time=15.0, restriction-caps="video/x-raw,height=20,width=20,framerate=(fraction)30/1"
|
||||
set-restriction, playback-time=20.0, restriction-caps="video/x-raw,height=720,width=1280,framerate=(fraction)30/1"
|
||||
eos, playback-time=25.0
|
||||
stop, playback-time=25.0
|
||||
@@ -0,0 +1,5 @@
|
||||
description, duration=15.0
|
||||
set-restriction, playback-time=5.0, restriction-caps="video/x-raw,height=480,width=854"
|
||||
set-restriction, playback-time=10.0, restriction-caps="video/x-raw,height=720,width=1280"
|
||||
eos, playback-time=15.0
|
||||
stop, playback-time=15.0
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
description, duration=55.0, min-media-duration=470.0, seek=true, reverse-playback=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, name=backward-seek, playback-time=0.0, rate=-1.0, start=0.0, stop=310.0, flags="$(default_flags)"
|
||||
seek, name=forward-seek, playback-time=305.0, rate=1.0, start=305.0, flags="$(default_flags)"
|
||||
seek, name=Fast-forward-seek, playback-time=310.0, rate=2.0, start=310.0, flags="$(default_flags)"
|
||||
seek, name=Fast-backward-seek, playback-time=320.0, rate=-2.0, start=0.0, stop=320.0, flags="$(default_flags)"
|
||||
seek, name=Fast-forward-seek, playback-time=310.0, rate=4.0, start=310.0, flags="$(default_flags)"
|
||||
seek, name=Fast-backward-seek, playback-time=330.0, rate=-4.0, start=0.0, stop=330.0, flags="$(default_flags)"
|
||||
seek, name=Fast-forward-seek, playback-time=310.0, rate=8.0, start=310.0, flags="$(default_flags)"
|
||||
seek, name=Fast-backward-seek, playback-time=350.0, rate=-8.0, start=0.0, stop=350.0, flags="$(default_flags)"
|
||||
seek, name=Fast-forward-seek, playback-time=310.0, rate=16.0, start=310.0, flags="$(default_flags)"
|
||||
seek, name=Fast-backward-seek, playback-time=390.0, rate=-16.0, start=0.0, stop=390.0, flags="$(default_flags)"
|
||||
seek, name=Fast-forward-seek, playback-time=310.0, rate=32.0, start=310.0, flags="$(default_flags)"
|
||||
seek, name=Fast-backward-seek, playback-time=470.0, rate=-32.0, start=310.0, stop=470.0, flags="$(default_flags)"
|
||||
@@ -0,0 +1,4 @@
|
||||
description, duration=20.0
|
||||
emit-signal, target-element-name=camerabin0, signal-name=start-capture, playback-time=10.0
|
||||
eos, playback-time=20.0
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
description, duration=0, summary="Set state to NULL->PLAYING->NULL 20 times", need-clock-sync=true, min-media-duration=1.0, live_content_compatible=True, handles-states=true, ignore-eos=true
|
||||
|
||||
foreach, i=[0, 40],
|
||||
actions = {
|
||||
"set-state, state=playing",
|
||||
"set-state, state=null",
|
||||
}
|
||||
stop;
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
description, summary="Disable subtitle track while pipeline is PAUSED", min-subtitle-track=2, duration=5.0, handles-states=true, needs_preroll=true
|
||||
pause;
|
||||
switch-track, name="Disable subtitle", type=text, disable=true
|
||||
wait, duration=0.5
|
||||
play;
|
||||
stop, playback-time=2.0
|
||||
@@ -0,0 +1,9 @@
|
||||
description, duration=30.0, minfo-media-duration=310.0, seek=true, reverse-playback=true, need-clock-sync=true, min-media-duration=310.0, ignore-eos=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, name=Fast-backward-seek, playback-time=0.0, rate=-2.0, start=0.0, stop=310.0, flags="$(default_flags)"
|
||||
seek, name=Fast-backward-seek, playback-time=300.0, rate=-4.0, start=0.0, stop=300.0, flags="$(default_flags)"
|
||||
seek, name=Fast-backward-seek, playback-time=280.0, rate=-8.0, start=0.0, stop=280.0, flags="$(default_flags)"
|
||||
seek, name=Fast-backward-seek, playback-time=240.0, rate=-16.0, start=0.0, stop=240.0, flags="$(default_flags)"
|
||||
seek, name=Fast-backward-seek, playback-time=160.0, rate=-32.0, start=0.0, stop=160.0, flags="$(default_flags)"
|
||||
wait, message-type=eos
|
||||
stop
|
||||
@@ -0,0 +1,8 @@
|
||||
description, duration=25.0, seek=true, need-clock-sync=true, min-media-duration=5.0, ignore-eos=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, name=Fast-forward-seek, playback-time=0.0, rate=2.0, start=0.0, flags="$(default_flags)"
|
||||
seek, name=Fast-forward-seek, playback-time="min(10.0, $(duration) * 0.0625)", rate=4.0, start=0.0, flags="$(default_flags)"
|
||||
seek, name=Fast-forward-seek, playback-time="min(20.0, $(duration) * 0.125)", rate=8.0, start=0.0, flags="$(default_flags)"
|
||||
seek, name=Fast-forward-seek, playback-time="min(40.0, $(duration) * 0.25)", rate=16.0, start=0.0, flags="$(default_flags)"
|
||||
seek, name=Fast-forward-seek, playback-time="min(80.0, $(duration) * 0.50)", rate=32.0, start=0.0, flags="$(default_flags)"
|
||||
stop, playback-time="min($(duration) - 0.3, 160.0)", on-message="eos"
|
||||
@@ -0,0 +1,4 @@
|
||||
description, duration=2.0
|
||||
video-request-key-unit, playback-time=1.0, direction=upstream, running_time=-1.0, all-header=true, count=1
|
||||
eos, playback-time=2.0
|
||||
stop, playback-time=2.0
|
||||
@@ -0,0 +1 @@
|
||||
set-property, target-element-factory-name="rtspsrc", property-name=default-rtsp-version, property-value=(string)"2-0"
|
||||
@@ -0,0 +1,9 @@
|
||||
# Rewinds a live source completely
|
||||
# The goal is to check for proper EOS handling when going back to the
|
||||
# beginning of the live cache
|
||||
description, seek=true, live_content_required=true, duration=14.0
|
||||
# Wait for 5s (can't use playback-time since we don't know the position(live))
|
||||
wait, duration=5.0
|
||||
# Seek back all the way as fast as possible (from the end, i.e. 'now')
|
||||
seek, name=End-seek, rate=-16.0, stop=0.0, stop_type=end, start=0.0, start_type=set, flags=flush+trickmode-key-units+trickmode-no-audio
|
||||
#eos
|
||||
@@ -0,0 +1,2 @@
|
||||
set-vars,\
|
||||
default_flags=accurate+flush
|
||||
@@ -0,0 +1,43 @@
|
||||
_scenarios = ['simple_seeks.scenario',
|
||||
'seek_forward.scenario',
|
||||
'seek_backward.scenario',
|
||||
'seek_forward_backward.scenario',
|
||||
'reverse_playback.scenario',
|
||||
'fast_forward.scenario',
|
||||
'fast_backward.scenario',
|
||||
'alternate_fast_backward_forward.scenario',
|
||||
'pause_resume.scenario',
|
||||
'scrub_forward_seeking.scenario',
|
||||
'scrub_backward_seeking.scenario',
|
||||
'scrub_forward_seeking_full.scenario',
|
||||
'scrub_backward_seeking_full.scenario',
|
||||
'adaptive_video_size.scenario',
|
||||
'adaptive_video_framerate.scenario',
|
||||
'adaptive_video_framerate_size.scenario',
|
||||
'force_key_unit.scenario',
|
||||
'seek_with_stop.scenario',
|
||||
'switch_audio_track_while_paused.scenario',
|
||||
'switch_subtitle_track.scenario',
|
||||
'switch_subtitle_track_while_paused.scenario',
|
||||
'disable_subtitle_track_while_paused.scenario',
|
||||
'play_15s.scenario',
|
||||
'play_5s.scenario',
|
||||
'change_state_intensive.scenario',
|
||||
'switch_audio_track.scenario',
|
||||
'force_rtsp2.scenario',]
|
||||
|
||||
install_data(sources: _scenarios,
|
||||
install_dir: get_option('datadir') + '/gstreamer-' +
|
||||
apiversion + '/validate/scenarios')
|
||||
|
||||
install_subdir('includes',
|
||||
install_dir: get_option('datadir') + '/gstreamer-' +
|
||||
apiversion + '/validate/scenarios')
|
||||
|
||||
install_subdir('rtsp_overrides',
|
||||
install_dir: get_option('datadir') + '/gstreamer-' +
|
||||
apiversion + '/validate/scenarios')
|
||||
|
||||
env = environment()
|
||||
env.prepend('GST_VALIDATE_SCENARIOS_PATH', meson.current_source_dir())
|
||||
meson.add_devenv(env)
|
||||
@@ -0,0 +1,6 @@
|
||||
description, duration=14.0, min-media-duration=7.0
|
||||
pause, name=First-pause, playback-time=1.0, duration=1.0
|
||||
pause, name=Second-pause, playback-time=3.0, duration=5.0
|
||||
pause, name=Third-pause, playback-time=5.0, duration=1.0
|
||||
eos, name=Done-testing, playback-time=7.0
|
||||
stop, playback-time=7.0
|
||||
@@ -0,0 +1,3 @@
|
||||
description, duration=15.0
|
||||
eos, playback-time=15.0
|
||||
stop, playback-time=15.0
|
||||
@@ -0,0 +1,4 @@
|
||||
description, duration=15.0, live_content_required=True
|
||||
wait, duration=15.0
|
||||
stop
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
description, duration=5.0
|
||||
eos, playback-time=5.0
|
||||
stop, playback-time=5.0
|
||||
@@ -0,0 +1,3 @@
|
||||
description, seek=true, reverse-playback=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, name=Reverse-seek, playback-time=0.0, rate=-1.0, start="max($(duration) - 15.0, 0.0)", stop="$(duration)", flags="$(default_flags)"
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
set-vars,\
|
||||
default_flags=flush
|
||||
@@ -0,0 +1,8 @@
|
||||
description, seek=true, handles-states=true, needs_preroll=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
pause, playback-time=0.0
|
||||
seek, playback-time=0.0, start="$(duration) - 0.5", flags="$(default_flags)"
|
||||
seek, playback-time=0.0, start=position-0.1, repeat="min(10, ($(duration) - 0.6))/0.1", flags="$(default_flags)"
|
||||
play, playback-time=0.0
|
||||
stop, playback-time=1.0
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
description, seek=true, handles-states=true, needs_preroll=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
pause, playback-time=0.0
|
||||
seek, playback-time=0.0, start="$(duration) - 0.5", flags="$(default_flags)"
|
||||
seek, playback-time=0.0, start=position-0.1, repeat="($(duration) - 0.6)/0.1", flags="$(default_flags)"
|
||||
play, playback-time=0.0
|
||||
stop, playback-time=1.0
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
description, seek=true, handles-states=true, needs_preroll=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
pause, playback-time=0.0
|
||||
seek, playback-time=0.0, start=position+0.1, repeat="min(10, ($(duration) - 0.5) / 0.1)", flags="$(default_flags)"
|
||||
play, playback-time=0.0
|
||||
stop, playback-time=1.0
|
||||
@@ -0,0 +1,6 @@
|
||||
description, seek=true, handles-states=true, needs_preroll=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
pause, playback-time=0.0
|
||||
seek, playback-time=0.0, start=position+0.1, repeat="($(duration) - 0.5)/0.1", flags="$(default_flags)"
|
||||
play, playback-time=0.0
|
||||
stop, playback-time=1.0
|
||||
@@ -0,0 +1,6 @@
|
||||
description, seek=true, duration=30, need-clock-sync=true, ignore-eos=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, name=Backward-seek, playback-time="min(5.0, ($(duration) / 4))", rate=1.0, start=0.0, flags="$(default_flags)"
|
||||
seek, name=Backward-seek, playback-time="min(10.0, 2*($(duration) / 4))", rate=1.0, start="min(5.0, $(duration) / 4)", flags="$(default_flags)"
|
||||
seek, name=Backward-seek, playback-time="min(15.0, 3*($(duration) / 4))", rate=1.0, start="min(10.0, 2*($(duration) / 4))", flags="$(default_flags)"
|
||||
stop, playback-time="min(15.0, 3*($(duration) / 4))"
|
||||
@@ -0,0 +1,17 @@
|
||||
#FIXME : Rename to seek_end_live
|
||||
description, seek=true, live_content_required=true, duration=14.0
|
||||
# Wait for 5s (can't use playback-time since we don't know the position(live))
|
||||
wait, duration=5.0
|
||||
# Seek back 1min (from the end, i.e. 'now')
|
||||
seek, name=End-seek, rate=1.0, start=-60.0, start_type=end, flags=flush
|
||||
wait, duration=5.0
|
||||
# go back to live !
|
||||
seek, name=End-seek, rate=1.0, start=0.0, start_type=end, flags=flush
|
||||
wait, duration=5.0
|
||||
# Now seek backwards from the end
|
||||
seek, name=End-seek, rate=-1.0, start=0.0, start_type=none, stop=0.0, stop_type=end, flags=flush
|
||||
wait, duration=5.0
|
||||
# Try a simple seek (without setting the stop)
|
||||
seek, name=End-seek, rate=1.0, start_type=end, start=0.0, flags=flush
|
||||
wait, duration=5.0
|
||||
stop
|
||||
@@ -0,0 +1,6 @@
|
||||
description, seek=true, duration=20, need-clock-sync=true, ignore-eos=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, name=First-forward-seek, playback-time="min(5.0, ($(duration)/8))", start="min(10, 2*($(duration)/8))", flags="$(default_flags)"
|
||||
seek, name=Second-forward-seek, playback-time="min(15.0, 3*($(duration)/8))", start="min(20, 4*($(duration)/8))", flags="$(default_flags)"
|
||||
seek, name=Third-forward-seek, playback-time="min(25, 5*($(duration)/8))", start="min(30.0, 6*($(duration)/8))", flags="$(default_flags)"
|
||||
stop, playback-time="min($(duration) - 1, 35)", on-message=eos
|
||||
@@ -0,0 +1,10 @@
|
||||
description, seek=true, duration=40, min-media-duration=45.0
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, name=Forward-seek, playback-time=0.0, rate=1.0, start=5.0, flags="$(default_flags)"
|
||||
seek, name=Backward-seek, playback-time=10.0, rate=1.0, start=0.0, flags="$(default_flags)"
|
||||
seek, name=Backward-seek, playback-time=5.0, rate=1.0, start=25.0, stop=-1, flags="$(default_flags)"
|
||||
seek, name=Backward-seek, playback-time=30.0, rate=1.0, start=0.0, flags="$(default_flags)"
|
||||
seek, name=Forward-seek, playback-time=5.0, rate=1.0, start=15.0, flags="$(default_flags)"
|
||||
seek, name=Forward-seek, playback-time=20.0, rate=1.0, start=35.0, flags="$(default_flags)"
|
||||
seek, name=Backward-seek, playback-time=40.0, rate=1.0, start=25.0, flags="$(default_flags)"
|
||||
seek, name=Last-backward-seek, playback-time=30.0, rate=1.0, start=5.0, stop=10.0, flags="$(default_flags)"
|
||||
@@ -0,0 +1,3 @@
|
||||
description, seek=true, duration=5.0, need_clock_sync=true, min-media-duration=2
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, playback-time=1.0, start=0.0, stop="min(5.0, duration-1.0)", flags="$(default_flags)"
|
||||
@@ -0,0 +1,5 @@
|
||||
description, seek=true, duration=5.0
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, playback-time=1.0, rate=1.0, start=2.0, flags="$(default_flags)"
|
||||
seek, playback-time=3.0, rate=1.0, start=0.0, flags="$(default_flags)"
|
||||
seek, playback-time=1.0, rate=1.0, start=2.0, stop=3.0, flags="$(default_flags)"
|
||||
@@ -0,0 +1,3 @@
|
||||
description, summary="Change audio track at 5 second to the second audio track", min-audio-track=2, duration=10.0, min-media-duration=5.1
|
||||
switch-track, name=Next-audio-track, playback-time=5.0, type=audio, index=(string)+1
|
||||
stop, playback-time=10.0
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
description, summary="Change audio track while pipeline is paused", min-audio-track=2, duration=6.0, need-clock-sync=true, needs_preroll=true
|
||||
pause, playback-time=1.0;
|
||||
|
||||
# Wait so that humans can see the pipeline is paused
|
||||
wait, duration=0.5
|
||||
switch-track, name=Next-audio-track, type=audio, index=(string)+1
|
||||
|
||||
# Wait so that humans can see the pipeline is paused
|
||||
wait, duration=0.5
|
||||
play;
|
||||
stop, playback-time=5.0
|
||||
@@ -0,0 +1 @@
|
||||
description, summary="Change subtitle track at 1 second while paused", duration=5.0, needs-ext-file="subtitles/%s.1.srt:subtitles/%s.1.srt"
|
||||
@@ -0,0 +1,3 @@
|
||||
description, summary="Change subtitle track at 1 second while playing back", min-subtitle-track=2, duration=5.0, need-clock-sync=true
|
||||
switch-track, playback-time=1.0, type=text, index=(string)+1
|
||||
stop, playback-time=5.0
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
description, summary="Change subtitle track while pipeline is PAUSED", min-subtitle-track=2, duration=5.0, handles-states=true, need-clock-sync=true, needs_preroll=true
|
||||
pause;
|
||||
wait, duration=0.5
|
||||
switch-track, type=text, index=(string)+1
|
||||
wait, duration=0.5
|
||||
play;
|
||||
stop, playback-time=5.0
|
||||
@@ -0,0 +1,9 @@
|
||||
description, duration=10.0, seek=true, need-clock-sync=true, min-media-duration=8.0, min-video-track=1
|
||||
seek, name=Fast-forward-seek, playback-time="min(5.0, duration*0.0625)", rate=2.0, start=0.0, flags=flush+trickmode-key-units
|
||||
seek, name=Fast-forward-seek, playback-time="min(10.0, duration*0.0625)", rate=4.0, start=0.0, flags=flush+trickmode-key-units
|
||||
seek, name=Fast-forward-seek, playback-time="min(20.0, duration*0.125)", rate=8.0, start=0.0, flags=flush+trickmode-key-units
|
||||
seek, name=Fast-forward-seek, playback-time="min(40.0, duration*0.25)", rate=16.0, start=0.0, flags=flush+trickmode-key-units
|
||||
seek, name=Fast-forward-seek, playback-time="min(80.0, duration*0.50)", rate=32.0, start=0.0, flags=flush+trickmode-key-units
|
||||
# and go back to regular playback
|
||||
seek, name=regular-playback, playback-time="min(160.0, duration*0.75)", rate=1.0, start=0.0, flags=flush
|
||||
stop, playback-time="min(10.0, duration*0.0625)"
|
||||
@@ -0,0 +1,3 @@
|
||||
description, summary="Use the set seek type to seek at 5 seconds after 2 seconds", seek=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, playback-time=2.0, rate=1.0, start_type=set, start=5.0, stop_type=none, stop=0.0, flags="$(default_flags)"
|
||||
@@ -0,0 +1,4 @@
|
||||
description, summary="Use the set seek type to seek at 0 secs stop 10secs after 5 secs", seek=true
|
||||
description, duration=15.0, seek=true
|
||||
include,location=includes/default-seek-flags.scenario
|
||||
seek, playback-time=5.0, rate=1.0, start_type=none, start=0.0, stop_type=set, stop=10.0, flags="$(default_flags)"
|
||||
@@ -0,0 +1,2 @@
|
||||
core, action=set-property, target-element-klass=Filter, property-name=qos, property-value=false
|
||||
core, action=set-property, target-element-klass=Sink, property-name=max-lateness, property-value=-1, optional=true
|
||||
Reference in New Issue
Block a user