add read callback to OggFLAC__SeekableStreamEncoder, necessary for metadata rewriting

This commit is contained in:
Josh Coalson
2004-01-17 03:52:59 +00:00
parent 8fdb96487d
commit e6d52b08ba
15 changed files with 457 additions and 61 deletions

View File

@@ -300,6 +300,7 @@ namespace OggFLAC {
SeekableStream::State SeekableStream::init()
{
FLAC__ASSERT(is_valid());
::OggFLAC__seekable_stream_encoder_set_read_callback(encoder_, read_callback_);
::OggFLAC__seekable_stream_encoder_set_seek_callback(encoder_, seek_callback_);
::OggFLAC__seekable_stream_encoder_set_tell_callback(encoder_, tell_callback_);
::OggFLAC__seekable_stream_encoder_set_write_callback(encoder_, write_callback_);
@@ -325,6 +326,15 @@ namespace OggFLAC {
return (bool)::OggFLAC__seekable_stream_encoder_process_interleaved(encoder_, buffer, samples);
}
::OggFLAC__SeekableStreamEncoderReadStatus SeekableStream::read_callback_(const ::OggFLAC__SeekableStreamEncoder *encoder, FLAC__byte buffer[], unsigned *bytes, void *client_data)
{
(void)encoder;
FLAC__ASSERT(0 != client_data);
SeekableStream *instance = reinterpret_cast<SeekableStream *>(client_data);
FLAC__ASSERT(0 != instance);
return instance->read_callback(buffer, bytes);
}
::FLAC__SeekableStreamEncoderSeekStatus SeekableStream::seek_callback_(const ::OggFLAC__SeekableStreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data)
{
(void)encoder;