|
|
@ -126,7 +126,7 @@ static int raw_read_close(AVFormatContext *s) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int pcm_read_seek(AVFormatContext *s,
|
|
|
|
int pcm_read_seek(AVFormatContext *s,
|
|
|
|
int stream_index, int64_t timestamp) |
|
|
|
int stream_index, int64_t timestamp, int flags) |
|
|
|
{ |
|
|
|
{ |
|
|
|
AVStream *st; |
|
|
|
AVStream *st; |
|
|
|
int block_align, byte_rate; |
|
|
|
int block_align, byte_rate; |
|
|
@ -158,8 +158,11 @@ int pcm_read_seek(AVFormatContext *s, |
|
|
|
return -1; |
|
|
|
return -1; |
|
|
|
|
|
|
|
|
|
|
|
/* compute the position by aligning it to block_align */ |
|
|
|
/* compute the position by aligning it to block_align */ |
|
|
|
pos = av_rescale(timestamp * byte_rate, st->time_base.num, st->time_base.den); |
|
|
|
pos = av_rescale_rnd(timestamp * byte_rate,
|
|
|
|
pos = (pos / block_align) * block_align; |
|
|
|
st->time_base.num,
|
|
|
|
|
|
|
|
st->time_base.den * (int64_t)block_align, |
|
|
|
|
|
|
|
(flags & AVSEEK_FLAG_BACKWARD) ? AV_ROUND_DOWN : AV_ROUND_UP); |
|
|
|
|
|
|
|
pos *= block_align; |
|
|
|
|
|
|
|
|
|
|
|
/* recompute exact position */ |
|
|
|
/* recompute exact position */ |
|
|
|
st->cur_dts = av_rescale(pos, st->time_base.den, byte_rate * (int64_t)st->time_base.num); |
|
|
|
st->cur_dts = av_rescale(pos, st->time_base.den, byte_rate * (int64_t)st->time_base.num); |
|
|
|