static gint64 xmms_faad_seek (xmms_xform_t *xform, gint64 samples, xmms_xform_seek_mode_t whence, xmms_error_t *err) { xmms_faad_data_t *data; gint64 ret = -1; g_return_val_if_fail (whence == XMMS_XFORM_SEEK_SET, -1); g_return_val_if_fail (xform, -1); data = xmms_xform_private_data_get (xform); g_return_val_if_fail (data, FALSE); /* Seeking only supported on MP4 AAC right now */ if (data->filetype == FAAD_TYPE_MP4) { ret = xmms_xform_seek (xform, samples, whence, err); if (ret >= 0) { faacDecPostSeekReset (data->decoder, -1); data->buffer_length = 0; g_string_erase (data->outbuf, 0, -1); } } return ret; }
/* * Handle pause - basically re-init the codec */ static void aac_do_pause (codec_data_t *ifptr) { aac_codec_t *aac = (aac_codec_t *)ifptr; aac->m_resync_with_header = 1; aac->m_record_sync_time = 1; aac->m_audio_inited = 0; aac->m_ignore_first_sample = 0; faacDecPostSeekReset(aac->m_info, 0); }
uint8_t ADM_faad::endDecompress( void ) { _inbuffer=0; faacDecPostSeekReset(_instance, 0); }
void ADM_faad::purge(void) { _inbuffer=0; faacDecPostSeekReset(_instance, 0); }