From: "Carotti, Elias" <eliascrt@amazon.it> To: "ffmpeg-devel@ffmpeg.org" <ffmpeg-devel@ffmpeg.org> Subject: Re: [FFmpeg-devel] [PATCH] Optimization: support for libx264's mb_info Date: Thu, 22 Jun 2023 17:23:05 +0000 Message-ID: <c6814bcd7c1d14b84e1465792936aea6a25d733b.camel@amazon.it> (raw) In-Reply-To: <168742346237.21886.2119907118968452752@lain.khirnov.net> On Thu, 2023-06-22 at 10:44 +0200, Anton Khirnov wrote: > CAUTION: This email originated from outside of the organization. Do > not click links or open attachments unless you can confirm the sender > and know the content is safe. > > > > Quoting Carotti, Elias (2023-06-21 17:53:09) > > + > > + /** > > + * Provide macro block encoder-specific hinting information > > for the encoder > > + * processing. It can be used to pass information about which > > macroblock > > + * can be skipped because it hasn't changed from the > > corresponding one in > > + * the previous frame. This is useful for applications which > > know in > > + * advance this information to speed up real-time encoding. > > Currently only > > + * used by libx264. > > I'd avoid any such claims here, because this comment will certainly > not > be kept up to date. Agreed. It was more a statement than a claim, since I only implemented that :-) > > > +/** > > + * Allocate memory for a vector of AVVideoRect in the given > > AVFrame > > + * {@code frame} as AVFrameSideData of type > > AV_FRAME_DATA_VIDEO_HINT_INFO. > > + * The side data contains a list of rectangles for the portions of > > the frame > > + * which changed from the last encoded one (and the remainder are > > assumed to be > > + * changed), or, alternately (depending on the type parameter) the > > unchanged > > + * ones (and the remanining ones are those which changed). > > + * Macroblocks will thus be hinted either to be P_SKIP-ped or go > > through the > > + * regular encoding procedure. > > + */ > > +AVVideoHint *av_video_hint_create_side_data(AVFrame *frame, > > + AVVideoRect *rects, > > + size_t num_rects, > > + AVVideoHintType type); > > + > > +AVVideoHint *av_video_hint_alloc(AVVideoRect *rects, > > + size_t nb_rects, > > + AVVideoHintType type, > > + size_t *out_size); > > If AVVideoHint is extended in the future, you will have a weird > situation where some fields are set by the allocation function, while > others have to be set manually by the caller. > > You're also assuming the caller has an explicit array of AVVideoRect, > while they may actually want to fill them in through some other > means. I agree on the first issue, and yes, it would be wiser to split the allocation function from a the setting function. Would a simple append_rectangles (the name may be different) API work for you? I am not clear on the second issue you raise though: the thing is that this side information is only needed per frame and before encoding, so I do not see a use case where you keep adding rectangles to this side data. The use case I see is where you accumulate the rectangles and then feed them to the encoding function and forget about them, however, again, if we add an append_rectangles we could easily extend it to the use case you're hinting at. > > Finally, it still seems to me this is largely duplicating > AVVideoEncParams and you could get your functionality by adding your > AVVideoHintType there. > I disagree on this last point. My first idea to avoid duplicating or adding unnecessary code was indeed to extend AVVideoEncParams. However, (please correct me if I am wrong,) to my undestanding the AVVideoEncParams are currently only used at the *decoder* side to convey the encoding parameters (extracted from the bitstream) used by the encoder to produce a stream while here we want to work the other way around: at the encoder's side to provide hints on how to encode a frame but won't affect the bitstream (aside from inducing faster P_SKIPs generation.) and won't be known at the decoder's side. So it seems to me it's a different semantics for which it's better to have an appropriate side information. Best, Elias > -- > Anton Khirnov > _______________________________________________ > 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". NICE SRL, viale Monte Grappa 3/5, 20124 Milano, Italia, Registro delle Imprese di Milano Monza Brianza Lodi REA n. 2096882, Capitale Sociale: 10.329,14 EUR i.v., Cod. Fisc. e P.IVA 01133050052, Societa con Socio Unico _______________________________________________ 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:[~2023-06-22 17:23 UTC|newest] Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-05-19 10:19 Carotti, Elias 2023-05-21 23:17 ` Stefano Sabatini 2023-05-22 9:19 ` Carotti, Elias 2023-05-29 17:56 ` Carotti, Elias 2023-06-04 15:29 ` Stefano Sabatini 2023-06-05 15:32 ` Carotti, Elias 2023-06-11 17:15 ` Stefano Sabatini 2023-06-12 8:23 ` Kieran Kunhya 2023-06-12 17:38 ` Carotti, Elias 2023-06-18 10:04 ` Stefano Sabatini 2023-06-12 17:28 ` Carotti, Elias 2023-06-18 10:18 ` Stefano Sabatini 2023-06-21 15:53 ` Carotti, Elias 2023-06-22 8:44 ` Anton Khirnov 2023-06-22 17:23 ` Carotti, Elias [this message] 2023-06-24 11:01 ` Anton Khirnov 2023-06-26 9:50 ` Carotti, Elias 2023-06-28 12:55 ` Anton Khirnov 2023-06-30 17:40 ` Carotti, Elias 2023-07-01 8:33 ` Anton Khirnov 2023-07-03 15:51 ` Carotti, Elias 2023-07-07 16:27 ` Carotti, Elias 2023-07-09 11:05 ` [FFmpeg-devel] [PATCH] lavu: add AVVideoHint API Anton Khirnov 2023-07-09 13:10 ` Lynne 2023-07-10 8:13 ` Carotti, Elias 2023-07-10 12:51 ` Carotti, Elias 2023-07-17 22:19 ` Stefano Sabatini 2023-07-23 23:27 ` Stefano Sabatini 2023-07-26 10:52 ` Carotti, Elias 2023-07-28 7:44 ` Stefano Sabatini 2023-08-02 5:36 ` Stefano Sabatini 2023-08-08 8:16 ` Stefano Sabatini 2023-07-10 8:09 ` Carotti, Elias
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=c6814bcd7c1d14b84e1465792936aea6a25d733b.camel@amazon.it \ --to=eliascrt@amazon.it \ --cc=ffmpeg-devel@ffmpeg.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