From 390c9268a792046840d4852ae305350270308524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Mangano?= Date: Sat, 20 Feb 2016 13:55:25 +0100 Subject: [PATCH] use references to ogg_page instead of pointers --- src/actions.cc | 4 ++-- src/ogg.h | 15 ++++----------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/actions.cc b/src/actions.cc index 0b07c70..67d70d1 100644 --- a/src/actions.cc +++ b/src/actions.cc @@ -33,14 +33,14 @@ void delete_tags(ogg::Reader *reader, opustags::ogg::Writer *writer, long select s->type = ogg::UNKNOWN_STREAM; // fall through case ogg::RAW_READY: - writer->write_raw_page(s->current_page); + writer->write_raw_page(reader->current_page); break; case ogg::TAGS_READY: // only streams selected at HEADER_READY reach this point writer->write_tags(s->stream.serialno, ogg::Tags()); break; case ogg::DATA_READY: - writer->write_page(s->current_page); + writer->write_page(reader->current_page); break; default: ; diff --git a/src/ogg.h b/src/ogg.h index 6f04688..34f2df7 100644 --- a/src/ogg.h +++ b/src/ogg.h @@ -35,15 +35,7 @@ namespace ogg // Called by Reader once a page was read. // Return true if it's ready, false if it expects more data. // In the latter case, Reader::read_page will keep reading. - bool page_in(ogg_page*); - - // The structure is stored into the Reader, and the memory inside is - // managed by ogg_sync_state (maybe). - // It's not a big deal since it should be used right after read_page() - // was called, and is meant to be forwarded to the Writer. - // TODO make sure it's allocated as expected, because the libogg - // specification isn't entirely clear. - ogg_page *current_page; + bool page_in(const ogg_page&); StreamState state; StreamType type; @@ -66,6 +58,7 @@ namespace ogg std::istream input; ogg_sync_state sync; + ogg_page current_page; std::map streams; }; @@ -74,12 +67,12 @@ namespace ogg Writer(std::ostream&&); ~Writer(); - void write_page(ogg_page*); + void write_page(const ogg_page&); // Write the page without even ensuring its page number is correct. // It would be an efficient way to copy a stream identically, and also // needed for write_page. - void write_raw_page(ogg_page*); + void write_raw_page(const ogg_page&); void write_tags(int serialno, const Tags&);