Browse Source

avcodec/xbmenc: substitute end instead of recalculating end

Minor speed increase, end is calculated before entering parse_str_int(),
so let's take advantage of the value and avoid recalculating twice more.
This also allows parse_str_int() to work with file size larger than int.

Signed-off-by: Joe Da Silva <digital@joescat.com>
tags/n4.4
Jose Da Silva Paul B Mahol 5 years ago
parent
commit
b6bc981d25
1 changed files with 3 additions and 5 deletions
  1. +3
    -5
      libavcodec/xbmdec.c

+ 3
- 5
libavcodec/xbmdec.c View File

@@ -37,10 +37,8 @@ static int convert(uint8_t x)
return x;
}

static int parse_str_int(const uint8_t *p, int len, const uint8_t *key)
static int parse_str_int(const uint8_t *p, const uint8_t *end, const uint8_t *key)
{
const uint8_t *end = p + len;

for(; p<end - strlen(key); p++) {
if (!memcmp(p, key, strlen(key)))
break;
@@ -72,8 +70,8 @@ static int xbm_decode_frame(AVCodecContext *avctx, void *data,
avctx->pix_fmt = AV_PIX_FMT_MONOWHITE;
end = avpkt->data + avpkt->size;

width = parse_str_int(avpkt->data, avpkt->size, "_width");
height = parse_str_int(avpkt->data, avpkt->size, "_height");
width = parse_str_int(avpkt->data, end, "_width");
height = parse_str_int(avpkt->data, end, "_height");

if ((ret = ff_set_dimensions(avctx, width, height)) < 0)
return ret;


Loading…
Cancel
Save