Unfortunately you haven't answered my other questions: Are you sure that your files are valid? Does at least sequential playback work with your plugin?
Yes, I can sure the tak files are valid. I can play/seek them with your winamp input plug-in and the foobar decoder component.
Here are my code for the TtakStreamIoInterface:
static TtakBool _CanRead(void * AUser) { return tak_True; }
static TtakBool _CanWrite(void * AUser) { return tak_False; }
static TtakBool _CanSeek(void * AUser) { return ((QMediaReader *)AUser)->CanSeek() ? tak_True : tak_False; }
static TtakBool _Read(void * AUser, void * ABuf, TtakInt32 ANum, TtakInt32 * AReadNum)
{
QMediaReader * pmr = (QMediaReader *)AUser;
*AReadNum = pmr->Read( (LPBYTE)ABuf, ANum);
if ( MSERROR_SUCCESS == pmr->GetLastError())
return tak_True;
else {
*AReadNum = 0;
return tak_False;
}
}
static TtakBool _Seek(void * AUser, TtakInt64 APos)
{
return ((QMediaReader *)AUser)->Seek( APos) ? tak_True : tak_False;
}
static TtakBool _GetLength(void * AUser, TtakInt64 * ALength)
{
QMediaReader * pmr = (QMediaReader *)AUser;
*ALength = pmr->GetSize();
if ( MSERROR_SUCCESS == pmr->GetLastError())
return tak_True;
else {
*ALength = 0;
return tak_False;
}
};
The "QMediaReader" is a wrapped class which is supplied by player's development kits.