Check for av_new_stream failure, fixes CID76 RUN2
Originally committed as revision 13533 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
1ab05d37ff
commit
6c10281c3a
@ -82,6 +82,8 @@ static int get_sindex(AVFormatContext *s, int id, int format) {
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
st = av_new_stream(s, id);
|
st = av_new_stream(s, id);
|
||||||
|
if (!st)
|
||||||
|
return AVERROR(ENOMEM);
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
@ -415,6 +417,7 @@ static int gxf_packet(AVFormatContext *s, AVPacket *pkt) {
|
|||||||
while (!url_feof(pb)) {
|
while (!url_feof(pb)) {
|
||||||
int track_type, track_id, ret;
|
int track_type, track_id, ret;
|
||||||
int field_nr;
|
int field_nr;
|
||||||
|
int stream_index;
|
||||||
if (!parse_packet_header(pb, &pkt_type, &pkt_len)) {
|
if (!parse_packet_header(pb, &pkt_type, &pkt_len)) {
|
||||||
if (!url_feof(pb))
|
if (!url_feof(pb))
|
||||||
av_log(s, AV_LOG_ERROR, "GXF: sync lost\n");
|
av_log(s, AV_LOG_ERROR, "GXF: sync lost\n");
|
||||||
@ -435,6 +438,9 @@ static int gxf_packet(AVFormatContext *s, AVPacket *pkt) {
|
|||||||
pkt_len -= 16;
|
pkt_len -= 16;
|
||||||
track_type = get_byte(pb);
|
track_type = get_byte(pb);
|
||||||
track_id = get_byte(pb);
|
track_id = get_byte(pb);
|
||||||
|
stream_index = get_sindex(s, track_id, track_type);
|
||||||
|
if (stream_index < 0)
|
||||||
|
return stream_index;
|
||||||
field_nr = get_be32(pb);
|
field_nr = get_be32(pb);
|
||||||
get_be32(pb); // field information
|
get_be32(pb); // field information
|
||||||
get_be32(pb); // "timeline" field number
|
get_be32(pb); // "timeline" field number
|
||||||
@ -444,7 +450,7 @@ static int gxf_packet(AVFormatContext *s, AVPacket *pkt) {
|
|||||||
// field information, it might be better to take this into account
|
// field information, it might be better to take this into account
|
||||||
// as well.
|
// as well.
|
||||||
ret = av_get_packet(pb, pkt, pkt_len);
|
ret = av_get_packet(pb, pkt, pkt_len);
|
||||||
pkt->stream_index = get_sindex(s, track_id, track_type);
|
pkt->stream_index = stream_index;
|
||||||
pkt->dts = field_nr;
|
pkt->dts = field_nr;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user