Showing posts with label ui. Show all posts
Showing posts with label ui. Show all posts

Friday, August 22, 2008

A gst bug?

I was trying these last two weeks, while I'm working in UI features, to figure out why sometimes my conversion freezes. I debugged a bit and found that, rarely, if I don't put a time.sleep(1) before playing the pipeline, the pipeline goes to READY state instead of going to PLAYING state. Query goes to position 0, and no error message, neither warning, are sent from bus. If I try to change again to PLAYING state, it stays in READY.

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.

Tuesday, July 29, 2008

Continuing Encoding Profiles

Ok, thanks to my previous post comments, I changed the profile XML format. Now I'm not representing the pipeline on itself, but just describing how can be the elements to my program find elements in gstRegistry, and so connect them to construct a pipeline. The good point on this is to possible different elements, so gstms - gst-media-services, this project - can work in different devices, with different elements sets.

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.
Also, I'm fearing that gstms find some element which, for some unknown reason, doesn't work for a conversion. So, in this case, how can I handle it? And what about elements that are not encoders, like id3v2mux, how can I search for a possible element like this?

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

Two weeks without reporting, but here I am. I spent this time with implementing the proposed interface, which I did all in glade format and I can easily edit it. Also, the project is detecting format - oh, I spent some hours implementing my own pipeline with decodebin to get info from files in the input and just later I found gst.extend.discoverer... ok, now I have more experience with pipelines, and I'm working in the xml format - I really don't know for now how can I represent the pipelines for themselves, as they need some processing power. For an example, to encode to mp3 I can use id3mux or id3v2mux, but to choose one I need to tell to try each. I saw the method of Banshee, using S-expression, is very useful but I would like to use only XML, just not sure exactly how.

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.

Monday, June 23, 2008

Desired transcode operations

I'm inviting everyone to help with the desired transcode operations, what operations of conversion, extraction and merging of videos, audios and why not images do you want to do easily, or you already do but not so easily. Here at the project wiki you can just use the template to fill with your operations. This can contribute to I see what Gstreamer can offer (with my gst-registry read, previous post) and what people want to do. And if you hate wikis you can email me or just comment here at the blog and I put at the wiki!
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.