AP4_Result ReadSample() { AP4_Result result; if (AP4_FAILED(result = ReadNextSample(m_Track->GetId(), m_sample_, m_Protected_desc ? m_encrypted : m_sample_data_))) { if (result == AP4_ERROR_EOS) { m_eos = true; return AP4_ERROR_EOS; } else { return result; } } if (m_Protected_desc) { // Make sure that the decrypter is NOT allocating memory! // If decrypter and addon are compiled with different DEBUG / RELEASE // options freeing HEAP memory will fail. m_sample_data_.Reserve(m_encrypted.GetDataSize()); if (AP4_FAILED(result = m_Decrypter->DecryptSampleData(m_encrypted, m_sample_data_, NULL))) { xbmc->Log(ADDON::LOG_ERROR, "Decrypt Sample returns failure!"); return result; } } m_dts = (double)m_sample_.GetDts() / (double)m_Track->GetMediaTimeScale(); m_pts = (double)m_sample_.GetCts() / (double)m_Track->GetMediaTimeScale(); return AP4_SUCCESS; };
AP4_Result ReadSample() { AP4_Result result; if (AP4_FAILED(result = ReadNextSample(m_Track->GetId(), m_sample_, m_Protected_desc ? m_encrypted : m_sample_data_))) { if (result == AP4_ERROR_EOS) { m_eos = true; } else { return result; } } if (m_Protected_desc && AP4_FAILED(result = m_Decrypter->DecryptSampleData(m_encrypted, m_sample_data_, NULL))) { xbmc->Log(ADDON::LOG_ERROR, "Decrypt Sample returns failure!"); return result; } m_dts = (double)m_sample_.GetDts() / (double)m_Track->GetMediaTimeScale(); m_pts = (double)m_sample_.GetCts() / (double)m_Track->GetMediaTimeScale(); m_codecHandler->UpdatePPSId(m_sample_data_); return AP4_SUCCESS; };
/*---------------------------------------------------------------------- | AP4_LinearReader::ReadNextSample +---------------------------------------------------------------------*/ AP4_Result AP4_LinearReader::ReadNextSample(AP4_Sample& sample, AP4_DataBuffer& sample_data, AP4_UI32& track_id) { return ReadNextSample(sample, &sample_data, track_id); }
/*---------------------------------------------------------------------- | AP4_LinearReader::GetNextSample +---------------------------------------------------------------------*/ AP4_Result AP4_LinearReader::GetNextSample(AP4_Sample& sample, AP4_UI32& track_id) { return ReadNextSample(sample, NULL, track_id); }