private BackendSelect1 ( int rank, |
||
rank | int | |
ctx | ||
return | int |
int BackendSelect1(int rank, BitStreamCtx ctx)
{
if (rank < 1) {
return -1;
}
this.ResetReader();
int start_index = (rank - 1) / this.B;
int acc;
int left;
if (start_index == 0) {
acc = AccStart;
ctx.Seek (0);
left = rank;
} else {
acc = this.Samples[start_index - 1];
ctx.Seek (this.Offsets[start_index - 1]);
left = rank - start_index * this.B;
}
// int start_acc = acc;
for (int i = 0; i < left; i++) {
int read = this.ReadNext(ctx);
acc += read;
}
return acc;
}