yes, I noticed, when I tried to figure out why http://samples.ffmpeg.org/mplayer-bugs/bug821/bug821-2.asf wasn't working, the number was funnny indeed
On Thu, Jul 16, 2015 at 2:55 PM, Kostya Shishkov <[email protected]> wrote: > On Thu, Jul 16, 2015 at 01:55:47PM +0200, Luca Barbato wrote: >> On 16/07/15 12:14, Alexandra Hájková wrote: >> > --- >> > libavformat/asfdec.c | 24 +++++++++++++----------- >> > 1 file changed, 13 insertions(+), 11 deletions(-) >> > >> > diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c >> > index 7458e19..7146dcc 100644 >> > --- a/libavformat/asfdec.c >> > +++ b/libavformat/asfdec.c >> > @@ -1123,17 +1123,19 @@ static int >> > asf_read_multiple_payload(AVFormatContext *s, AVPacket *pkt, >> > if ((ret = asf_read_subpayload(s, pkt, 1)) < 0) >> > return ret; >> > } else { >> > - if (!asf_pkt->data_size) { >> > - asf_pkt->data_size = asf_pkt->size_left = avio_rl32(pb); // >> > read media object size >> > - if (asf_pkt->data_size <= 0) >> > - return AVERROR_EOF; >> > - if ((ret = av_new_packet(&asf_pkt->avpkt, >> > asf_pkt->data_size)) < 0) >> > - return ret; >> > - } else >> > - avio_skip(pb, 4); // reading of media object size is already >> > done >> > - asf_pkt->dts = avio_rl32(pb); // read presentation time >> > - if ((asf->rep_data_len - 8) > 0) >> > - avio_skip(pb, asf->rep_data_len - 8); // skip replicated data >> > + if (asf->rep_data_len) { >> > + if (!asf_pkt->data_size) { >> > + asf_pkt->data_size = asf_pkt->size_left = avio_rl32(pb); >> > // read media object size >> > + if (asf_pkt->data_size <= 0) >> > + return AVERROR_EOF; >> > + if ((ret = av_new_packet(&asf_pkt->avpkt, >> > asf_pkt->data_size)) < 0) >> > + return ret; >> > + } else >> > + avio_skip(pb, 4); // reading of media object size is >> > already done >> > + asf_pkt->dts = avio_rl32(pb); // read presentation time >> > + if (asf->rep_data_len && ((asf->rep_data_len - 8) > 0)) >> > + avio_skip(pb, asf->rep_data_len - 8); // skip replicated >> > data >> > + } >> > pay_len = avio_rl16(pb); // payload length should be WORD >> > if (pay_len > asf->packet_size) { >> > av_log(s, AV_LOG_ERROR, >> > >> >> Would be probably a good idea spin that block in a stand alone function. > > Also has anyone noticed that rep_data_len is unsigned and thus > (asf->rep_data_len - 8) > 0 might behave funny? > _______________________________________________ > libav-devel mailing list > [email protected] > https://lists.libav.org/mailman/listinfo/libav-devel _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
