From 452d3edb376fc205f8251e7c9ca443b6d881f24f Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Thu, 28 Aug 2008 12:00:58 +0000 Subject: [PATCH] Change implementation for ff_data_to_hex(), this is faster. See discussion on mailinglist in "Realmedia patch" thread. Originally committed as revision 15006 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/utils.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index b61535af8d..91b105f3e1 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -3213,22 +3213,17 @@ void url_split(char *proto, int proto_size, } } -static void digit_to_char(char *dst, uint8_t src) -{ - if (src < 10) { - *dst = '0' + src; - } else { - *dst = 'A' + src - 10; - } -} - char *ff_data_to_hex(char *buff, const uint8_t *src, int s) { int i; + static const char hex_table[16] = { '0', '1', '2', '3', + '4', '5', '6', '7', + '8', '9', 'A', 'B', + 'C', 'D', 'E', 'F' }; for(i = 0; i < s; i++) { - digit_to_char(buff + 2 * i, src[i] >> 4); - digit_to_char(buff + 2 * i + 1, src[i] & 0xF); + buff[i * 2] = hex_table[src[i] >> 4]; + buff[i * 2 + 1] = hex_table[src[i] & 0xF]; } return buff;