Paul B Mahol: > Can make demuxing much faster, expecially for files with > huge number of channels. > > Signed-off-by: Paul B Mahol <one...@gmail.com> > --- > libavformat/wavdec.c | 21 ++++++++++++++++++--- > 1 file changed, 18 insertions(+), 3 deletions(-) > > diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c > index e1b2115434..5b3c481421 100644 > --- a/libavformat/wavdec.c > +++ b/libavformat/wavdec.c > @@ -56,6 +56,7 @@ typedef struct WAVDemuxContext { > int smv_eof; > int audio_eof; > int ignore_length; > + int max_size; > int spdif; > int smv_cur_pt; > int smv_given_first; > @@ -628,8 +629,6 @@ static int64_t find_guid(AVIOContext *pb, const uint8_t > guid1[16]) > return AVERROR_EOF; > } > > -#define MAX_SIZE 4096 > - > static int wav_read_packet(AVFormatContext *s, AVPacket *pkt) > { > int ret, size; > @@ -706,7 +705,7 @@ smv_out: > wav->data_end = avio_tell(s->pb) + left; > } > > - size = MAX_SIZE; > + size = wav->max_size; > if (st->codecpar->block_align > 1) { > if (size < st->codecpar->block_align) > size = st->codecpar->block_align; > @@ -759,6 +758,7 @@ static int wav_read_seek(AVFormatContext *s, > #define DEC AV_OPT_FLAG_DECODING_PARAM > static const AVOption demux_options[] = { > { "ignore_length", "Ignore length", OFFSET(ignore_length), > AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, DEC }, > + { "max_size", "max size of single packet", OFFSET(max_size), > AV_OPT_TYPE_INT, { .i64 = 4096 }, 1024, 1 << 22, DEC }, > { NULL }, > }; > > @@ -906,6 +906,20 @@ static int w64_read_header(AVFormatContext *s) > return 0; > } > > +#define OFFSET(x) offsetof(WAVDemuxContext, x) > +#define DEC AV_OPT_FLAG_DECODING_PARAM > +static const AVOption w64_demux_options[] = { > + { "max_size", "max size of single packet", OFFSET(max_size), > AV_OPT_TYPE_INT, { .i64 = 4096 }, 1024, 1 << 22, DEC }, > + { NULL },
The ',' is unnecessary: Nothing will ever be added after the sentinel. > +}; You can use &demux_options[1] instead of w64_demux_options (but add a comment for this). > + > +static const AVClass w64_demuxer_class = { > + .class_name = "W64 demuxer", > + .item_name = av_default_item_name, > + .option = w64_demux_options, > + .version = LIBAVUTIL_VERSION_INT, > +}; > + > AVInputFormat ff_w64_demuxer = { > .name = "w64", > .long_name = NULL_IF_CONFIG_SMALL("Sony Wave64"), > @@ -916,5 +930,6 @@ AVInputFormat ff_w64_demuxer = { > .read_seek = wav_read_seek, > .flags = AVFMT_GENERIC_INDEX, > .codec_tag = (const AVCodecTag * const []) { ff_codec_wav_tags, 0 }, > + .priv_class = &w64_demuxer_class, > }; > #endif /* CONFIG_W64_DEMUXER */ > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".