[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdeextragear-2/taglib/ogg
From: Scott Wheeler <wheeler () kde ! org>
Date: 2003-10-17 0:32:50
[Download RAW message or body]
CVS commit by wheeler:
More hacks that *might* actually make Vorbis comment saving work. I doubt
it, but I'll test later. This is ugly and non-generic and all ofther sorts
of bad things, but it's a reasonable starting point for some non-trivial
code.
M +20 -0 oggfile.cpp 1.9
--- kdeextragear-2/taglib/ogg/oggfile.cpp #1.8:1.9
@@ -34,4 +34,5 @@ class Ogg::File::FilePrivate
public:
FilePrivate() :
+ streamSerialNumber(-1),
currentPage(0)
{}
@@ -41,6 +42,8 @@ public:
}
+ int streamSerialNumber;
Page *currentPage;
ByteVectorList packets;
+ List<int> pageSizes;
};
@@ -72,4 +75,7 @@ ByteVector Ogg::File::packet(uint i)
delete d->currentPage;
d->currentPage = new Page(this, nextPageOffset);
+ d->pageSizes.append(d->currentPage->size());
+ if(d->streamSerialNumber < 0)
+ d->streamSerialNumber = d->currentPage->pageHeader()->streamSerialNumber();
// Handle the case of a Ogg packet spanning multiple pages.
@@ -81,4 +87,5 @@ ByteVector Ogg::File::packet(uint i)
delete d->currentPage;
d->currentPage = new Page(this, nextPageOffset);
+ d->pageSizes.append(d->currentPage->size());
}
@@ -111,4 +118,17 @@ ByteVector Ogg::File::packet(uint i)
return v;
+}
+
+void Ogg::File::save()
+{
+ ByteVectorList l;
+ l.append(packet(1));
+ l.append(commentPackets());
+ List<Page *> pages = Page::paginate(l, Page::SinglePagePerGroup,
+ d->streamSerialNumber, 0);
+
+ insert(pages.front()->render(), 0, d->pageSizes.front());
+ d->pageSizes[0] = pages.front()->size();
+ delete pages.front();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic