Before uploaded media files were checked by extension. This led to
situations when a plugin can support file with specific extension but
doesn't due to lack of codecs, for example. Since the plugin reported
that it supports uploaded file type, the upload was being declared
successful, but transcoding failed.
The failures were not easy to debug.
The change adds a new hook that could allow two-step checking of the
content. The result of the hook execution returns a tuple with
media type name, manager and a callable sniffer, that can be used to
perform probably expensive checks of the content.
Also the change adds implementation of the hook for video.
Porting includes:
- thumbnailer
- transcoder
- metadata handling
- new common discoverer for media
- new tests with in-memory test video generating
- handling regardless of audio availability in the file
- Pythonic gst pipelines
Previous thumbnailer didn't always work properly. It was also not ready
to be ported to GStreamer 1.0
The rewrite makes it shorter, more pythonic and prepares it for porting.
- no longer uses playbin2;
- is tested
- logs some events
- previous thumbnailer is removed
Made similar changes in the Transifex script, so ported those over.
Also, the script did not seem to be running the compile step as it
wasn't finding the files (different file structure), but it is doing
fine now.
Previously we used Transifex as a web-tool for translations. Some time
ago Transifex went proprietary and we decided to move to Pootle.
Old script for updating translations was renamed and a new one was
added. Also a script for making the layout more Pootle-friendly was
added.
To accomplish the transition first run the old script:
./devtools/update_translations_transifex.sh
Then run the layout changing script:
./devtools/move_translations_for_pootle.sh
Commit and push. After that use the new
./devtools/update_translations_pootle.sh
to update the translations.
Closes bug: #913
Added "height" and "width" attributes to "image" and "fullImage"
in the API where possible. The height and width of images wasn't
being stored anywhere so I've created a task to add or update
the metadata on images and also started adding those to new images
when they're submitted in the InitialProcessor.