Sunday, July 13, 2014

GstCreator - introduction


I'd like to introduce to you my OpenSource project - GstCreator [1]. It's some kind of IDE for GStreamer framework [2]. User can rapidly prototype GStreamer pipeline, and (in the future, not implemented yet) generate C or C++ file with code.
However, user can peek buffers, events and queries on every single pad.

Toolchain
Entire project is written in C++. I'm using Qt library [3](maybe in the future it will be replaced by Gtk+ [4], will see). CMake [5] is my build system. I don't use GStreamer directly, but gstreamermm library [6], which is C++ wrapper for GStreamer framework. It's because of two reasons: 
  • don't like mix 2 languages in one project (even if syntax of both languages is very similar)
  • I'm currently maintainer of gstreamermm project, and use this library by myself helps me find and eliminate a lot of bugs.
Development plan
GstCreator is not ready, ah, it's quite long long way to make first release of this application. But I'm of good cheer.
The list of most important features, which should be implemented in the nearest future:
  • linking to a `sometimes` pads
  • improved `ProbesWatcher` module by showing more informations about buffers, events, and queries, and adding possibility for filtering data
  • save & load project
List above shows only the most important tasks, but there is a lot of minor bugs, which should be implemented ASAP. There is a lot ideas in my head, how to improve this tool, made it more useful and powerful ;)
I hope, some of you will enjoy this application, maybe there is also somebody, who'd like to help me in development ;)
I'm also waiting for your ideas connected to this project. Maybe some features are especially useful, but I didn't notice it;)

I will inform you here about my progress, new features ;)

Quiz
And at the end, short (and easy) quiz: What film is played on a screenshoot shown below?

GstCreator during playing udp stream

Links 
[1] https://github.com/loganek/gstcreator
[2] http://gstreamer.freedesktop.org/
[3] http://qt-project.org/
[4] http://www.gtk.org/
[5] http://cmake.org/
[6] https://git.gnome.org/browse/gstreamermm/

Friday, July 11, 2014

Creating SQL database `on the fly` - sqlfiddle.com

Recently I had to write some SQL queries in a quite advanced application (Banshee [1]). I'm not an expert in SQL, so I had to work through trial and error. But recompilation and restart application every time, when I changed something, was very time consuming. Unfortunately, I didn't use my own computer, and I hadn't installed(and I wasn't able to install) any SQLite shell. I started to looking for web interface for SQLite database.
One of the first result in Google was sqlfiddle [2] page. At first sight website looks very simple. And in reality - it is. On the left side you have to write DDL statements, and on the right side, you may use created schema by sending some queries.
For now, service offers many different databases:
  • MySQL (a few versions)
  • Oracle
  • PostgreSQL (a few versions)
  • SQLite
  • MS SQL Server (a few versions)
You may also generate link to your case, and paste id e.g. in some forum or irc channel.
There is also a lot of minor features, which can be use
ful in specified cases:
  • 3 types of displaying results,
  • execution time measurement,
  • query execution plan,
  • different query terminators,
and many others, which I probably missed. I would highly recommend at least try this tool. Maybe you would like it, and will use it in your daily work ;)

sqlfiddle in action

Links
[1] http://banshee.fm/
[2] http://sqlfiddle.com/

Thursday, July 10, 2014

GSoC Report #3

Finally I added all planned earlier options to my Banshee's plugin:
  • Empty Album Name - looking for tracks with empty album's name,
  • Missing Artist and Titles Fix - looking for tracks with empty fields Artist and/or Title,
  • Missing Albums Fix - looking for tracks with empty album's name,
  • Missing Most of Metadata Fix - looking for tracks with empty fields: Album, Artist, and Title,
  • Invalid Metadata Fix - looking for tracks with invalid(it means, different from online database) metadata.
All of them, except Empty Album Name, use fingerprints. So that's also the difference between Empty Album Name and Missing Album Fix. The first one uses track title and artist name, so you can't use it for looking track with empty albums and/or titles. The second one can be used even for tracks with no metadata, because it takes fingerprints for searching.

All available options in Metadata Fixer


Changes in code
There was a lot of changes in my source code. Before my GSoC attendance, I haven't so much experience in functional programming, so I wasn't able to use all of advantages, which come from F# language. Fortunatelly, my mentor, Andrés G. Aragoneses, is very helpful, so thanks his few advices, I refactored some pieces of code in my plugin. I hope, my code looks now much better now;)