...
 
Commits (333)
stages:
- build
- deploy
variables:
DBUS_ID: org.pitivi.Pitivi
XUNIT_PATH: ${CI_PROJECT_DIR}/xunit.xml
build:
image: registry.gitlab.gnome.org/gnome/pitivi:1.0-sdk_3.32
stage: build
artifacts:
paths:
- xunit.xml
script:
- export BUILDDIR=${HOME}/pitivi
- export MANIFEST=${BUILDDIR}/build/flatpak/org.pitivi.Pitivi.json
- export RUN_IN_SANDBOX="flatpak-builder --filesystem=${BUILDDIR} --filesystem=${CI_PROJECT_DIR} --env=PITIVI_DEVELOPMENT=1 --env=GST_DEBUG=2 --run app ${MANIFEST}"
# Working around the fact that flatpak-builder *requires* the cache dir
# to be on the same filesystem as the build dir
- export FLATPAK_BUILDER_CACHE="--state-dir=${HOME}/flatpak-cache"
- mv ${CI_PROJECT_DIR} ${BUILDDIR}
- mkdir -p ${CI_PROJECT_DIR}
- cd ${BUILDDIR}
- flatpak-builder ${FLATPAK_BUILDER_CACHE} --ccache --repo=${CI_PROJECT_DIR}/repo --force-clean app build/flatpak/org.pitivi.Pitivi.json --subject="Rolling update for pitivi 1.0" --body="See ${CI_JOB_URL}"
- ${RUN_IN_SANDBOX} meson mesonbuild/
- ${RUN_IN_SANDBOX} ninja -C mesonbuild/
- xvfb-run -n 32 -s "-screen 0 640x480x24" ${RUN_IN_SANDBOX} gst-validate-launcher $PWD/tests/ptv_testsuite.py --dump-on-failure --timeout-factor 4 --xunit-file ${XUNIT_PATH} --logs-dir=${CI_PROJECT_DIR}/tests-logs
cache:
paths:
- flatpak-cache
artifacts:
expire_in: 30 days
paths:
- repo/
- tests-logs/
reports:
junit:
- ${XUNIT_PATH}
deploy:
tags:
- PitiviBuildMachine
stage: deploy
script:
- flatpak build-commit-from --src-repo=repo /srv/http --timestamp=NOW --gpg-sign=739E841A
only:
- master@GNOME/pitivi
- 1.0@GNOME/pitivi
- thiblahute/sdk3.30_1.0@GNOME/pitivi
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks.git
sha: e626cd57090d8df0be21e4df0f4e55cc3511d6ab
sha: v1.1.1
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
......@@ -10,11 +11,10 @@
- id: flake8
files: .*\.py$\|bin/pitivi.in
- repo: https://github.com/pre-commit/pre-commit.git
sha: e5669ca135901120495e4d500805537abb856a1c
sha: v1.4.5
hooks:
- id: validate_config
- id: validate_manifest
- repo: https://github.com/asottile/reorder_python_imports.git
sha: 9aa4d08f9a28d3defc5e4db3c3b77d1a9980fd1a
sha: v1.0.1
hooks:
- id: reorder-python-imports
2018 August 29th - Pitivi 0.999
* Selecting a range of clips can be done by clicking followed by Shift+click
* The advanced settings of the h264 encoder allow specifying a Profile
* Rendering non-square pixels was broken and has been disabled
* The xges files have an icon associated
* The Save and Render buttons in the headerbar have been moved on the right side
* Lots of bug fixing
2017 September 2nd - Pitivi 0.99
* Many performance improvements
* Lots of bug fixing
2016 December 5th - Pitivi 0.98
* Customizable keyboard shortcuts
......@@ -119,7 +133,7 @@
* Implementing many new features
* UI polish all over the place
* Refactoring pretty much the entire codebase
* See http://wiki.pitivi.org/wiki/0.91 for details
* See http://developer.pitivi.org/releases/0-91.html for details
2012 May 3 - PiTiVi 0.15.2
* Bug fix release for a regression introduced by 0.15.1
......@@ -139,7 +153,7 @@
* Integrated offline user manual
* Cleaner advanced codec settings dialog
* Improved video thumbnailing performance
* "Soft depedencies" manager to warn the user of features requiring additional packages
* "Soft dependencies" manager to warn the user of features requiring additional packages
* Port to gtkbuilder
* Respect GNOME's button icons setting
* Improved startup time
......@@ -216,7 +230,7 @@
2008 Dec 11 - PiTiVi 0.11.3
* Remove usage of gobject as much as possible from non-ui components
* Make smarter choices about audio/video sinks
* Make smarter choices about audio/video sinks
* Fix issues with seeking in ruler/viewer
* general pylint cleanup
* Picture support in the timeline
......
0.98 Release
------------
This is the eighth release for the new version of Pitivi based on GES,
the GStreamer Editing Services library. This is mainly a bug-fix release.
Users can now customize the keyboard shortcuts.
== Requirements ==
For this release, we depend on GStreamer, Gst-Python, GES 1.10.2.
The gnome-desktop optional dependency is not used anymore.
We now use nose2 instead of nosetests for "make check".
Refer to Pitivi's check.py for the dependencies' versions for this release.
See also http://wiki.pitivi.org/wiki/Dependencies for additional tips.
== Contributors for this release ==
152 Alexandru Băluț
19 Thibault Saunier
2 Jakub Brindza
1 Piotr Drąg
1 Sebastian Dröge
Translations:
ca Jordi Mas
cs Marek Černocký
de Mario Blättermann
es Daniel Mustieles
fr Claude Paroz
hu Balázs Meskó
lt Aurimas Černius
pl Piotr Drąg
pt_BR Rafael Fontenelle
pt Tiago Santos
sk Dušan Kazik
sr Мирослав Николић
uk Daniel Korostil
== Download ==
Pitivi source tarballs are available on the GNOME FTP servers:
http://ftp.gnome.org/pub/GNOME/sources/pitivi/0.98
See the website for the official build based on flatpak.
== Information and Feedback ==
* Information for users and developers can be found on http://www.pitivi.org
* Comments and feedback are welcome.
* Pitivi bug-tracker at https://phabricator.freedesktop.org/tag/pitivi/
== Bugs Fixed ==
See https://phabricator.freedesktop.org/project/board/108/query/all/
......@@ -12,20 +12,22 @@ SCRIPT=${BASH_SOURCE[0]:-$0}
&& exit 1
SCRIPT_DIR=$(dirname $(realpath $SCRIPT))
PITIVI_REPO_DIR=$(realpath $SCRIPT_DIR/..)
export PITIVI_REPO_DIR=$(realpath $SCRIPT_DIR/..)
export FLATPAK_ENVPATH=$(realpath $PITIVI_REPO_DIR/..)
export CURRENT_GST=$FLATPAK_ENVPATH
export PATH="$FLATPAK_ENVPATH/bin/:$PATH"
# Use ptvenv for entering or running commands in the sandbox.
alias ptvenv="$PITIVI_REPO_DIR/build/flatpak/pitivi-flatpak -d"
alias ptvenv="$PITIVI_REPO_DIR/build/flatpak/pitivi-flatpak"
echo "-> Setting up the prefix for the sandbox..."
# This builds the local flatpak repo if it is not yet built.
ptvenv echo Prefix ready
ptvenv --init
if [ "$?" = "0" ];
then
# Set up environment variables and aliases so configuring, building, etc.
# takes place in the sandbox.
echo Sandbox ready.
echo Setting up aliases etc. so configuring, building takes place in the sandbox...
# Meson sets up the build directory where ninja works.
# Consider using `setup` instead of `meson`, see below.
......@@ -46,18 +48,26 @@ then
# We could get rid of these, but some devs like them.
alias build="ptvenv ninja -C mesonbuild/"
alias binstall="ptvenv ninja -C mesonbuild/ install"
alias ptvtests="ptvenv gst-validate-launcher $PITIVI_REPO_DIR/tests/ptv_testsuite.py"
# Prefer to run some binaries in the sandbox. For example "python3".
for i in `$PITIVI_REPO_DIR/build/flatpak/pitivi-flatpak -q -d ls /app/bin/`;
for i in `$PITIVI_REPO_DIR/build/flatpak/pitivi-flatpak -q ls /app/bin/`;
do
alias $i="ptvenv $i"
done
alias pitivi="ptvenv $PITIVI_REPO_DIR/bin/pitivi"
# Enter the Python virtual env to have specific dev tools,
# such as git-phab, pre-commit, etc.
source $PITIVI_REPO_DIR/build/flatpak/pyvenv/bin/activate
# Install our pre-commit git hook, for doing clean commits.
rm -f .git/hooks/pre-commit
ln -s ../../pre-commit.hook .git/hooks/pre-commit
# Update the prompt to indicate this is the Pitivi dev env.
export PS1="(ptv-flatpak) $PS1"
export PATH="$FLATPAK_ENVPATH/bin/:$PATH"
echo "===================================================================="
echo " BATTLECRUISER OPERATIONAL "
......
......@@ -17,14 +17,11 @@
# License along with this program; if not, write to the
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301, USA.
import cProfile
import gettext
import os
import sys
import signal
import locale
import gettext
import sys
from ctypes import cdll
try:
x11 = cdll.LoadLibrary('libX11.so')
......@@ -62,25 +59,26 @@ def _add_pitivi_path():
try:
import gi.overrides
except ImportError:
print(_("Could not import 'gi'. "
"Make sure you have pygobject available."))
print("Could not import 'gi'. Make sure you have pygobject.")
exit(1)
# Let Gst overrides from our prefix take precedence over any
# other, making sure they are used. This allows us to ensure that
# Gst overrides from gst-python are used when within flatpak
# other, making sure they are used.
local_overrides = os.path.join(LIBDIR, "python" + sys.version[:3],
"site-packages", "gi", "overrides")
gi.overrides.__path__.insert(0, local_overrides)
# Make sure that flatpak gst-python overrides are always used first.
flatpak_gst_python_path = os.path.join("/app/lib/", "python" + sys.version[:3],
"site-packages", "gi", "overrides")
if os.path.exists(flatpak_gst_python_path):
gi.overrides.__path__.insert(0, flatpak_gst_python_path)
dir = os.path.dirname(os.path.abspath(__file__))
if _in_devel():
root = os.path.split(dir)[0]
sys.path.append(BUILDDIR)
localedir = os.path.join(BUILDDIR, 'po')
else:
root = os.path.join(LIBDIR, 'pitivi', 'python')
localedir = os.path.join(DATADIR, "locale")
if root not in sys.path:
sys.path.append(root)
......@@ -95,16 +93,20 @@ def _add_pitivi_path():
if path not in sys.path:
sys.path.append(path)
# Added for i18n
try:
locale.setlocale(locale.LC_ALL, '')
locale.bindtextdomain('pitivi', localedir)
locale.textdomain('pitivi')
except Exception as e:
print("Couldn't set locale.", localedir, e)
# i18n
if _in_devel():
# LC_ALL is set to en_US.UTF-8 by flatpak builder which is used
# when developers run Pitivi in the development sandbox.
# We don't need to use LC_ALL when developing, so unset it
# to avoid being surprised that setting LANG does not work.
try:
del os.environ["LC_ALL"]
except KeyError:
pass
localedir = os.path.join(DATADIR, "locale")
try:
gettext.bindtextdomain('pitivi', localedir)
gettext.textdomain('pitivi')
gettext.bindtextdomain("pitivi", localedir)
gettext.textdomain("pitivi")
except Exception as e:
print("Couldn't set the gettext domain. Translations will not work.", localedir, e)
......
#!/usr/bin/env xdg-open
[Desktop Entry]
Type=Application
Terminal=true
Name=Pitivi flatpak installer and updater
Icon=pitivi
Exec=bash -c "cd `dirname %k`; echo 'Getting installation script from https://git.gnome.org/browse/pitivi/plain/build/flatpak/pitivi-flatpak'; wget https://git.gnome.org/browse/pitivi/plain/build/flatpak/pitivi-flatpak -P /tmp/ -O pitivi-flatpak > /dev/null 2>&1; chmod +x pitivi-flatpak; ./pitivi-flatpak --update --branch=stable --installer"
Description: Fix build failure on Ubuntu armel.
Bug-Ubuntu: https://launchpad.net/bugs/704027
Author: Alessio Treglia <alessio@debian.org>
---
src/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- gavl.orig/src/Makefile.am
+++ gavl/src/Makefile.am
@@ -30,7 +30,7 @@ benchmark_LDADD = ../gavl/libgavl.la @RT
volume_test_SOURCES = volume_test.c
-volume_test_LDADD = ../gavl/libgavl.la
+volume_test_LDADD = -lm ../gavl/libgavl.la
dump_frame_table_SOURCES = dump_frame_table.c
dump_frame_table_LDADD = ../gavl/libgavl.la
From 86364fd3a440cb315cca775ac7d3e3e389ef2bf4 Mon Sep 17 00:00:00 2001
From: Thibault Saunier <thibault.saunier@osg.samsung.com>
Date: Mon, 10 Jul 2017 11:43:11 -0400
Subject: [PATCH 1/2] video-transition: Make use of the new
`compositor::crossfade-ratio` property
To achieve a real transition about to handle several level of layers.
https://bugzilla.gnome.org/show_bug.cgi?id=784827
---
ges/ges-smart-video-mixer.c | 2 ++
ges/ges-video-transition.c | 49 +++++++++++++++++++++------------------------
2 files changed, 25 insertions(+), 26 deletions(-)
diff --git a/ges/ges-smart-video-mixer.c b/ges/ges-smart-video-mixer.c
index aa333bc7..b28e1a4e 100644
--- a/ges/ges-smart-video-mixer.c
+++ b/ges/ges-smart-video-mixer.c
@@ -104,6 +104,8 @@ parse_metadata (GstPad * mixer_pad, GstPadProbeInfo * info,
if (!self->disable_zorder_alpha) {
g_object_set (mixer_pad, "alpha", meta->alpha,
"zorder", meta->zorder, NULL);
+ } else {
+ g_object_set (mixer_pad, "alpha", meta->alpha, NULL);
}
g_object_set (mixer_pad, "xpos", meta->posx, "ypos",
diff --git a/ges/ges-video-transition.c b/ges/ges-video-transition.c
index 3d4b3ff6..42906201 100644
--- a/ges/ges-video-transition.c
+++ b/ges/ges-video-transition.c
@@ -50,8 +50,7 @@ struct _GESVideoTransitionPrivate
GESVideoStandardTransitionType pending_type;
/* these enable video interpolation */
- GstTimedValueControlSource *fade_in_control_source;
- GstTimedValueControlSource *fade_out_control_source;
+ GstTimedValueControlSource *crossfade_control_source;
GstTimedValueControlSource *smpte_control_source;
/* so we can support changing between wipes */
@@ -193,8 +192,7 @@ ges_video_transition_init (GESVideoTransition * self)
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
GES_TYPE_VIDEO_TRANSITION, GESVideoTransitionPrivate);
- self->priv->fade_in_control_source = NULL;
- self->priv->fade_out_control_source = NULL;
+ self->priv->crossfade_control_source = NULL;
self->priv->smpte_control_source = NULL;
self->priv->smpte = NULL;
self->priv->mixer_sink = NULL;
@@ -232,14 +230,9 @@ ges_video_transition_dispose (GObject * object)
GST_DEBUG ("disposing");
- if (priv->fade_in_control_source) {
- gst_object_unref (priv->fade_in_control_source);
- priv->fade_in_control_source = NULL;
- }
-
- if (priv->fade_out_control_source) {
- gst_object_unref (priv->fade_out_control_source);
- priv->fade_out_control_source = NULL;
+ if (priv->crossfade_control_source) {
+ gst_object_unref (priv->crossfade_control_source);
+ priv->crossfade_control_source = NULL;
}
if (priv->smpte_control_source) {
@@ -307,14 +300,17 @@ ges_video_transition_set_property (GObject * object,
static GstTimedValueControlSource *
set_interpolation (GstObject * element, GESVideoTransitionPrivate * priv,
- const gchar * propname)
+ const gchar * propname, gboolean absolute)
{
GstControlSource *control_source;
g_object_set (element, propname, (gfloat) 0.0, NULL);
control_source = gst_interpolation_control_source_new ();
+
gst_object_add_control_binding (GST_OBJECT (element),
+ absolute ? gst_direct_control_binding_new_absolute (GST_OBJECT (element),
+ propname, control_source) :
gst_direct_control_binding_new (GST_OBJECT (element), propname,
control_source));
g_object_set (control_source, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
@@ -338,8 +334,14 @@ ges_video_transition_create_element (GESTrackElement * object)
topbin = gst_bin_new ("transition-bin");
- iconva = gst_element_factory_make ("videoconvert", "tr-csp-a");
- iconvb = gst_element_factory_make ("videoconvert", "tr-csp-b");
+ iconva =
+ gst_parse_bin_from_description
+ ("videoconvert ! capsfilter caps=\"video/x-raw,format=BGRA\"", TRUE,
+ NULL);
+ iconvb =
+ gst_parse_bin_from_description
+ ("videoconvert ! capsfilter caps=\"video/x-raw,format=BGRA\"", TRUE,
+ NULL);
priv->positioner =
gst_element_factory_make ("framepositioner", "frame_tagger");
g_object_set (priv->positioner, "zorder",
@@ -386,12 +388,11 @@ ges_video_transition_create_element (GESTrackElement * object)
/* set up interpolation */
- priv->fade_out_control_source =
- set_interpolation (GST_OBJECT (priv->mixer_sinka), priv, "alpha");
- priv->fade_in_control_source =
- set_interpolation (GST_OBJECT (priv->mixer_sinkb), priv, "alpha");
+ priv->crossfade_control_source =
+ set_interpolation (GST_OBJECT (priv->mixer_sinka), priv,
+ "crossfade-ratio", TRUE);
priv->smpte_control_source =
- set_interpolation (GST_OBJECT (priv->smpte), priv, "position");
+ set_interpolation (GST_OBJECT (priv->smpte), priv, "position", FALSE);
priv->mixer = gst_object_ref (mixer);
if (priv->pending_type)
@@ -459,16 +460,12 @@ ges_video_transition_update_control_sources (GESVideoTransition * self,
GST_LOG ("updating controller");
if (type == GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE) {
ges_video_transition_update_control_source
- (priv->fade_in_control_source, duration, 0.0, 1.0);
- ges_video_transition_update_control_source
- (priv->fade_out_control_source, duration, 1.0, 0.0);
+ (priv->crossfade_control_source, duration, 1.0, 0.0);
ges_video_transition_update_control_source (priv->smpte_control_source,
duration, 0.0, 0.0);
} else {
ges_video_transition_update_control_source
- (priv->fade_in_control_source, duration, 1.0, 1.0);
- ges_video_transition_update_control_source
- (priv->fade_out_control_source, duration, 1.0, 1.0);
+ (priv->crossfade_control_source, duration, 1.0, 1.0);
ges_video_transition_update_control_source (priv->smpte_control_source,
duration, 1.0, 0.0);
}
--
2.13.3
From fc2c56a52421a68ac41e5162da03eb909440b169 Mon Sep 17 00:00:00 2001
From: Thibault Saunier <thibault.saunier@osg.samsung.com>
Date: Thu, 3 Aug 2017 17:03:31 -0400
Subject: [PATCH 2/2] transition: Fix usage of transition types != crossfade
We need to make sure the crossfade ratio is disabled in that case.
---
ges/ges-video-transition.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ges/ges-video-transition.c b/ges/ges-video-transition.c
index 42906201..29479c5a 100644
--- a/ges/ges-video-transition.c
+++ b/ges/ges-video-transition.c
@@ -465,7 +465,7 @@ ges_video_transition_update_control_sources (GESVideoTransition * self,
duration, 0.0, 0.0);
} else {
ges_video_transition_update_control_source
- (priv->crossfade_control_source, duration, 1.0, 1.0);
+ (priv->crossfade_control_source, duration, -1.0, -1.0);
ges_video_transition_update_control_source (priv->smpte_control_source,
duration, 1.0, 0.0);
}
--
2.13.3
This diff is collapsed.
[GStreamer Encoding Target]
name=matroska
category=device
description=Standard config for jpeg and raw audio in matroska
[profile-default]
name=default
type=container
description[c]=Matroska muxer with default configs
format=video/x-matroska
[streamprofile-raw]
parent=default
type=audio
format=audio/x-raw
presence=0
[streamprofile-jpeg]
parent=default
type=video
format=image/jpeg
presence=0
pass=0
variableframerate=false
preset=Quality High
[GStreamer Encoding Target]
name=matroskaproresraw
category=device
description=Standard config for prores and raw audio in matroska
[profile-default]
name=default
type=container
description[c]=Matroska muxer with default configs
format=video/x-matroska
[streamprofile-raw]
parent=default
type=audio
format=audio/x-raw
presence=0
[streamprofile-prores]
parent=default
type=video
format=video/x-prores
presence=0
pass=0
variableframerate=false
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='pitivi-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:osb='http://www.openswatchbook.org/uri/2009/osb' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' version='1.1' inkscape:version='0.92.3 (2405546, 2018-03-11)' viewBox='0 0 16 16' width='16' xmlns='http://www.w3.org/2000/svg'>
<metadata id='metadata90'>
<rdf:RDF>
<cc:Work rdf:about=''>
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
<dc:title>Gnome Symbolic Icon Theme</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='76.063424' inkscape:cy='-65.527666' inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='56,310.597' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-edge-midpoints='true' inkscape:snap-bbox-midpoints='true' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='true' inkscape:snap-to-guides='true' inkscape:window-height='836' inkscape:window-maximized='1' inkscape:window-width='1440' inkscape:window-x='0' inkscape:window-y='27' inkscape:zoom='2'>
<inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='-162.00002' originy='-301.99999' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
</sodipodi:namedview>
<title id='title9167'>Gnome Symbolic Icon Theme</title>
<defs id='defs7386'>
<linearGradient id='linearGradient7212' osb:paint='solid'>
<stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
</linearGradient>
</defs>
<g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-403.00022,84.999986)'>
<path inkscape:connector-curvature='0' d='m 406.0002,-83 c -1.108,0 -2,0.892 -2,2 v 8 c 0,1.108 0.892,2 2,2 h 10 c 1.108,0 2,-0.892 2,-2 v -10 h -2 l 1,2 -1,2 h -2 l 1,-2 -1,-2 h -2 l 1,2 -1,2 h -2 l 1,-2 -1,-2 h -2 l 1,2 -1,2 h -2 l 1,-2 z' id='rect11201' style='display:inline;opacity:1;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;paint-order:normal'/>
</g>
</svg>
sizes = ['16x16', '24x24', '32x32', '512x512', '22x22', '256x256', '48x48']
themedir = get_option('datadir') + '/icons/hicolor/'
themedir = join_paths(get_option('datadir'), 'icons/hicolor')
sizes = ['16x16', '22x22', '24x24', '32x32', '48x48', '256x256', '512x512']
foreach size: sizes
install_data(size + '/pitivi.png', install_dir: themedir + size + '/apps/')
install_data(join_paths('hicolor', size, 'apps/org.pitivi.Pitivi.png'), install_dir: join_paths(themedir, size, 'apps'))
endforeach
install_data('hicolor/symbolic/apps/org.pitivi.Pitivi-symbolic.svg', install_dir: join_paths(themedir, 'symbolic/apps'))
app_icon_sizes = ['16x16', '24x24', '32x32', '48x48', '512x512']
foreach size: app_icon_sizes
install_data(join_paths('hicolor', size, 'mimetypes/text-x-xges.png'), install_dir: join_paths(themedir, join_paths(size, 'mimetypes')))
endforeach
......@@ -6,16 +6,26 @@ install_subdir('audiopresets', install_dir: pkgdatadir)
install_subdir('videopresets', install_dir: pkgdatadir)
install_subdir('gstpresets', install_dir: pkgdatadir)
custom_target('pitivi.desktop',
output : 'pitivi.desktop',
input : 'pitivi.desktop.in',
command : [intltool_merge, '--desktop-style', podir, '@INPUT@', '@OUTPUT@'],
i18n.merge_file('org.pitivi.Pitivi.desktop',
type: 'desktop',
output : 'org.pitivi.Pitivi.desktop',
input : 'org.pitivi.Pitivi.desktop.in',
po_dir: podir,
install : true,
install_dir : get_option('datadir') + '/applications')
install_dir : join_paths(get_option('datadir'), 'applications'))
custom_target('pitivi.appdata.xml',
output : 'pitivi.appdata.xml',
input : 'pitivi.appdata.xml.in',
command : [intltool_merge, '--xml-style', podir, '@INPUT@', '@OUTPUT@'],
i18n.merge_file('org.pitivi.Pitivi.appdata.xml',
type: 'xml',
output : 'org.pitivi.Pitivi.appdata.xml',
input : 'org.pitivi.Pitivi.appdata.xml.in',
po_dir: podir,
install : true,
install_dir : get_option('datadir') + '/appdata')
install_dir : join_paths(get_option('datadir'), 'metainfo'))
i18n.merge_file('org.pitivi.Pitivi-mime.xml',
output : 'org.pitivi.Pitivi-mime.xml',
input : 'org.pitivi.Pitivi-mime.xml.in',
po_dir: podir,
data_dirs: itsdir,
install: true,
install_dir : join_paths(get_option('datadir'), 'mime/packages'))
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/x-xptv">
<comment>Pitivi video project (legacy)</comment>
<glob pattern="*.xptv"/>
<generic-icon name="text-x-xges"/>
<magic priority="50">
<match type="string" offset="0" value="&lt;pitivi"/>
</magic>
</mime-type>
<mime-type type="text/x-xges">
<comment>Pitivi/GES video project</comment>
<glob pattern="*.xges"/>
<generic-icon name="text-x-xges"/>
<magic priority="50">
<match type="string" offset="0" value="&lt;ges"/>
</magic>
</mime-type>
</mime-info>
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2013 Jean-François Fortin Tam <nekohayo@gmail.com> -->
<component type="desktop">
<id>org.pitivi.Pitivi</id>
<launchable type="desktop-id">org.pitivi.Pitivi.desktop</launchable>
<metadata_license>CC-BY-3.0</metadata_license>
<project_license>LGPL-2.0+</project_license>
<name>Pitivi</name>
<summary>Create and edit your own movies</summary>
<description>
<p>Pitivi is a video editor that aims to appeal to hobbyists and professionals alike, with a strong focus on efficiency, quality and usability. It integrates well with other applications and sports a beautiful user interface designed to be powerful yet easy to learn.</p>
<p>With a non-modal editing workflow, a framerate-independent and playhead-centric timeline, Pitivi allows you quickly and accurately trim, split and review your scenes. Pitivi's ripple and roll editing features allow spending more time on storytelling and less time on "pushing clips around".</p>
<p>Some other features include:</p>
<ul>
<li>Accepts any file formats supported by the GStreamer multimedia framework</li>
<li>Can animate hundreds of special effects and filters with keyframable properties</li>
<li>Ability to set custom aspect ratios, framerates and rendering presets</li>
<li>Easy to use crossfades and SMPTE transitions</li>
<li>Multihead-friendly with detachable user interface components</li>
</ul>
</description>
<screenshots>
<screenshot type="default">
<image>http://www.pitivi.org/i/screenshots/software_center_main.jpg</image>
</screenshot>
</screenshots>
<url type="homepage">http://www.pitivi.org</url>
<url type="bugtracker">https://gitlab.gnome.org/GNOME/pitivi/</url>
<url type="donation">http://www.pitivi.org/?go=donators</url>
<url type="help">http://www.pitivi.org/manual/</url>
<url type="translate">https://wiki.gnome.org/TranslationProject#How_can_I_help.3F</url>
<kudos>
<kudo>HiDpiIcon</kudo>
<kudo>UserDocs</kudo>
<kudo>ModernToolkit</kudo>
<kudo>Notifications</kudo>
</kudos>
<update_contact>pitivi@pitivi.org</update_contact>
<project_group>GNOME</project_group>
<translation type="gettext">pitivi</translation>
<developer_name>The Pitivi Team</developer_name>
<releases>
<release version="0.999" date="2018-08-20">
<description>
<p>
This release includes bug fixes, small important features, and a feature removal.
</p>
<ul>
<li>Rendering non-square pixels was broken and has been disabled.</li>
<li>Selecting a range of clips can be done by clicking followed by Shift+click.</li>
<li>The advanced settings of the h264 encoder allow specifying a Profile.</li>
<li>The xges files have an icon associated.</li>
<li>The Save and Render buttons in the headerbar have been moved on the right side.</li>
</ul>
</description>
</release>
<release version="0.99" date="2017-09-21">
<description>
<p>
This release includes bug fixes and performance improvements.
</p>
</description>
</release>
<release version="0.98" date="2016-12-06">
<description>
<p>
This release includes bug fixes, and allows customizing the
keyboard shortcuts.
</p>
</description>
</release>
<release version="0.97" date="2016-08-08">
<description>
<p>
This release includes bug fixes and shows in the rendering dialog
what encoders and muxers are officially supported.
</p>
</description>
</release>
<release version="0.96" date="2016-06-30">
<description>
<p>
This release includes bug fixes, usability improvements, and
one important accuracy improvement.
</p>
<ul>
<li>Media files using an unsupported format can be transcoded
automatically into high-quality proxy files for reliable
processing.</li>
<li>Initial project settings are computed automatically when
the first media files are imported.</li>
<li>The project settings and rendering dialogs have been redesigned
for fast access.</li>
<li>The undo/redo system has been refactored and re-enabled.</li>
<li>The keyboard shortcuts can be revealed with Ctrl+F1.</li>
</ul>
</description>
</release>
</releases>
<content_rating type="oars-1.1">
<content_attribute id="violence-cartoon">none</content_attribute>
<content_attribute id="violence-fantasy">none</content_attribute>
<content_attribute id="violence-realistic">none</content_attribute>
<content_attribute id="violence-bloodshed">none</content_attribute>
<content_attribute id="violence-sexual">none</content_attribute>
<content_attribute id="violence-desecration">none</content_attribute>
<content_attribute id="violence-slavery">none</content_attribute>
<content_attribute id="violence-worship">none</content_attribute>
<content_attribute id="drugs-alcohol">none</content_attribute>
<content_attribute id="drugs-narcotics">none</content_attribute>
<content_attribute id="drugs-tobacco">none</content_attribute>
<content_attribute id="sex-nudity">none</content_attribute>
<content_attribute id="sex-themes">none</content_attribute>
<content_attribute id="sex-homosexuality">none</content_attribute>
<content_attribute id="sex-prostitution">none</content_attribute>
<content_attribute id="sex-adultery">none</content_attribute>
<content_attribute id="sex-appearance">none</content_attribute>
<content_attribute id="language-profanity">none</content_attribute>
<content_attribute id="language-humor">none</content_attribute>
<content_attribute id="language-discrimination">none</content_attribute>
<content_attribute id="social-chat">none</content_attribute>
<content_attribute id="social-info">none</content_attribute>
<content_attribute id="social-audio">none</content_attribute>
<content_attribute id="social-location">none</content_attribute>
<content_attribute id="social-contacts">none</content_attribute>
<content_attribute id="money-purchasing">none</content_attribute>
<content_attribute id="money-gambling">none</content_attribute>
</content_rating>
</component>
[Desktop Entry]
Encoding=UTF-8
_Name=Pitivi
_GenericName=Video Editor
_Comment=Create and edit your own movies
Name=Pitivi
GenericName=Video Editor
Comment=Create and edit your own movies
Exec=pitivi %f
Terminal=false
Type=Application
Icon=pitivi
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=org.pitivi.Pitivi
Categories=GNOME;GTK;AudioVideo;Video;AudioVideoEditing;
MimeType=text/x-xges;text/x-xptv;
StartupNotify=true
_Keywords=video;film;movie;editor;
# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
Keywords=video;film;movie;editor;
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2013 Jean-François Fortin Tam <nekohayo@gmail.com> -->
<component type="desktop">
<id>pitivi.desktop</id>
<metadata_license>CC-BY-3.0</metadata_license>
<project_license>LGPL-2.0+</project_license>
<_name>Pitivi</_name>
<_summary>Create and edit your own movies</_summary>
<description>
<_p>Pitivi is a video editor that aims to appeal to hobbyists and professionals alike, with a strong focus on efficiency, quality and usability. It integrates well with other applications and sports a beautiful user interface designed to be powerful yet easy to learn.</_p>
<_p>With a non-modal editing workflow, a framerate-independent and playhead-centric timeline, Pitivi allows you quickly and accurately trim, split and review your scenes. Pitivi's ripple and roll editing features allow spending more time on storytelling and less time on "pushing clips around".</_p>
<_p>Some other features include:</_p>
<ul>
<_li>Accepts any file formats supported by the GStreamer multimedia framework</_li>
<_li>Can animate hundreds of special effects and filters with keyframable properties</_li>
<_li>Ability to set custom aspect ratios, framerates and rendering presets</_li>
<_li>Easy to use crossfades and SMPTE transitions</_li>
<_li>Multihead-friendly with detachable user interface components</_li>
</ul>
</description>
<screenshots>
<screenshot type="default">
<image>http://www.pitivi.org/i/screenshots/software_center_main.jpg</image>
</screenshot>
</screenshots>
<url type="homepage">http://www.pitivi.org</url>
<url type="bugtracker">https://phabricator.freedesktop.org/tag/pitivi/</url>
<url type="donation">http://www.pitivi.org/?go=donators</url>
<url type="help">http://www.pitivi.org/manual/</url>
<url type="translate">https://wiki.gnome.org/TranslationProject#How_can_I_help.3F</url>
<kudos>
<kudo>HiDpiIcon</kudo>
<kudo>UserDocs</kudo>
<kudo>ModernToolkit</kudo>
<kudo>Notifications</kudo>
</kudos>
<update_contact>nekohayo@gmail.com</update_contact>
<project_group>GNOME</project_group>
<translation type="gettext">pitivi</translation>
<_developer_name>The Pitivi Team</_developer_name>
</component>
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.1 -->
<!-- Generated with glade 3.22.0 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkMenu" id="menu">
<property name="visible">True</property>
<requires lib="gtk+" version="3.18"/>
<object class="GtkPopoverMenu" id="menu">
<property name="can_focus">False</property>
<property name="halign">end</property>
<child>
<object class="GtkMenuItem" id="menu_new">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action_name">win.new-project</property>
<property name="label" translatable="yes">New project</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_open">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action_name">win.open-project</property>
<property name="label" translatable="yes">Open project...</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="menu_sep1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_save_as">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Save the current project under a new name or a different location</property>
<property name="action_name">win.save-as</property>
<property name="label" translatable="yes">Save As...</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_revert_to_saved">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Reload the current project</property>
<property name="label" translatable="yes">Revert to saved version</property>
<property name="use_underline">True</property>
<signal name="activate" handler="_revertToSavedProjectCb" swapped="no"/>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_export_tarball">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Export the current project and all its media in a .tar archive</property>
<property name="label" translatable="yes">Export as Archive...</property>
<property name="use_underline">True</property>
<signal name="activate" handler="_exportProjectAsTarCb" swapped="no"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="menu_sep2">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_save_frame">
<object class="GtkBox" id="menu_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Export the frame at the current playhead position as an image file.</property>
<property name="label" translatable="yes">Export current frame...</property>
<property name="use_underline">True</property>
<signal name="activate" handler="_screenshotCb" swapped="no"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="menu_sep3">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_project_settings">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Edit the project settings</property>
<property name="label" translatable="yes">Project Settings</property>
<property name="use_underline">True</property>
<signal name="activate" handler="_projectSettingsCb" swapped="no"/>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_preferences">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Preferences</property>
<property name="use_underline">True</property>
<signal name="activate" handler="_prefsCb" swapped="no"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="menu_sep4">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_shortcuts">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action_name">app.shortcuts_window</property>
<property name="label" translatable="yes">Keyboard Shortcuts</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_help">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action_name">win.help</property>
<property name="label" translatable="yes">User Manual</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_about">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">About</property>
<property name="use_underline">True</property>
<signal name="activate" handler="_aboutCb" swapped="no"/>
</object>
<property name="margin">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkModelButton" id="menu_new">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="action_name">win.new-project</property>
<property name="text" translatable="yes">New project</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_open">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="action_name">win.open-project</property>
<property name="text" translatable="yes">Open project...</property>
</object>
</child>
<child>
<object class="GtkSeparator" id="menu_sep1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_save_as">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Save the current project under a new name or a different location</property>
<property name="action_name">win.save-as</property>
<property name="text" translatable="yes">Save As...</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_revert_to_saved">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Reload the current project</property>
<property name="action_name">win.revert-to-saved</property>
<property name="text" translatable="yes">Revert to saved version</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_export_tarball">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Export the current project and all its media in a .tar archive</property>
<property name="action_name">win.export-project</property>
<property name="text" translatable="yes">Export as Archive...</property>
</object>
</child>
<child>
<object class="GtkSeparator" id="menu_sep2">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_save_frame">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Export the frame at the current playhead position as an image file.</property>
<property name="action_name">win.save-frame</property>
<property name="text" translatable="yes">Export current frame...</property>
</object>
</child>
<child>
<object class="GtkSeparator" id="menu_sep3">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_project_settings">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Edit the project settings</property>
<property name="action_name">win.project-settings</property>
<property name="text" translatable="yes">Project Settings</property>
</object>
</child>
<child>
<object class="GtkSeparator" id="menu_sep4">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_preferences">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="action_name">win.preferences</property>
<property name="text" translatable="yes">Preferences</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_shortcuts">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="action_name">app.shortcuts_window</property>
<property name="text" translatable="yes">Keyboard Shortcuts</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_help">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="action_name">win.help</property>
<property name="text" translatable="yes">User Manual</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="menu_about">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="action_name">win.about</property>
<property name="text" translatable="yes">About Pitivi</property>
</object>
</child>
</object>
<packing>
<property name="submenu">main</property>
<property name="position">1</property>
</packing>
</child>
</object>
<object class="GtkMenuButton" id="menubutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="popup">menu</property>
<property name="popover">menu</property>
<child>
<object class="GtkImage" id="open_menu_image">
<property name="visible">True</property>
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.19.0 -->
<!-- Generated with glade 3.22.0 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkAdjustment" id="adjustment1">
......@@ -215,7 +215,7 @@
<object class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="no">x</property>
<property name="label">x</property>
</object>
<packing>
<property name="expand">False</property>
......@@ -280,115 +280,6 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="aspect_ratio_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Aspect Ratio:</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="aspect_ratio_grid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkRadioButton" id="select_dar_radiobutton">
<property name="label" translatable="yes" comments="DAR is the aspect ratio of the image being displayed to the viewer. &quot;Display&quot; is used as a noun, not as a verb/action.">Display aspect ratio</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="halign">start</property>
<property name="xalign">0.5</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="_selectDarRadiobuttonToggledCb" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="dar_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCellRendererText" id="renderer1"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="par_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCellRendererText" id="renderer2"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>