Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Timo Rothenpieler <timo@rothenpieler.org>
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [crop support for matroska demuxer, V3 1/3] libavcodec: Add crop related fields to structure AVCodecContext and AVCodecParameters.
Date: Tue, 11 Oct 2022 14:43:25 +0200
Message-ID: <a0419830-6356-5980-58d0-cef172cc88d0@rothenpieler.org> (raw)
In-Reply-To: <20221007145942.880-1-ovchinnikov.dmitrii@gmail.com>



On 07/10/2022 16:59, OvchinnikovDmitrii wrote:
> ---
>   libavcodec/avcodec.h       | 35 +++++++++++++++++++++++++++++++++++
>   libavcodec/codec_par.h     |  8 ++++++++
>   libavcodec/options_table.h |  4 ++++
>   3 files changed, 47 insertions(+)
> 
> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index 7365eb5cc0..d28a7cc022 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -380,6 +380,19 @@ typedef struct RcOverride{
>    */
>   #define AV_GET_ENCODE_BUFFER_FLAG_REF (1 << 0)
>   
> +/**
> +* Video decoding only. Certain container support cropping, meaning that
> +* only a sub-rectangle of the decoded frame is intended for display.
> +* Certain codec supports cropping as well.This option controls how
> +* cropping is handled by libavcodec when  container cropping and
> +* codec cropping exist.
> +*/
> +enum CONTAINER_CROPPING_POLICY_TYPE {
> +    FF_CONTAINER_CROPPING_IGNORE = 0,
> +    FF_CONTAINER_CROPPING_ADDITION,
> +    FF_CONTAINER_CROPPING_OVERWRITE
> +};
> +
>   struct AVCodecInternal;
>   
>   /**
> @@ -2057,6 +2070,28 @@ typedef struct AVCodecContext {
>        *             The decoder can then override during decoding as needed.
>        */
>       AVChannelLayout ch_layout;
> +
> +    /* When set to 1 (the default), libavcodec will apply container cropping
> +     * to codec cropping additionally.
> +     *
> +     * When set to 2, libavcodec will use container cropping to overwrite
> +     * codec cropping (the final cropping uses container cropping parameters)
> +     *
> +     * When set to 0, libavcodec will ignore container cropping parameters
> +     * (the final cropping uses codec cropping parameters)
> +     *
> +     * This field works with "apply_cropping". Only if apply_cropping is 1, this
> +     * field works
> +     */
> +    enum CONTAINER_CROPPING_POLICY_TYPE container_apply_cropping;
> +
> +    /**
> +     * The cropping parameters from container.
> +     */
> +    int container_crop_top;
> +    int container_crop_left;
> +    int container_crop_bottom;
> +    int container_crop_right;
>   } AVCodecContext;
>   
>   /**
> diff --git a/libavcodec/codec_par.h b/libavcodec/codec_par.h
> index 7660791a12..12d8ceb521 100644
> --- a/libavcodec/codec_par.h
> +++ b/libavcodec/codec_par.h
> @@ -210,6 +210,14 @@ typedef struct AVCodecParameters {
>        * Audio only. The channel layout and number of channels.
>        */
>       AVChannelLayout ch_layout;
> +
> +    /**
> +     * The cropping parameters from container.
> +     */
> +    int container_crop_top;
> +    int container_crop_left;
> +    int container_crop_bottom;
> +    int container_crop_right;
>   } AVCodecParameters;

I really don't like seeing this in avcodec.
Why does an encoder or decoder need to care about this, given it's 
container level information?

Do you plan on implementing cropping support into all the encoders?
This should be handled via an avfilter, which might get the cropping 
info from the demuxer via site data or something.
_______________________________________________
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".

  parent reply	other threads:[~2022-10-11 12:43 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-07 14:59 OvchinnikovDmitrii
2022-10-07 14:59 ` [FFmpeg-devel] [crop support for matroska demuxer, V3 2/3] libavcodec: Public code to support container crop OvchinnikovDmitrii
2022-10-07 14:59 ` [FFmpeg-devel] [crop support for matroska demuxer, V3 3/3] libavformat\matroskadec.c: crop support for matroska demuxer OvchinnikovDmitrii
2022-10-11 11:59 ` [FFmpeg-devel] [crop support for matroska demuxer, V3 1/3] libavcodec: Add crop related fields to structure AVCodecContext and AVCodecParameters Anton Khirnov
2022-10-12 15:20   ` Dmitrii Ovchinnikov
2022-10-11 12:43 ` Timo Rothenpieler [this message]
2022-10-11 12:51   ` James Almer
2022-10-12 17:08     ` Anton Khirnov
2022-10-12 15:21   ` Dmitrii Ovchinnikov

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=a0419830-6356-5980-58d0-cef172cc88d0@rothenpieler.org \
    --to=timo@rothenpieler.org \
    --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