It allows to add analogous functions using e.g. the bytestream API instead of using an AVIOContext.
Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com> --- libavformat/nutenc.c | 49 ++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c index ca433038d4..a75d9282fe 100644 --- a/libavformat/nutenc.c +++ b/libavformat/nutenc.c @@ -290,25 +290,35 @@ static int get_v_length(uint64_t val) return i; } -/** - * Put val using a variable number of bytes. - */ -static void put_v(AVIOContext *bc, uint64_t val) -{ - int i = get_v_length(val); - - while (--i > 0) - avio_w8(bc, 128 | (uint8_t)(val >> (7*i))); - - avio_w8(bc, val & 127); +#define PUT_FUNCTIONS(type, write, suffix) \ +/** \ + * Put val using a variable number of bytes. \ + */ \ +static void put_v##suffix(type dst, uint64_t val) \ +{ \ + int i = get_v_length(val); \ + \ + while (--i > 0) \ + write(dst, 128 | (uint8_t)(val >> (7*i))); \ + \ + write(dst, val & 127); \ +} \ + \ +static void put_tt##suffix(NUTContext *nut, AVRational *time_base, \ + type dst, uint64_t val) \ +{ \ + val *= nut->time_base_count; \ + val += time_base - nut->time_base; \ + put_v##suffix(dst, val); \ +} \ + \ +static void put_s##suffix(type dst, int64_t val) \ +{ \ + put_v##suffix(dst, 2 * FFABS(val) - (val > 0)); \ } -static void put_tt(NUTContext *nut, AVRational *time_base, AVIOContext *bc, uint64_t val) -{ - val *= nut->time_base_count; - val += time_base - nut->time_base; - put_v(bc, val); -} +PUT_FUNCTIONS(AVIOContext *, avio_w8,) + /** * Store a string as vb. */ @@ -320,11 +330,6 @@ static void put_str(AVIOContext *bc, const char *string) avio_write(bc, string, len); } -static void put_s(AVIOContext *bc, int64_t val) -{ - put_v(bc, 2 * FFABS(val) - (val > 0)); -} - static void put_packet(NUTContext *nut, AVIOContext *bc, AVIOContext *dyn_bc, uint64_t startcode) { -- 2.20.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".