Hi everybody, I posted here about two years ago about the initial release. This is a release that fixes many bugs, and has enhancements that make it possible to support a multi-stream format, ALingA, which I will mention briefly later. It also supports a PCM format, Neuro, both as part of the multi-stream codec, and stand-alone. libogg++ is a C++ library implementing Ogg. It is designed to be independent of the specific codecs for the interleaved data streams, and to be thread-safe in a threading model in which each codec or transport runs in its own thread. Main features added since initial release Selection logic which allows a co-ordinating stream's header pages which may contain info about the other streams to be decapsulated before the first header pages for these other streams have been claimed. A PageReader to read raw (un-decapsulated) pages either simultaneously with reading the decapsulated packets, or by themselves. The application can then route these pages to a Pagewriter. This allows logical streams to be ripped and merged into Ogg streams without re-encapsulation Downloads and checkouts are available at http://savannah.nongnu.org/projects/liboggpp ALingA (Aligned Linguistic Annotations) is a multi-stream format designed for interleaving linguistic annotations with the audio/video or other multi-dimensional signals against which they are aligned. libalinga is a C++ library that implements ALingA using libogg++. Neuro is the simple PCM format for the signal streams. libneuro implements Neuro also using libogg++. It is designed to work with libalinga, but the PCM codec can also be used stand-alone. More information about these libraries, and a web project using them, is at http://www.ihear.com/FreeCLAS/. Comments and feedback are very welcome, Elaine
Hi Elaine, I flipped through some of the code but wasn't really about to determine this: Do you also support Skeleton in libogg++ ? If you are creating multitrack Ogg files, they should contain a skeleton track to identify the different contained tracks. http://wiki.xiph.org/OggSkeleton And if the files aren't audio or video files, you should then use the extension .ogx http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions . You may already be doing all of this - I just wasn't able to verify, therefore the question. Cheers, Silvia. On Fri, Jun 5, 2009 at 6:57 AM, ter <et at ihear.com> wrote:> Hi everybody, > > I posted here about two years ago about the initial release. This is a > release that fixes many bugs, and has enhancements that make it possible > to support a multi-stream format, ALingA, which I will mention briefly > later. It also supports a PCM format, Neuro, both as part of the > multi-stream codec, and stand-alone. > > libogg++ is a C++ library implementing Ogg. It is designed to be > independent of the specific codecs for the interleaved data streams, and > to be thread-safe in a threading model in which each codec or transport > runs in its own thread. > > Main features added since initial release > ? ? ? ?Selection logic which allows a co-ordinating stream's header > ? ? ? ?pages which may contain info about the other streams to be > ? ? ? ?decapsulated before the first header pages for these other > ? ? ? ?streams have been claimed. > > ? ? ? ?A PageReader to read raw (un-decapsulated) pages either > ? ? ? ?simultaneously with reading the decapsulated packets, or by > ? ? ? ?themselves. The application can then route these pages to a > ? ? ? ?Pagewriter. This allows logical streams to be ripped and merged > ? ? ? ?into Ogg streams without re-encapsulation > > Downloads and checkouts are available at > http://savannah.nongnu.org/projects/liboggpp > > ALingA (Aligned Linguistic Annotations) is a multi-stream format > designed for interleaving linguistic annotations with the audio/video or > other multi-dimensional signals against which they are aligned. > libalinga is a C++ library that implements ALingA using libogg++. Neuro > is the simple PCM format for the signal streams. libneuro implements > Neuro also using libogg++. It is designed to work with libalinga, but > the PCM codec can also be used stand-alone. More information about these > libraries, and a web project using them, is at > http://www.ihear.com/FreeCLAS/. > > Comments and feedback are very welcome, > > Elaine > > > _______________________________________________ > ogg-dev mailing list > ogg-dev at xiph.org > http://lists.xiph.org/mailman/listinfo/ogg-dev >
Hey Elaine we may have done double work :-/ (look at the oggvideotools) I started as an ogg library project for c++, but didn't get it to a public stage up until now. However, my focus is more on the streaming, muxing and serialising of specific streams (I did not reemplement the libogg facilities as they are). So you can do something like (from oggDump): /* create repository handler (actually a filehandler) */ MediaRepository* repo = new FileRepository(filename,MediaUnit::read); /* create a packet serializer */ StreamSerializer* serializer = new StreamSerializer(); /* open and initialize the serializer */ serializer->open(repo); /* get stream configurations of all available streams */ std::vector<StreamConfig> streamConfigList; serializer.getStreamConfig(streamConfigList); /* run through the file and dump all packets */ double time; OggPacket packet; int dumplevel = 3; while(serializer.available()) { time = serializer.getNextPacket(packet); streamout << "Packet at: "<<time<<" ms\n"; packet.print(dumplevel); }
(Sorry, Sylvia, about the duplicate, hit the wrong reply button.) On Fri, 2009-06-05 at 08:07 +1000, Silvia Pfeiffer wrote:> Hi Elaine, > > I flipped through some of the code but wasn't really about to > determine this: Do you also support Skeleton in libogg++ ?Hi, Silvia. I studied your multi-track work when I was working on ALingA. It was a valuable guide. No, libogg++ tries to be agnostic about codecs. As I understand it, the Ogg format is inherently multi-track, but does not mandate any particular multi-track protocol.> > If you are creating multitrack Ogg files, they should contain a > skeleton track to identify the different contained tracks. > http://wiki.xiph.org/OggSkeletonALingA is a multitrack format (http://www.ihear.com/dtds/ALingA/0.1/ALingA.dtd) which has a skeleton track (what I call the co-ordinating stream), but one that is very specific, and based on the notion of a Manifold. It is implemented in the separate library libalinga, subclassing libogg++ to do the Ogg stuff> And if the files aren't audio or > video files, you should then use the extension .ogx > http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions .libogg++, libalinga and libneuro are all agnostic about whether the signal streams are audio or video or not. These libraries are aimed at analytical processing, and not at online multimedia. They defer to applications to conform to MIME naming.> > You may already be doing all of this - I just wasn't able to verify, > therefore the question. >I appreciate your interest, and would be happy to answer more. Regards, Elaine> Cheers, > Silvia. > > On Fri, Jun 5, 2009 at 6:57 AM, ter <et at ihear.com> wrote: > > Hi everybody, > > > > I posted here about two years ago about the initial release. This is a > > release that fixes many bugs, and has enhancements that make it possible > > to support a multi-stream format, ALingA, which I will mention briefly > > later. It also supports a PCM format, Neuro, both as part of the > > multi-stream codec, and stand-alone. > > > > libogg++ is a C++ library implementing Ogg. It is designed to be > > independent of the specific codecs for the interleaved data streams, and > > to be thread-safe in a threading model in which each codec or transport > > runs in its own thread. > > > > Main features added since initial release > > Selection logic which allows a co-ordinating stream's header > > pages which may contain info about the other streams to be > > decapsulated before the first header pages for these other > > streams have been claimed. > > > > A PageReader to read raw (un-decapsulated) pages either > > simultaneously with reading the decapsulated packets, or by > > themselves. The application can then route these pages to a > > Pagewriter. This allows logical streams to be ripped and merged > > into Ogg streams without re-encapsulation > > > > Downloads and checkouts are available at > > http://savannah.nongnu.org/projects/liboggpp > > > > ALingA (Aligned Linguistic Annotations) is a multi-stream format > > designed for interleaving linguistic annotations with the audio/video or > > other multi-dimensional signals against which they are aligned. > > libalinga is a C++ library that implements ALingA using libogg++. Neuro > > is the simple PCM format for the signal streams. libneuro implements > > Neuro also using libogg++. It is designed to work with libalinga, but > > the PCM codec can also be used stand-alone. More information about these > > libraries, and a web project using them, is at > > http://www.ihear.com/FreeCLAS/. > > > > Comments and feedback are very welcome, > > > > Elaine > > > > > > _______________________________________________ > > ogg-dev mailing list > > ogg-dev at xiph.org > > http://lists.xiph.org/mailman/listinfo/ogg-dev > >