On 8/28/20, Paul B Mahol <one...@gmail.com> wrote: > On 8/28/20, Andreas Rheinhardt <andreas.rheinha...@gmail.com> wrote: >> Paul B Mahol: >>> On 8/28/20, Andreas Rheinhardt <andreas.rheinha...@gmail.com> wrote: >>>> 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). >>> >>> How the comment should look like? >>> >> >> I thought of a comment for demux_options like "Hint: The options are >> partially shared with the Wave64 demuxer." > > More like Warning instead of Hint. > So some other developer does not add option that does not make sense for > w64.
Problem is demux_options are under ifdef so can not be shared as is. What about using macro to define max_size option or just keep it as in this patch. > >> >>>> >>>>> + >>>>> +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". >>> _______________________________________________ >>> 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". >>> >> >> _______________________________________________ >> 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". > _______________________________________________ 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".