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