# HG changeset patch # User rbultje # Date 1229293588 0 # Node ID eed7d267ef6695e270c096aebfcd216f03ab812b # Parent 9ca077eb2eb2957ae839d60e64b7a3e6c082aaa2 Use get_buffer() and url_fskip() for some loops of get_byte()s. See discussion in ML thread "[PATCH] rmdec.c: use get_buffer and skip_bytes instead of loops of get_byte". diff -r 9ca077eb2eb2 -r eed7d267ef66 rmdec.c --- a/rmdec.c Sun Dec 14 22:24:58 2008 +0000 +++ b/rmdec.c Sun Dec 14 22:26:28 2008 +0000 @@ -74,15 +74,12 @@ RMDemuxContext *rm = s->priv_data; char buf[256]; uint32_t version; - int i; /* ra type header */ version = get_be32(pb); /* version */ if (((version >> 16) & 0xff) == 3) { int64_t startpos = url_ftell(pb); - /* very old version */ - for(i = 0; i < 14; i++) - get_byte(pb); + url_fskip(pb, 14); get_str8(pb, s->title, sizeof(s->title)); get_str8(pb, s->author, sizeof(s->author)); get_str8(pb, s->copyright, sizeof(s->copyright)); @@ -123,10 +120,7 @@ st->codec->channels = get_be16(pb); if (((version >> 16) & 0xff) == 5) { get_be32(pb); - buf[0] = get_byte(pb); - buf[1] = get_byte(pb); - buf[2] = get_byte(pb); - buf[3] = get_byte(pb); + get_buffer(pb, buf, 4); buf[4] = 0; } else { get_str8(pb, buf, sizeof(buf)); /* desc */ @@ -149,7 +143,7 @@ rm->audiobuf = av_malloc(rm->audio_framesize * sub_packet_h); } else if ((!strcmp(buf, "cook")) || (!strcmp(buf, "atrc")) || (!strcmp(buf, "sipr"))) { - int codecdata_length, i; + int codecdata_length; get_be16(pb); get_byte(pb); if (((version >> 16) & 0xff) == 5) get_byte(pb); @@ -169,8 +163,7 @@ else st->codec->codec_id = CODEC_ID_ATRAC3; st->codec->extradata_size= codecdata_length; st->codec->extradata= av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); - for(i = 0; i < codecdata_length; i++) - ((uint8_t*)st->codec->extradata)[i] = get_byte(pb); + get_buffer(pb, st->codec->extradata, st->codec->extradata_size); rm->audio_framesize = st->codec->block_align; st->codec->block_align = rm->sub_packet_size; @@ -181,7 +174,7 @@ rm->audiobuf = av_malloc(rm->audio_framesize * sub_packet_h); } else if (!strcmp(buf, "raac") || !strcmp(buf, "racp")) { - int codecdata_length, i; + int codecdata_length; get_be16(pb); get_byte(pb); if (((version >> 16) & 0xff) == 5) get_byte(pb); @@ -195,8 +188,7 @@ st->codec->extradata_size = codecdata_length - 1; st->codec->extradata = av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); get_byte(pb); - for(i = 0; i < st->codec->extradata_size; i++) - ((uint8_t*)st->codec->extradata)[i] = get_byte(pb); + get_buffer(pb, st->codec->extradata, st->codec->extradata_size); } } else { st->codec->codec_id = CODEC_ID_NONE;