mirror of https://github.com/xiph/flac
fix bug where the metadata packet and first audio packet were getting the same packet number in ogg
This commit is contained in:
parent
4e685b9b90
commit
6188feb8bb
|
@ -1019,7 +1019,14 @@ FLAC__StreamEncoderWriteStatus write_callback(const FLAC__StreamEncoder *encoder
|
||||||
memset(&op, 0, sizeof(op));
|
memset(&op, 0, sizeof(op));
|
||||||
op.packet = (unsigned char *)buffer;
|
op.packet = (unsigned char *)buffer;
|
||||||
op.granulepos = encoder_wrapper->samples_written - 1;
|
op.granulepos = encoder_wrapper->samples_written - 1;
|
||||||
op.packetno = encoder_wrapper->current_frame;
|
/*@@@ WATCHOUT:
|
||||||
|
* this depends on the behavior of libFLAC that we will get one
|
||||||
|
* write_callback first with all the metadata (and 'samples'
|
||||||
|
* will be 0), then one for each frame, hence the +1 so that the
|
||||||
|
* metadata packet is packet 0, the first audio frame is 1, and
|
||||||
|
* so on.
|
||||||
|
*/
|
||||||
|
op.packetno = (samples == 0? 0 : encoder_wrapper->current_frame + 1);
|
||||||
op.bytes = bytes;
|
op.bytes = bytes;
|
||||||
|
|
||||||
if (encoder_wrapper->bytes_written == bytes)
|
if (encoder_wrapper->bytes_written == bytes)
|
||||||
|
|
Loading…
Reference in New Issue