repositories
/
deb_ffmpeg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Imported Debian version 2.5.0~trusty1.1
[deb_ffmpeg.git]
/
ffmpeg
/
libavformat
/
rmdec.c
diff --git
a/ffmpeg/libavformat/rmdec.c
b/ffmpeg/libavformat/rmdec.c
index 5d9c9b5b4f9f6248c5c2e8aaace7fc38035be3b4..19bd7a7a0b2375ea459abad233b946e2a2bbc0d6 100644
(file)
--- a/
ffmpeg/libavformat/rmdec.c
+++ b/
ffmpeg/libavformat/rmdec.c
@@
-312,6
+312,9
@@
ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb,
int64_t codec_pos;
int ret;
int64_t codec_pos;
int ret;
+ if (codec_data_size < 0)
+ return AVERROR_INVALIDDATA;
+
avpriv_set_pts_info(st, 64, 1, 1000);
codec_pos = avio_tell(pb);
v = avio_rb32(pb);
avpriv_set_pts_info(st, 64, 1, 1000);
codec_pos = avio_tell(pb);
v = avio_rb32(pb);
@@
-610,7
+613,7
@@
static int get_num(AVIOContext *pb, int *len)
/* multiple of 20 bytes for ra144 (ugly) */
#define RAW_PACKET_SIZE 1000
/* multiple of 20 bytes for ra144 (ugly) */
#define RAW_PACKET_SIZE 1000
-static int sync(AVFormatContext *s, int64_t *timestamp, int *flags, int *stream_index, int64_t *pos){
+static int
rm_
sync(AVFormatContext *s, int64_t *timestamp, int *flags, int *stream_index, int64_t *pos){
RMDemuxContext *rm = s->priv_data;
AVIOContext *pb = s->pb;
AVStream *st;
RMDemuxContext *rm = s->priv_data;
AVIOContext *pb = s->pb;
AVStream *st;
@@
-918,8
+921,9
@@
ff_rm_retrieve_cache (AVFormatContext *s, AVIOContext *pb,
ast->deint_id == DEINT_ID_VBRS)
av_get_packet(pb, pkt, ast->sub_packet_lengths[ast->sub_packet_cnt - rm->audio_pkt_cnt]);
else {
ast->deint_id == DEINT_ID_VBRS)
av_get_packet(pb, pkt, ast->sub_packet_lengths[ast->sub_packet_cnt - rm->audio_pkt_cnt]);
else {
- if(av_new_packet(pkt, st->codec->block_align) < 0)
- return AVERROR(ENOMEM);
+ int ret = av_new_packet(pkt, st->codec->block_align);
+ if (ret < 0)
+ return ret;
memcpy(pkt->data, ast->pkt.data + st->codec->block_align * //FIXME avoid this
(ast->sub_packet_h * ast->audio_framesize / st->codec->block_align - rm->audio_pkt_cnt),
st->codec->block_align);
memcpy(pkt->data, ast->pkt.data + st->codec->block_align * //FIXME avoid this
(ast->sub_packet_h * ast->audio_framesize / st->codec->block_align - rm->audio_pkt_cnt),
st->codec->block_align);
@@
-963,12
+967,12
@@
static int rm_read_packet(AVFormatContext *s, AVPacket *pkt)
flags = (seq++ == 1) ? 2 : 0;
pos = avio_tell(s->pb);
} else {
flags = (seq++ == 1) ? 2 : 0;
pos = avio_tell(s->pb);
} else {
- len
=
sync(s, ×tamp, &flags, &i, &pos);
+ len
= rm_
sync(s, ×tamp, &flags, &i, &pos);
if (len > 0)
st = s->streams[i];
}
if (len > 0)
st = s->streams[i];
}
- if
(len<
0 || avio_feof(s->pb))
+ if
(len <=
0 || avio_feof(s->pb))
return AVERROR(EIO);
res = ff_rm_parse_packet (s, s->pb, st, st->priv_data, len, pkt,
return AVERROR(EIO);
res = ff_rm_parse_packet (s, s->pb, st, st->priv_data, len, pkt,
@@
-1034,7
+1038,7
@@
static int64_t rm_read_dts(AVFormatContext *s, int stream_index,
int seq=1;
AVStream *st;
int seq=1;
AVStream *st;
- len
=
sync(s, &dts, &flags, &stream_index2, &pos);
+ len
= rm_
sync(s, &dts, &flags, &stream_index2, &pos);
if(len<0)
return AV_NOPTS_VALUE;
if(len<0)
return AV_NOPTS_VALUE;