avformat/oggenc: always use the time base stored in the theora header
Fixes ticket #5704 Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		
							parent
							
								
									9157ac2f9c
								
							
						
					
					
						commit
						4acdbb1c6c
					
				| @ -533,6 +533,14 @@ static int ogg_write_header(AVFormatContext *s) | ||||
|             bytestream_put_buffer(&p, cstr, 6); | ||||
| 
 | ||||
|             if (st->codecpar->codec_id == AV_CODEC_ID_THEORA) { | ||||
|                 int den = AV_RB32(oggstream->header[0] + 22), num = AV_RB32(oggstream->header[0] + 26); | ||||
|                 /* Make sure to use time base stored in the Theora stream header to write
 | ||||
|                    correct timestamps */ | ||||
|                 if (st->time_base.num != num || st->time_base.den != den) { | ||||
|                     av_log(s, AV_LOG_DEBUG, "Changing time base from %d/%d to %d/%d\n", | ||||
|                            st->time_base.num, st->time_base.den, num, den); | ||||
|                     avpriv_set_pts_info(st, 64, num, den); | ||||
|                 } | ||||
|                 /** KFGSHIFT is the width of the less significant section of the granule position
 | ||||
|                     The less significant section is the frame count since the last keyframe */ | ||||
|                 oggstream->kfgshift = ((oggstream->header[0][40]&3)<<3)|(oggstream->header[0][41]>>5); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user