Thursday, September 4, 2008
An alpha for python version
I've been talking with Stefan and I'll probably change to implement the gstms core (gstms.py) in C language, to integrate better with gstreamer. I'm just thinking how can I do this, and for now I'm seriously thinking in do it as a gst bin, like decodebin and playbin. I made a diagram of how this could be, profile_diagram, but not sure how could be this XML data profile in sink pad. Probably it's better as a property, but I'm not sure if I can use xml data as gobject property.
Friday, August 22, 2008
A gst bug?
I posted a simple example at http://gstreamer.pastebin.com/m4fd1d90e , it's based in the decodebin.py example from pygst but I changed to convert to audio and do it 50 times. You can just run it on a terminal with a video as parameter, and check if all 50 videos passed ok. If they pass ok, try sometimes, it's very rarely to happen on this example, as it's a small program, but on gstms is giving many times. I want to know if this bug just happens on my computer or it's a gst bug - or if I'm forgetting something else. BTW, I'm using Ubuntu 8.04 and last stable gstreamer.
If you want to check the alpha version - which I didn't released yet because of this bug - you can download it from svn.
Thursday, August 14, 2008
Trying to release an alpha version
Also, I want to release an alpha on the Google Summer of Code deadline, August 18th, so, expect something working on my next post. The interface is working ok, and conversion is going rightly, reading elements and constructing pipeline from EncodingProfiles.
Tuesday, July 29, 2008
Continuing Encoding Profiles
But, as nothing is so good, I have some new problems:
- I need to guess some useful properties - this is needed to basic user interface, as if I show all possible elements properties will turn gstms too hard to use. I'm handling it telling some possible properties, if they don't exist, doesn't matter - let the default value be used. Also, I pretend to change the graphical interface of gstms to advanced mode, so in this mode user can set each property by hand, and here I can just read all possible properties and show on the interface.
- Connections - how gstms can connect elements in a correct pipeline? I'm not 100% sure about this solution, but I'm only describing each possible-element source, so gstms can search for a element that fits on this source. Also, each possible-element can have, optionally, a tag named recommended-elements which recommends gstms to elements in gst that can be used. I'm not so sure about video conversions, I need to build one first.
- audioconvert, ffmpegcolorspace - these two elements are always used in audio and video conversion, to change raw audio and raw video formats. But, is there any other element like this? Can I search automatically for them, with possibly another name? I didn't solve it.
For who want to know how is going the xml format, here a link to websvn of google project. Please, comment, community opinions have being very useful to the project!
Saturday, July 19, 2008
Starting Encoding Profiles
A way that I was thinking is like:
<element id="audioconvert" type="required">
<element id="lame" type="required">
<property id="bitrate" type="optional">
<property id="vbr" type="">
<if expression="vbr!=0"> <!-- vbr!=0 need to use html encoded chars -->
<property>
</property>
</if>
<if expression="vbr != 0">
<element id="xingmux" type="optional">
<element id="id3v2mux" type="optional">
<else>
<if expression="exist(id3v2mux)">
<element id="id3v2mux" type="optional">
<elif expression="exist(id3mux)">
<element id="id3mux type=">
</element>
</elif>
Suggestions?
update: I corrected the XML code which was not appearing.
Sunday, July 6, 2008
A dialog proposal for conversions
Files to convert: is a list that user can add or remove files with the right-side buttons, where user can add any number of files to input them. I'm not sure if that way is understandable to the user that he can choose many files to do a batch operation or he can choose audio and/or video and/or images to mix them. When a file is added, the list can have the properties on it to set properties of the mix (like in what time it should be shown, for how much time if is a image, what is it volume if is a sound, and so on). Not intented to be released at a first time, the input could be a stream or an URI address, considering any stream too.
Video Output: here user (or the application which uses this dialog) choose the video format, based in the Encoding Profiles. Each profile has some properties, which is under discussion at the EncodingProfiles section. The default option depends of the input, the selected files: If user choose only audio files, the video appears as "No Video" (better is to disable it). If he choose a video, this box goes to a "maintain the same format" option, considering that there weren't any application which called the dialog with a format input. If user choose many videos, the dialog counts how much videos have of each format and the major format is the selected, so user can convert the minority videos to the majority format. If user choose videos and images, audios and videos, audios videos and images together, or just images, it's a mix case and dialog can handle this by showing some advanced options for each file selected.
Audio Output: default is to let the same audio. When user choose a video format, the audio choose the video-audio's profile, as I'm planning that all videos links audio profiles for its audio part. A "No Audio" option need to be done too.
Target folder: Where the results should be dropped. - problem with the mix operation: how can I presume what is the name of resulting file? Should I add another field for it if I detect a mix case?
Bottom Buttons: Edit profiles is a button to open the Profiles Editor, a tool that I want to do later, to help users to build their own profiles. At least, this button can let the user build its own pipeline, or change a pre-defined one. Transcode button transcode the files (is it the best name? Should I use Convert / Extract / Mix depending of selected operation?), and appear two new buttons when the operation is finished: "Close" and "Open target". A progress screen should appear when the transcode button is pressed.
Any suggestions, just drop in comments!
Monday, June 23, 2008
Desired transcode operations
I also created a space at google code where you all can track my work of transcoder application, and redesigned the wiki. I also didn't so much in this last week because of some exams, and I have some this week too so I want to collect information to the application too, while I'll design some possible UI dialogs for the project. The idea of these dialogs is to offer them as a part of gst-media-services to all applications, so a great challenge on this is how to make them usable by different apps. Suggestions are welcome.
Tuesday, June 10, 2008
Reading from Gst Registry
It was not hard to read plugins and their features - as these all are very well documented in Gstreamer docs, I just lost some time searching the "get_possible_dynamic_pad_templates". The possible dynamic pads templates are included in the static templates... So I read their pads templates and caps, then I just need to parse them in somehow to it help in building profiles list. Parsing registry is needed too to check if plugins from each transcode operation are available.
With registry parsed, now comes the question: How it could help to build the list? A way that I'm thinking on is to rank the features by their caps mimetypes which each one can generate, and then somehow put them in XML list to help others to compose each transcode operation. Another way is to just build a table with these info, allowing re-ordering and filtering according to each feature details. Ideas?
Tuesday, June 3, 2008
Encoding Profiles
I'm also comparing some transcoder applications at my project wiki too. If you know any other open source application that I didn't cited at wiki, please just leave a comment there to I analyze it and check if I can get anything to help me on my project!
Now this week I'll delay Encoding Profiles to do, as a Stefan's suggestion, a python script to dump possible configurations for codecs and themselves from registry, so any example script that does something like this is welcome too!
Saturday, May 3, 2008
Hello world
For who is interested in more details, check the wiki design at Gstreamer Wiki. This blog is intended to report what I'm doing during my (winter) summer, so please contribute with suggestions always, as I'm here to learn with everyone. Oh, and vote for what is the best name of this project, in this blog poll, I don't like MediaTrans too much.