You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avutil/log: added av_log_format_line2 which returns buffer length
The new function behaves the same as av_log_format_line, but also forwards the return value from the underlying snprintf call. This will allow callers to accurately determine the size requirements for the line buffer. Signed-off-by: Andreas Weis <github@ghulbus-inc.de> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
				
					committed by
					
						 Michael Niedermayer
						Michael Niedermayer
					
				
			
			
				
	
			
			
			
						parent
						
							6f784c158b
						
					
				
				
					commit
					fb9187129c
				
			| @@ -15,6 +15,10 @@ libavutil:     2015-08-28 | ||||
|  | ||||
| API changes, most recent first: | ||||
|  | ||||
| 2016-04-27 - xxxxxxx - lavu 55.23.100 - log.h | ||||
|   Add a new function av_log_format_line2() which returns number of bytes | ||||
|   written to the target buffer. | ||||
|  | ||||
| 2016-xx-xx - xxxxxxx - lavc 57.37.100 - avcodec.h | ||||
|   Add a new audio/video encoding and decoding API with decoupled input | ||||
|   and output -- avcodec_send_packet(), avcodec_receive_frame(), | ||||
|   | ||||
| @@ -283,11 +283,20 @@ static void format_line(void *avcl, int level, const char *fmt, va_list vl, | ||||
|  | ||||
| void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, | ||||
|                         char *line, int line_size, int *print_prefix) | ||||
| { | ||||
|     av_log_format_line2(ptr, level, fmt, vl, line, line_size, print_prefix); | ||||
| } | ||||
|  | ||||
| int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl, | ||||
|                         char *line, int line_size, int *print_prefix) | ||||
| { | ||||
|     AVBPrint part[4]; | ||||
|     int ret; | ||||
|  | ||||
|     format_line(ptr, level, fmt, vl, part, print_prefix, NULL); | ||||
|     snprintf(line, line_size, "%s%s%s%s", part[0].str, part[1].str, part[2].str, part[3].str); | ||||
|     ret = snprintf(line, line_size, "%s%s%s%s", part[0].str, part[1].str, part[2].str, part[3].str); | ||||
|     av_bprint_finalize(part+3, NULL); | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl) | ||||
|   | ||||
| @@ -317,6 +317,23 @@ AVClassCategory av_default_get_category(void *ptr); | ||||
| void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, | ||||
|                         char *line, int line_size, int *print_prefix); | ||||
|  | ||||
| /** | ||||
|  * Format a line of log the same way as the default callback. | ||||
|  * @param line          buffer to receive the formatted line; | ||||
|  *                      may be NULL if line_size is 0 | ||||
|  * @param line_size     size of the buffer; at most line_size-1 characters will | ||||
|  *                      be written to the buffer, plus one null terminator | ||||
|  * @param print_prefix  used to store whether the prefix must be printed; | ||||
|  *                      must point to a persistent integer initially set to 1 | ||||
|  * @return Returns a negative value if an error occured, otherwise returns | ||||
|  *         the number of characters that would have been written for a | ||||
|  *         sufficiently large buffer, not including the terminating null | ||||
|  *         character. If the return value is not less than line_size, it means | ||||
|  *         that the log message was truncated to fit the buffer. | ||||
|  */ | ||||
| int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl, | ||||
|                         char *line, int line_size, int *print_prefix); | ||||
|  | ||||
| #if FF_API_DLOG | ||||
| /** | ||||
|  * av_dlog macros | ||||
|   | ||||
| @@ -64,8 +64,8 @@ | ||||
|  */ | ||||
|  | ||||
| #define LIBAVUTIL_VERSION_MAJOR  55 | ||||
| #define LIBAVUTIL_VERSION_MINOR  22 | ||||
| #define LIBAVUTIL_VERSION_MICRO 101 | ||||
| #define LIBAVUTIL_VERSION_MINOR  23 | ||||
| #define LIBAVUTIL_VERSION_MICRO 100 | ||||
|  | ||||
| #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | ||||
|                                                LIBAVUTIL_VERSION_MINOR, \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user