This commit is contained in:
badaix 2016-05-01 13:17:35 +02:00
parent 1d5038de2f
commit 1c3fd27256

View file

@ -62,8 +62,8 @@ void OggEncoder::encode(const msg::PcmChunk* chunk)
for (int i=0; i<bytes; i++) for (int i=0; i<bytes; i++)
{ {
int idx = 4*i; int idx = 4*i;
buffer[0][i]=((((int8_t)chunk->payload[idx+1]) << 8) | (0x00ff&((int8_t)chunk->payload[idx])))/32768.f; buffer[0][i]=((((int8_t)chunk->payload[idx+1]) << 8) | (0x00ff & ((int8_t)chunk->payload[idx])))/32768.f;
buffer[1][i]=((((int8_t)chunk->payload[idx+3]) << 8) | (0x00ff&((int8_t)chunk->payload[idx+2])))/32768.f; buffer[1][i]=((((int8_t)chunk->payload[idx+3]) << 8) | (0x00ff & ((int8_t)chunk->payload[idx+2])))/32768.f;
} }
/* tell the library how much we actually submitted */ /* tell the library how much we actually submitted */
@ -75,13 +75,13 @@ void OggEncoder::encode(const msg::PcmChunk* chunk)
more involved (potentially parallel) processing. Get a single more involved (potentially parallel) processing. Get a single
block for encoding now */ block for encoding now */
size_t pos = 0; size_t pos = 0;
while (vorbis_analysis_blockout(&vd,&vb)==1) while (vorbis_analysis_blockout(&vd, &vb)==1)
{ {
/* analysis, assume we want to use bitrate management */ /* analysis, assume we want to use bitrate management */
vorbis_analysis(&vb,NULL); vorbis_analysis(&vb, NULL);
vorbis_bitrate_addblock(&vb); vorbis_bitrate_addblock(&vb);
while (vorbis_bitrate_flushpacket(&vd,&op)) while (vorbis_bitrate_flushpacket(&vd, &op))
{ {
/* weld the packet into the bitstream */ /* weld the packet into the bitstream */
ogg_stream_packetin(&os, &op); ogg_stream_packetin(&os, &op);
@ -195,8 +195,8 @@ void OggEncoder::initEncoder()
vorbis_comment_add_tag(&vc, "VERSION", VERSION); vorbis_comment_add_tag(&vc, "VERSION", VERSION);
/* set up the analysis state and auxiliary encoding storage */ /* set up the analysis state and auxiliary encoding storage */
vorbis_analysis_init(&vd,&vi); vorbis_analysis_init(&vd, &vi);
vorbis_block_init(&vd,&vb); vorbis_block_init(&vd, &vb);
/* set up our packet->stream encoder */ /* set up our packet->stream encoder */
/* pick a random serial number; that way we can more likely build /* pick a random serial number; that way we can more likely build
@ -215,10 +215,10 @@ void OggEncoder::initEncoder()
ogg_packet header_comm; ogg_packet header_comm;
ogg_packet header_code; ogg_packet header_code;
vorbis_analysis_headerout(&vd,&vc,&header,&header_comm,&header_code); vorbis_analysis_headerout(&vd, &vc, &header, &header_comm, &header_code);
ogg_stream_packetin(&os,&header); ogg_stream_packetin(&os, &header);
ogg_stream_packetin(&os,&header_comm); ogg_stream_packetin(&os, &header_comm);
ogg_stream_packetin(&os,&header_code); ogg_stream_packetin(&os, &header_code);
/* This ensures the actual /* This ensures the actual
* audio data will start on a new page, as per spec * audio data will start on a new page, as per spec
@ -227,7 +227,7 @@ void OggEncoder::initEncoder()
headerChunk_.reset(new msg::CodecHeader("ogg")); headerChunk_.reset(new msg::CodecHeader("ogg"));
while (true) while (true)
{ {
int result = ogg_stream_flush(&os,&og); int result = ogg_stream_flush(&os, &og);
if (result == 0) if (result == 0)
break; break;
headerChunk_->payloadSize += og.header_len + og.body_len; headerChunk_->payloadSize += og.header_len + og.body_len;