mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-27 13:30:45 +00:00
lxf: check the nb_streams instead of relying on padding
Remove the now unneeded stream pointer while at it. Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org
This commit is contained in:
parent
a529fa2f4d
commit
5c349ad08a
@ -160,7 +160,7 @@ static int get_packet_header(AVFormatContext *s)
|
||||
break;
|
||||
case 1:
|
||||
//audio
|
||||
if (!(st = s->streams[1])) {
|
||||
if (s->nb_streams < 2) {
|
||||
av_log(s, AV_LOG_INFO, "got audio packet, but no audio stream present\n");
|
||||
break;
|
||||
}
|
||||
@ -171,6 +171,8 @@ static int get_packet_header(AVFormatContext *s)
|
||||
channels = bytestream_get_le32(&p);
|
||||
track_size = bytestream_get_le32(&p);
|
||||
|
||||
st = s->streams[1];
|
||||
|
||||
//set codec based on specified audio bitdepth
|
||||
//we only support tightly packed 16-, 20-, 24- and 32-bit PCM at the moment
|
||||
st->codec->bits_per_coded_sample = (audio_format >> 6) & 0x3F;
|
||||
@ -288,7 +290,6 @@ static int lxf_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
{
|
||||
LXFDemuxContext *lxf = s->priv_data;
|
||||
AVIOContext *pb = s->pb;
|
||||
AVStream *ast = NULL;
|
||||
uint32_t stream;
|
||||
int ret, ret2;
|
||||
|
||||
@ -302,7 +303,7 @@ static int lxf_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
return AVERROR(EAGAIN);
|
||||
}
|
||||
|
||||
if (stream == 1 && !(ast = s->streams[1])) {
|
||||
if (stream == 1 && s->nb_streams < 2) {
|
||||
av_log(s, AV_LOG_ERROR, "got audio packet without having an audio stream\n");
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
@ -317,7 +318,7 @@ static int lxf_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
|
||||
pkt->stream_index = stream;
|
||||
|
||||
if (!ast) {
|
||||
if (!stream) {
|
||||
//picture type (0 = closed I, 1 = open I, 2 = P, 3 = B)
|
||||
if (((lxf->video_format >> 22) & 0x3) < 2)
|
||||
pkt->flags |= AV_PKT_FLAG_KEY;
|
||||
|
Loading…
Reference in New Issue
Block a user