mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
avformat/mov: Eliminate variable buf_size from mov_estimate_video_delay()
Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> Reviewed-by: Sasi Inguva <isasi@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> (cherry picked from commit 3ce4034308a3726395a2c1b18a3dff3554e0b619) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
48479937c3
commit
052edeec55
@ -3299,25 +3299,22 @@ static void mov_estimate_video_delay(MOVContext *c, AVStream* st) {
|
||||
int ctts_sample = 0;
|
||||
int64_t pts_buf[MAX_REORDER_DELAY + 1]; // Circular buffer to sort pts.
|
||||
int buf_start = 0;
|
||||
int buf_size = 0;
|
||||
int j, r, num_swaps;
|
||||
|
||||
for (j = 0; j < MAX_REORDER_DELAY + 1; j++)
|
||||
pts_buf[j] = INT64_MIN;
|
||||
|
||||
if (st->codecpar->video_delay <= 0 && msc->ctts_data &&
|
||||
st->codecpar->codec_id == AV_CODEC_ID_H264) {
|
||||
st->codecpar->video_delay = 0;
|
||||
for(ind = 0; ind < st->nb_index_entries && ctts_ind < msc->ctts_count; ++ind) {
|
||||
if (buf_size == (MAX_REORDER_DELAY + 1)) {
|
||||
// If circular buffer is full, then move the first element forward.
|
||||
buf_start = (buf_start + 1);
|
||||
if (buf_start == MAX_REORDER_DELAY + 1)
|
||||
buf_start = 0;
|
||||
} else {
|
||||
++buf_size;
|
||||
}
|
||||
buf_start = (buf_start + 1);
|
||||
if (buf_start == MAX_REORDER_DELAY + 1)
|
||||
buf_start = 0;
|
||||
|
||||
// Point j to the last elem of the buffer and insert the current pts there.
|
||||
j = buf_start - 1;
|
||||
if (j < 0) j = buf_size - 1;
|
||||
if (j < 0) j = MAX_REORDER_DELAY;
|
||||
pts_buf[j] = st->index_entries[ind].timestamp + msc->ctts_data[ctts_ind].duration;
|
||||
|
||||
// The timestamps that are already in the sorted buffer, and are greater than the
|
||||
@ -3329,7 +3326,7 @@ static void mov_estimate_video_delay(MOVContext *c, AVStream* st) {
|
||||
num_swaps = 0;
|
||||
while (j != buf_start) {
|
||||
r = j - 1;
|
||||
if (r < 0) r = buf_size - 1;
|
||||
if (r < 0) r = MAX_REORDER_DELAY;
|
||||
if (pts_buf[j] < pts_buf[r]) {
|
||||
FFSWAP(int64_t, pts_buf[j], pts_buf[r]);
|
||||
++num_swaps;
|
||||
|
Loading…
x
Reference in New Issue
Block a user