AudioConverterRef converter;
unsigned long isamples, isamplesiz, omaxpacket, nchannels;
int64_t first_pts;
+ int64_t delay;
uint64_t samples, ibytes;
Float64 osamplerate;
memmove(w->config->extradata.bytes, buffer, w->config->extradata.length);
free(buffer);
+ AudioConverterPrimeInfo primeInfo;
+ UInt32 piSize = sizeof(primeInfo);
+ bzero(&primeInfo, piSize);
+ AudioConverterGetProperty(pv->converter,
+ kAudioConverterPrimeInfo,
+ &piSize, &primeInfo);
+
+ pv->delay = primeInfo.leadingFrames * 90000LL / pv->osamplerate;
+ w->config->init_delay = pv->delay;
+
pv->list = hb_list_init();
pv->buf = NULL;
}
obuf->size = odesc.mDataByteSize;
- obuf->s.start = pv->first_pts + 90000LL * pv->samples / pv->osamplerate;
+ obuf->s.start = pv->first_pts - pv->delay +
+ 90000LL * pv->samples / pv->osamplerate;
pv->samples += pv->isamples;
- obuf->s.stop = pv->first_pts + 90000LL * pv->samples / pv->osamplerate;
+ obuf->s.stop = pv->first_pts - pv->delay +
+ 90000LL * pv->samples / pv->osamplerate;
obuf->s.duration = (double)90000 * pv->isamples / pv->osamplerate;
obuf->s.type = AUDIO_BUF;
obuf->s.frametype = HB_FRAME_AUDIO;