Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
Ogg
Ogg
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 8
    • Issues 8
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Xiph.Org
  • OggOgg
  • Issues
  • #485

Closed
Open
Opened Nov 30, 2003 by Arc Riley@arc

libogg2: direct access to change page header fields

Alot of the uses I've found for libogg1 (py-ogg1) have been repairing Ogg streams, extracting 
one logical bitstream from an Icecast archive, or other things which could take place entirely 
within ogg_sync_state (to get ogg_page objects), then editing the header fields of the pages to 
change the CONT/BOS/EOS flags, granulepos, serialno, etc. 
 
In one case, the Indymedia global radio stream at http://liveradio.indymedia.org/ is mixed on 
the server using Python code that takes several different sources (live, playlist, etc) and mixes 
them based on a schedule.  This uses py-ogg1 to make the stream being sent to Icecast legal 
and sequential serialno's, especially when the source streams get chopped off midway. 
 
This is also useful for intentionally creating mangled test streams for testing codec software, 
Icecast, etc. 
 
With libogg2 moving to ogg_references instead of character buffers for the ogg_page header 
and body fields, this is no longer possible.  ogg_reference is not currently exposed, nor are 
there functions for editing these values, so the only way to edit this data would be to send the 
ogg_page objects into a second ogg_sync_state buffer then use ogg_sync_bufferout before 
editing the fields, then into a third ogg_sync_state buffer to turn it back into an ogg_page. 
 
Bug 484 ( http://bugs.xiph.org/show_bug.cgi?id=484 ), the declaired but not defined 
ogg_page_getbuffer, may make this easier.  But it would still involve re-importing the edited 
data into another ogg_sync_state buffer. 
 
It should be noted that, without the ability to edit the ogg_page header/body contents, having 
ogg_page_checksum_set exposed serves no purpose.
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: xiph/ogg#485