avcodec: fix wrong duration of packets (dvd, bluray)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
							parent
							
								
									b197d83ca3
								
							
						
					
					
						commit
						85af60df89
					
				@ -1808,13 +1808,13 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba,
 | 
			
		||||
                /* calc from frame_bytes, channels, and bits_per_coded_sample */
 | 
			
		||||
                switch (id) {
 | 
			
		||||
                case AV_CODEC_ID_PCM_DVD:
 | 
			
		||||
                    if(bps<4)
 | 
			
		||||
                    if(bps<4 || frame_bytes<3)
 | 
			
		||||
                        return 0;
 | 
			
		||||
                    return 2 * (frame_bytes / ((bps * 2 / 8) * ch));
 | 
			
		||||
                    return 2 * ((frame_bytes - 3) / ((bps * 2 / 8) * ch));
 | 
			
		||||
                case AV_CODEC_ID_PCM_BLURAY:
 | 
			
		||||
                    if(bps<4)
 | 
			
		||||
                    if(bps<4 || frame_bytes<4)
 | 
			
		||||
                        return 0;
 | 
			
		||||
                    return frame_bytes / ((FFALIGN(ch, 2) * bps) / 8);
 | 
			
		||||
                    return (frame_bytes - 4) / ((FFALIGN(ch, 2) * bps) / 8);
 | 
			
		||||
                case AV_CODEC_ID_S302M:
 | 
			
		||||
                    return 2 * (frame_bytes / ((bps + 4) / 4)) / ch;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user