| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -136,16 +136,33 @@ static unsigned bcd2uint(uint8_t bcd) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   return low + 10*high; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			char *av_timecode_make_smpte_tc_string(char *buf, uint32_t tcsmpte, int prevent_df) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			char *av_timecode_make_smpte_tc_string2(char *buf, AVRational rate, uint32_t tcsmpte, int prevent_df, int skip_field) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsigned hh   = bcd2uint(tcsmpte     & 0x3f);    // 6-bit hours | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsigned mm   = bcd2uint(tcsmpte>>8  & 0x7f);    // 7-bit minutes | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsigned ss   = bcd2uint(tcsmpte>>16 & 0x7f);    // 7-bit seconds | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsigned ff   = bcd2uint(tcsmpte>>24 & 0x3f);    // 6-bit frames | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    unsigned drop = tcsmpte & 1<<30 && !prevent_df;  // 1-bit drop if not arbitrary bit | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (av_cmp_q(rate, (AVRational) {30, 1}) == 1) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ff <<= 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (!skip_field) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (av_cmp_q(rate, (AVRational) {50, 1}) == 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ff += !!(tcsmpte & 1 << 7); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            else | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ff += !!(tcsmpte & 1 << 23); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    snprintf(buf, AV_TIMECODE_STR_SIZE, "%02u:%02u:%02u%c%02u", | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			             hh, mm, ss, drop ? ';' : ':', ff); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return buf; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			char *av_timecode_make_smpte_tc_string(char *buf, uint32_t tcsmpte, int prevent_df) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return av_timecode_make_smpte_tc_string2(buf, (AVRational){30, 1}, tcsmpte, prevent_df, 1); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			char *av_timecode_make_mpeg_tc_string(char *buf, uint32_t tc25bit) | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |