GSoC Weekly Code Report 7

This week was very hard to work due to extremely hot in St. Petersburg. Sometimes head was boiling up, and only cold water had been saving situation a bit :) Especially it was hard in public conveyances when there were a lot of people. It was hard to be at home, too. I really wanna winter back now :) I'm a bit late with my report, but that's because I wanted to finish some stuff before doing it. All my free time I worked at GStreamer generic chapters support and it's implementation in Matroska element. And I have some cool results to report:
  • first of all, I was reading EBML and Matroska specifications, and tried to understand how Matroska element in GStreamer works;
  • discussed with Sebastian Dröge design of generic chapters - structures and working principles. It can be changed at any time, but for now chapters described using two structures - GstTocInfo and GstTocEntryInfo:
    typedef struct _GstTocInfo {
    GList *subentries;
    GstTagList *tags;
    gboolean updated;
    } GstTocInfo;

    typedef struct _GstTocEntryInfo {
    GstTocEntryType type;
    GstFormat format;
    gint64 start;
    gint64 stop;
    GList *subentries;
    GstTagList *titles;
    GstTagList *tags;
    } GstTocEntryInfo;

    First describes table of contents (TOC), and the last one describes entry in the TOC. As you can see, they are pretty clear to understand. Entries can be recursively included. For now entry can be either edition (or angle, or alternative) or chapter. Tags can be either entry specific or TOC specific. Also there can be multiple titles for entry (for example, in different languages). All that you need if you want to implement chapters support in any of GStreamer elements is to proper fill these structures and link them together which isn't hard to do. But we can't send these structures via GStreamer message bus or in event, so I've written some helper functions for converting full TOC structure into the GstStructure (and vice versa for easier usage of chapters in applications) which can be used for sending as a tag or as event. Thanks to Sebastian Dröge for reviewing my code and giving me advices :) The work on generic chapters is continuing;
  • also I had been working on implementing generic chapters support in Matroska GStreamer element (demuxer only) and it's almost done. I've tested parsing on some complex test cases and it worked well. Anyway, it needs more intensive testing. In case of success it would be possible to add Matroska chapters support right in my Totem chapters plugin, which sounds cool for me :)

That's I was working on. I've done all plans from my last week except working on my chapters plugin, but I'm collecting some ideas how I can improve it in future :) Next week I want to continue working on generic chapters support, to improve it's implementation in Matroska demuxer (add per-edition/chapter/toc tags) and to start working on implementing generic chapters in Matroska muxer. I have a lot of work to do :)

0 коммент.:

Отправить комментарий