oggdec: simplify start time calculation code.
Also slightly more correct behaviour in case streams_left for some reason is 0 from the start. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
This commit is contained in:
		
							parent
							
								
									f5f98727b3
								
							
						
					
					
						commit
						a4163b2d65
					
				@ -526,9 +526,10 @@ static int ogg_get_length(AVFormatContext *s)
 | 
			
		||||
    avio_seek (s->pb, s->data_offset, SEEK_SET);
 | 
			
		||||
    ogg_reset(s);
 | 
			
		||||
    i = -1;
 | 
			
		||||
    while (!ogg_packet(s, &i, NULL, NULL, NULL)) {
 | 
			
		||||
        if(i>=0) {
 | 
			
		||||
        int64_t pts = ogg_calc_pts(s, i, NULL);
 | 
			
		||||
    while (streams_left > 0 && !ogg_packet(s, &i, NULL, NULL, NULL)) {
 | 
			
		||||
        int64_t pts;
 | 
			
		||||
        if (i < 0) continue;
 | 
			
		||||
        pts = ogg_calc_pts(s, i, NULL);
 | 
			
		||||
        if (pts != AV_NOPTS_VALUE && s->streams[i]->start_time == AV_NOPTS_VALUE && !ogg->streams[i].got_start){
 | 
			
		||||
            s->streams[i]->duration -= pts;
 | 
			
		||||
            ogg->streams[i].got_start= 1;
 | 
			
		||||
@ -537,9 +538,6 @@ static int ogg_get_length(AVFormatContext *s)
 | 
			
		||||
            ogg->streams[i].got_start= 1;
 | 
			
		||||
            streams_left--;
 | 
			
		||||
        }
 | 
			
		||||
        }
 | 
			
		||||
            if(streams_left<=0)
 | 
			
		||||
                break;
 | 
			
		||||
    }
 | 
			
		||||
    ogg_restore (s, 0);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user