Fixed: ffmpeg deocde getLength function was placeholder

--HG--
branch : develop
This commit is contained in:
Nimetu 2019-02-13 14:52:07 +02:00
parent 838dd14d15
commit 3a5bb966a8

View file

@ -287,18 +287,7 @@ bool CAudioDecoderFfmpeg::getInfo(NLMISC::IStream *stream, std::string &artist,
} }
} }
if (ffmpeg._FormatContext->duration != AV_NOPTS_VALUE) length = ffmpeg.getLength();
{
length = ffmpeg._FormatContext->duration * av_q2d(AV_TIME_BASE_Q);
}
else if (ffmpeg._FormatContext->streams[ffmpeg._AudioStreamIndex]->duration != AV_NOPTS_VALUE)
{
length = ffmpeg._FormatContext->streams[ffmpeg._AudioStreamIndex]->duration * av_q2d(ffmpeg._FormatContext->streams[ffmpeg._AudioStreamIndex]->time_base);
}
else
{
length = 0.f;
}
return true; return true;
} }
@ -420,9 +409,16 @@ bool CAudioDecoderFfmpeg::isMusicEnded()
float CAudioDecoderFfmpeg::getLength() float CAudioDecoderFfmpeg::getLength()
{ {
printf(">> CAudioDecoderFfmpeg::getLength\n"); float length = 0.f;
// TODO: return (float)ov_time_total(&_OggVorbisFile, -1); if (_FormatContext->duration != AV_NOPTS_VALUE)
return 0.f; {
length = _FormatContext->duration * av_q2d(AV_TIME_BASE_Q);
}
else if (_FormatContext->streams[_AudioStreamIndex]->duration != AV_NOPTS_VALUE)
{
length = _FormatContext->streams[_AudioStreamIndex]->duration * av_q2d(_FormatContext->streams[_AudioStreamIndex]->time_base);
}
return length;
} }
void CAudioDecoderFfmpeg::setLooping(bool loop) void CAudioDecoderFfmpeg::setLooping(bool loop)