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:
parent
6f784c158b
commit
fb9187129c
@ -15,6 +15,10 @@ libavutil: 2015-08-28
|
|||||||
|
|
||||||
API changes, most recent first:
|
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
|
2016-xx-xx - xxxxxxx - lavc 57.37.100 - avcodec.h
|
||||||
Add a new audio/video encoding and decoding API with decoupled input
|
Add a new audio/video encoding and decoding API with decoupled input
|
||||||
and output -- avcodec_send_packet(), avcodec_receive_frame(),
|
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,
|
void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl,
|
||||||
char *line, int line_size, int *print_prefix)
|
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];
|
AVBPrint part[4];
|
||||||
|
int ret;
|
||||||
|
|
||||||
format_line(ptr, level, fmt, vl, part, print_prefix, NULL);
|
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);
|
av_bprint_finalize(part+3, NULL);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl)
|
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,
|
void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl,
|
||||||
char *line, int line_size, int *print_prefix);
|
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
|
#if FF_API_DLOG
|
||||||
/**
|
/**
|
||||||
* av_dlog macros
|
* av_dlog macros
|
||||||
|
@ -64,8 +64,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 55
|
#define LIBAVUTIL_VERSION_MAJOR 55
|
||||||
#define LIBAVUTIL_VERSION_MINOR 22
|
#define LIBAVUTIL_VERSION_MINOR 23
|
||||||
#define LIBAVUTIL_VERSION_MICRO 101
|
#define LIBAVUTIL_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
LIBAVUTIL_VERSION_MINOR, \
|
LIBAVUTIL_VERSION_MINOR, \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user