Message ID | 20200920080528.26200-2-zane@zanevaniperen.com |
---|---|
State | Accepted |
Commit | 101ac40f69c51605347fa2b7f5c76481592acd28 |
Headers | show |
Series | argo_brp cleanups and fixes | expand |
Context | Check | Description |
---|---|---|
andriy/default | pending | |
andriy/make | success | Make finished |
andriy/make_fate | success | Make fate finished |
On Sun, Sep 20, 2020 at 08:06:18AM +0000, Zane van Iperen wrote: > Enforcing num_chunks == 1 only makes sense when demuxing from an ASF > file. When embedded in a BRP file, an ASF stream can have multiple chunks. > > Signed-off-by: Zane van Iperen <zane@zanevaniperen.com> > --- > libavformat/argo_asf.c | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > LGTM this set except last two patches (patch 9 and patch 10), they are not needed. I would like to commit that lines when actual decoder comes not before.
On Sun, 20 Sep 2020 10:54:44 +0200 "Paul B Mahol" <onemda@gmail.com> wrote: > > On Sun, Sep 20, 2020 at 08:06:18AM +0000, Zane van Iperen wrote: > > Enforcing num_chunks == 1 only makes sense when demuxing from an ASF > > file. When embedded in a BRP file, an ASF stream can have multiple chunks. > > > > Signed-off-by: Zane van Iperen <zane@zanevaniperen.com> > > --- > > libavformat/argo_asf.c | 17 ++++++++++------- > > 1 file changed, 10 insertions(+), 7 deletions(-) > > > > LGTM this set except last two patches (patch 9 and patch 10), they are not needed. > > I would like to commit that lines when actual decoder comes not before. Okay, I'll leave them out.
diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c index 048e5441d6..eb0c18601d 100644 --- a/libavformat/argo_asf.c +++ b/libavformat/argo_asf.c @@ -59,11 +59,6 @@ int ff_argo_asf_validate_file_header(AVFormatContext *s, const ArgoASFFileHeader if (hdr->magic != ASF_TAG || hdr->num_chunks == 0) return AVERROR_INVALIDDATA; - if (hdr->num_chunks > 1) { - avpriv_request_sample(s, ">1 chunk"); - return AVERROR_PATCHWELCOME; - } - if (hdr->chunk_offset < ASF_FILE_HEADER_SIZE) return AVERROR_INVALIDDATA; @@ -139,8 +134,12 @@ int ff_argo_asf_fill_stream(AVStream *st, const ArgoASFFileHeader *fhdr, avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate); st->start_time = 0; - st->duration = ckhdr->num_blocks * ckhdr->num_samples; - st->nb_frames = ckhdr->num_blocks; + + if (fhdr->num_chunks == 1) { + st->duration = ckhdr->num_blocks * ckhdr->num_samples; + st->nb_frames = ckhdr->num_blocks; + } + return 0; } @@ -199,6 +198,10 @@ static int argo_asf_read_header(AVFormatContext *s) if ((ret = ff_argo_asf_validate_file_header(s, &asf->fhdr)) < 0) return ret; + /* This should only be 1 in ASF files. >1 is fine if in BRP. */ + if (asf->fhdr.num_chunks != 1) + return AVERROR_INVALIDDATA; + if ((ret = avio_skip(pb, asf->fhdr.chunk_offset - ASF_FILE_HEADER_SIZE)) < 0) return ret;
Enforcing num_chunks == 1 only makes sense when demuxing from an ASF file. When embedded in a BRP file, an ASF stream can have multiple chunks. Signed-off-by: Zane van Iperen <zane@zanevaniperen.com> --- libavformat/argo_asf.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)