Merge tag 'v0.21.6'
release v0.21.6
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include "OggVisitor.hxx"
|
||||
|
||||
#include <stdexcept>
|
||||
#include <utility>
|
||||
|
||||
void
|
||||
OggVisitor::EndStream()
|
||||
@@ -51,7 +52,13 @@ OggVisitor::ReadNextPage()
|
||||
inline void
|
||||
OggVisitor::HandlePacket(const ogg_packet &packet)
|
||||
{
|
||||
const bool _post_seek = std::exchange(post_seek, false);
|
||||
|
||||
if (packet.b_o_s) {
|
||||
if (_post_seek)
|
||||
/* ignore the BOS packet after seeking */
|
||||
return;
|
||||
|
||||
EndStream();
|
||||
has_stream = true;
|
||||
OnOggBeginning(packet);
|
||||
@@ -97,4 +104,6 @@ OggVisitor::PostSeek()
|
||||
|
||||
/* find the next Ogg page and feed it into the stream */
|
||||
sync.ExpectPageSeekIn(stream);
|
||||
|
||||
post_seek = true;
|
||||
}
|
||||
|
@@ -39,6 +39,14 @@ class OggVisitor {
|
||||
|
||||
bool has_stream = false;
|
||||
|
||||
/**
|
||||
* This is true after seeking; its one-time effect is to
|
||||
* ignore the BOS packet, just in case we have been seeking to
|
||||
* the beginning of the file, because that would disrupt
|
||||
* playback.
|
||||
*/
|
||||
bool post_seek = false;
|
||||
|
||||
public:
|
||||
explicit OggVisitor(Reader &reader)
|
||||
:sync(reader), stream(0) {}
|
||||
|
@@ -1,7 +1,20 @@
|
||||
libflac_dep = dependency('flac', version: '>= 1.2', required: get_option('flac'))
|
||||
libopus_dep = dependency('opus', required: get_option('opus'))
|
||||
libvorbis_dep = dependency('vorbis', required: get_option('vorbis'))
|
||||
libvorbisidec_dep = dependency('vorbisidec', required: get_option('tremor'))
|
||||
|
||||
if get_option('tremor').enabled()
|
||||
# no libvorbis if Tremor was explicitly enabled
|
||||
libvorbis_dep = dependency('', required: false)
|
||||
else
|
||||
libvorbis_dep = dependency('vorbis', required: get_option('vorbis'))
|
||||
endif
|
||||
|
||||
if libvorbis_dep.found()
|
||||
# no Tremor if libvorbis is used
|
||||
libvorbisidec_dep = dependency('', required: false)
|
||||
else
|
||||
# attempt to auto-detect Tremor only if libvorbis was disabled or not found
|
||||
libvorbisidec_dep = dependency('vorbisidec', required: get_option('tremor'))
|
||||
endif
|
||||
|
||||
if get_option('vorbis').enabled() and get_option('tremor').enabled()
|
||||
error('Cannot build both, the Vorbis decoder AND the Tremor (Vorbis fixed-point) decoder')
|
||||
|
Reference in New Issue
Block a user