public void Seek (long position)
{
if (!CanSeek) {
return;
}
// position is in microseconds, relative to the current position and can be negative
long new_pos = (int)engine_service.Position + (position / 1000);
if (new_pos < 0) {
engine_service.Position = 0;
} else {
engine_service.Position = (uint)new_pos;
}
}