mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Fix infinite loop with size==0 && sample_size!=0 in non interleaved avis.
Untested, i do not have a sample. Originally committed as revision 20348 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
83a4d356ef
commit
df84d7d9bd
@ -170,7 +170,7 @@ static int read_braindead_odml_indx(AVFormatContext *s, int frame_num){
|
|||||||
|
|
||||||
if(last_pos == pos || pos == base - 8)
|
if(last_pos == pos || pos == base - 8)
|
||||||
avi->non_interleaved= 1;
|
avi->non_interleaved= 1;
|
||||||
if(last_pos != pos)
|
if(last_pos != pos && (len || !ast->sample_size))
|
||||||
av_add_index_entry(st, pos, ast->cum_len, len, 0, key ? AVINDEX_KEYFRAME : 0);
|
av_add_index_entry(st, pos, ast->cum_len, len, 0, key ? AVINDEX_KEYFRAME : 0);
|
||||||
|
|
||||||
if(ast->sample_size)
|
if(ast->sample_size)
|
||||||
@ -905,7 +905,7 @@ resync:
|
|||||||
ast->packet_size= size + 8;
|
ast->packet_size= size + 8;
|
||||||
ast->remaining= size;
|
ast->remaining= size;
|
||||||
|
|
||||||
{
|
if(size || !ast->sample_size){
|
||||||
uint64_t pos= url_ftell(pb) - 8;
|
uint64_t pos= url_ftell(pb) - 8;
|
||||||
if(!st->index_entries || !st->nb_index_entries || st->index_entries[st->nb_index_entries - 1].pos < pos){
|
if(!st->index_entries || !st->nb_index_entries || st->index_entries[st->nb_index_entries - 1].pos < pos){
|
||||||
av_add_index_entry(st, pos, ast->frame_offset, size, 0, AVINDEX_KEYFRAME);
|
av_add_index_entry(st, pos, ast->frame_offset, size, 0, AVINDEX_KEYFRAME);
|
||||||
@ -964,7 +964,7 @@ static int avi_read_idx1(AVFormatContext *s, int size)
|
|||||||
|
|
||||||
if(last_pos == pos)
|
if(last_pos == pos)
|
||||||
avi->non_interleaved= 1;
|
avi->non_interleaved= 1;
|
||||||
else
|
else if(len || !ast->sample_size)
|
||||||
av_add_index_entry(st, pos, ast->cum_len, len, 0, (flags&AVIIF_INDEX) ? AVINDEX_KEYFRAME : 0);
|
av_add_index_entry(st, pos, ast->cum_len, len, 0, (flags&AVIIF_INDEX) ? AVINDEX_KEYFRAME : 0);
|
||||||
if(ast->sample_size)
|
if(ast->sample_size)
|
||||||
ast->cum_len += len;
|
ast->cum_len += len;
|
||||||
|
Loading…
Reference in New Issue
Block a user