aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2015-05-02 23:45:00 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-05-03 00:38:52 +0200
commit2a3270b66c3ce118e4a30afda5f9522bdc8906fd (patch)
tree345eec58eaf3b327bcdeb923ebeb0cdfb7906673
parentdb4649dd10940b00604e8f02d82f1f3dcd0f1e61 (diff)
downloadffmpeg-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.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/ffprobe.c b/ffprobe.c
index 9ee2850785..3d15d66f05 100644
--- a/ffprobe.c
+++ b/ffprobe.c
@@ -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];