av_log(s, AV_LOG_ERROR, "extradata size %u too large\n", size);
return -1;
}
- if (ff_get_extradata(s, par, pb, size) < 0)
- return AVERROR(ENOMEM);
- return 0;
+ return ff_get_extradata(s, par, pb, size);
}
static void rm_read_metadata(AVFormatContext *s, AVIOContext *pb, int wide)
num = avio_rb16(pb);
*timestamp = avio_rb32(pb);
- mlti_id = (avio_r8(pb)>>1)-1<<16;
- mlti_id = FFMAX(mlti_id, 0);
+ mlti_id = (avio_r8(pb) >> 1) - 1;
+ mlti_id = FFMAX(mlti_id, 0) << 16;
*flags = avio_r8(pb); /* flags */
}
for(i=0;i<s->nb_streams;i++) {
return -1;
}
rm->remaining_len -= len;
- if(av_new_packet(pkt, len + 9) < 0)
- return AVERROR(EIO);
+ if ((ret = av_new_packet(pkt, len + 9)) < 0)
+ return ret;
pkt->data[0] = 0;
AV_WL32(pkt->data + 1, 1);
AV_WL32(pkt->data + 5, 0);
vst->slices = ((hdr & 0x3F) << 1) + 1;
vst->videobufsize = len2 + 8*vst->slices + 1;
av_packet_unref(&vst->pkt); //FIXME this should be output.
- if(av_new_packet(&vst->pkt, vst->videobufsize) < 0)
- return AVERROR(ENOMEM);
+ if ((ret = av_new_packet(&vst->pkt, vst->videobufsize)) < 0)
+ return ret;
memset(vst->pkt.data, 0, vst->pkt.size);
vst->videobufpos = 8*vst->slices + 1;
vst->cur_slice = 0;
if (type == 2 || vst->videobufpos == vst->videobufsize) {
vst->pkt.data[0] = vst->cur_slice-1;
- *pkt= vst->pkt;
- vst->pkt.data= NULL;
- vst->pkt.size= 0;
- vst->pkt.buf = NULL;
+ av_packet_move_ref(pkt, &vst->pkt);
if(vst->slices != vst->cur_slice) //FIXME find out how to set slices correct from the begin
memmove(pkt->data + 1 + 8*vst->cur_slice, pkt->data + 1 + 8*vst->slices,
vst->videobufpos - 1 - 8*vst->slices);
return 0;
}
-static int rm_probe(AVProbeData *p)
+static int rm_probe(const AVProbeData *p)
{
/* check file header */
if ((p->buf[0] == '.' && p->buf[1] == 'R' &&
.flags = AVFMT_NOFILE,
};
-static int ivr_probe(AVProbeData *p)
+static int ivr_probe(const AVProbeData *p)
{
if (memcmp(p->buf, ".R1M\x0\x1\x1", 7) &&
memcmp(p->buf, ".REC", 4))
uint8_t key[256], val[256];
AVIOContext *pb = s->pb;
AVStream *st;
- int64_t pos, offset, temp;
+ int64_t pos, offset=0, temp;
pos = avio_tell(pb);
tag = avio_rl32(pb);
offset = temp;
temp = avio_rb64(pb);
}
+ if (offset <= 0)
+ return AVERROR_INVALIDDATA;
avio_skip(pb, offset - avio_tell(pb));
if (avio_r8(pb) != 1)
return AVERROR_INVALIDDATA;