diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-05-02 23:45:00 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-05-03 00:38:52 +0200 |
commit | 2a3270b66c3ce118e4a30afda5f9522bdc8906fd (patch) | |
tree | 345eec58eaf3b327bcdeb923ebeb0cdfb7906673 | |
parent | db4649dd10940b00604e8f02d82f1f3dcd0f1e61 (diff) | |
download | ffmpeg-2a3270b66c3ce118e4a30afda5f9522bdc8906fd.tar.gz |
ffprobe: add writer_print_integers() to allow printing formated 1d and 2d arrays of integers
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | ffprobe.c | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -37,6 +37,7 @@ #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/dict.h" +#include "libavutil/intreadwrite.h" #include "libavutil/libm.h" #include "libavutil/parseutils.h" #include "libavutil/timecode.h" @@ -718,6 +719,32 @@ static void writer_print_data_hash(WriterContext *wctx, const char *name, writer_print_string(wctx, name, buf, 0); } +static void writer_print_integers(WriterContext *wctx, const char *name, + uint8_t *data, int size, const char *format, + int columns, int bytes, int offset_add) +{ + AVBPrint bp; + int offset = 0, l, i; + + av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED); + av_bprintf(&bp, "\n"); + while (size) { + av_bprintf(&bp, "%08x: ", offset); + l = FFMIN(size, columns); + for (i = 0; i < l; i++) { + if (bytes == 1) av_bprintf(&bp, format, *data); + else if (bytes == 2) av_bprintf(&bp, format, AV_RN16(data)); + else if (bytes == 4) av_bprintf(&bp, format, AV_RN32(data)); + data += bytes; + size --; + } + av_bprintf(&bp, "\n"); + offset += offset_add; + } + writer_print_string(wctx, name, bp.str, 0); + av_bprint_finalize(&bp, NULL); +} + #define MAX_REGISTERED_WRITERS_NB 64 static const Writer *registered_writers[MAX_REGISTERED_WRITERS_NB + 1]; |