From: Steven Liu <lingjiujianke@gmail.com> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Cc: Steven Liu <lq@chinaffmpeg.org> Subject: Re: [FFmpeg-devel] [PATCH 2/3] avformat/mov: skip hoov box if strict >= normal Date: Fri, 24 Dec 2021 18:46:11 +0800 Message-ID: <CADxeRw==TMkL8iufFLFPV4xuDoky=54C+wYTt_zee03AgrpPHQ@mail.gmail.com> (raw) In-Reply-To: <tencent_CD93114859D3F63366B5DDE913AEB4A54605@qq.com> "zhilizhao(赵志立)" <quinkblack@foxmail.com> 于2021年12月24日周五 18:38写道: > > > > > On Dec 24, 2021, at 6:19 PM, Steven Liu <lq@chinaffmpeg.org> wrote: > > > >> 2021年12月24日 下午5:58,Zhao Zhili <quinkblack@foxmail.com> 写道: > >> > >> The samples I have got have hoov and moov both. Unknown boxes > >> should be skipped according to the spec. So don't treat hoov as > >> moov in normal mode. > >> > >> For backward compatible, a log message has been added to notice > >> the user to relax the striction if moov doesn't exist. > >> > >> Fix #8883. > >> --- > >> libavformat/mov.c | 13 +++++++++---- > >> 1 file changed, 9 insertions(+), 4 deletions(-) > >> > >> diff --git a/libavformat/mov.c b/libavformat/mov.c > >> index ea2f010aa0..63483740a0 100644 > >> --- a/libavformat/mov.c > >> +++ b/libavformat/mov.c > >> @@ -7324,10 +7324,11 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) > >> if (atom.size >= 8) { > >> a.size = avio_rb32(pb); > >> a.type = avio_rl32(pb); > >> - if (((a.type == MKTAG('f','r','e','e') && c->moov_retry) || > >> - a.type == MKTAG('h','o','o','v')) && > >> - a.size >= 8 && > >> - c->fc->strict_std_compliance < FF_COMPLIANCE_STRICT) { > >> + if (((a.type == MKTAG('f','r','e','e') && c->moov_retry && > >> + c->fc->strict_std_compliance < FF_COMPLIANCE_STRICT) || > >> + (a.type == MKTAG('h','o','o','v') && > >> + c->fc->strict_std_compliance < FF_COMPLIANCE_NORMAL)) && > >> + a.size >= 8) { > > > > I prefer add one option ignore_hoov, let user choose ignore it, because it should more clearly than use stirct. > > Add an option works for me too, but it should default to ignore hoov, because: > 1. Truncated/broken files are minority compared to normal files (I hope); > 2. Support normal files has higher priority than workaround broken files. > I think about ignore hoov should not default, because it use hoov default before. We should attention users pay attention about this change maybe do it like deprecate warning. Just waning need change default it ignore hoov and use moov. But I’m not sure ignore hoov is correct, because not sure user have the sample file which only have one hoov and have no moov atom in the files. > We can support both by drop fake moov info after found a real moov, but > it doesn’t deserve the complexity. > > I’d like to get more opinions. > > > >> uint32_t type; > >> avio_skip(pb, 4); > >> type = avio_rl32(pb); > >> @@ -7340,6 +7341,10 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) > >> a.type = MKTAG('m','o','o','v'); > >> } > >> } > >> + if (a.type == MKTAG('h','o','o','v') && > >> + c->fc->strict_std_compliance >= FF_COMPLIANCE_NORMAL) > >> + av_log(c->fc, AV_LOG_INFO, > >> + "Skip hoov atom, try decrease -strict if moov doesn't exist.\n"); > >> if (atom.type != MKTAG('r','o','o','t') && > >> atom.type != MKTAG('m','o','o','v')) { > >> if (a.type == MKTAG('t','r','a','k') || > >> -- > >> 2.31.1 > >> > >> _______________________________________________ > >> ffmpeg-devel mailing list > >> ffmpeg-devel@ffmpeg.org > >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > >> > >> To unsubscribe, visit link above, or email > >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > >> > > > > Thanks > > > > Steven Liu > > > >> 2021年12月24日 下午5:58,Zhao Zhili <quinkblack@foxmail.com> 写道: > >> > >> The samples I have got have hoov and moov both. Unknown boxes > >> should be skipped according to the spec. So don't treat hoov as > >> moov in normal mode. > >> > >> For backward compatible, a log message has been added to notice > >> the user to relax the striction if moov doesn't exist. > >> > >> Fix #8883. > >> --- > >> libavformat/mov.c | 13 +++++++++---- > >> 1 file changed, 9 insertions(+), 4 deletions(-) > >> > >> diff --git a/libavformat/mov.c b/libavformat/mov.c > >> index ea2f010aa0..63483740a0 100644 > >> --- a/libavformat/mov.c > >> +++ b/libavformat/mov.c > >> @@ -7324,10 +7324,11 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) > >> if (atom.size >= 8) { > >> a.size = avio_rb32(pb); > >> a.type = avio_rl32(pb); > >> - if (((a.type == MKTAG('f','r','e','e') && c->moov_retry) || > >> - a.type == MKTAG('h','o','o','v')) && > >> - a.size >= 8 && > >> - c->fc->strict_std_compliance < FF_COMPLIANCE_STRICT) { > >> + if (((a.type == MKTAG('f','r','e','e') && c->moov_retry && > >> + c->fc->strict_std_compliance < FF_COMPLIANCE_STRICT) || > >> + (a.type == MKTAG('h','o','o','v') && > >> + c->fc->strict_std_compliance < FF_COMPLIANCE_NORMAL)) && > >> + a.size >= 8) { > > > > I prefer add one option ignore_hoov, let user choose ignore it, because it should more clearly than use stirct. > >> uint32_t type; > >> avio_skip(pb, 4); > >> type = avio_rl32(pb); > >> @@ -7340,6 +7341,10 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) > >> a.type = MKTAG('m','o','o','v'); > >> } > >> } > >> + if (a.type == MKTAG('h','o','o','v') && > >> + c->fc->strict_std_compliance >= FF_COMPLIANCE_NORMAL) > >> + av_log(c->fc, AV_LOG_INFO, > >> + "Skip hoov atom, try decrease -strict if moov doesn't exist.\n"); > >> if (atom.type != MKTAG('r','o','o','t') && > >> atom.type != MKTAG('m','o','o','v')) { > >> if (a.type == MKTAG('t','r','a','k') || > >> -- > >> 2.31.1 > >> > >> _______________________________________________ > >> ffmpeg-devel mailing list > >> ffmpeg-devel@ffmpeg.org > >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > >> > >> To unsubscribe, visit link above, or email > >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > >> > > > > Thanks > > > > Steven Liu > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". Thanks Steven _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2021-12-24 10:46 UTC|newest] Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <20211224095823.58415-1-quinkblack@foxmail.com> 2021-12-24 9:58 ` Zhao Zhili 2021-12-24 10:19 ` Steven Liu 2021-12-24 10:37 ` "zhilizhao(赵志立)" 2021-12-24 10:46 ` Steven Liu [this message] 2021-12-24 19:08 ` Derek Buitenhuis 2021-12-25 8:49 ` "zhilizhao(赵志立)" 2021-12-24 9:58 ` [FFmpeg-devel] [PATCH 3/3] avformat/mov: remove always false condtion Zhao Zhili 2021-12-24 10:22 ` Steven Liu 2021-12-24 11:13 ` Gyan Doshi
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CADxeRw==TMkL8iufFLFPV4xuDoky=54C+wYTt_zee03AgrpPHQ@mail.gmail.com' \ --to=lingjiujianke@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ --cc=lq@chinaffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git