From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id AE7194441E for ; Tue, 11 Oct 2022 12:43:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F13B268BC9A; Tue, 11 Oct 2022 15:42:58 +0300 (EEST) Received: from btbn.de (btbn.de [136.243.74.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B536168BC0C for ; Tue, 11 Oct 2022 15:42:52 +0300 (EEST) Received: from [authenticated] by btbn.de (Postfix) with ESMTPSA id 429B21EA34B for ; Tue, 11 Oct 2022 14:42:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rothenpieler.org; s=mail; t=1665492172; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=POgF4T3y5BPbfdXdtfSbEkOvmNVCYD7jEeUiQ9gqBdE=; b=DvfrrdiIkdMTNWabz0j7N3QXZ8qwG+wwSUwZrBppP6rG1H/uvRlU4GZxnEoddZhGX7imqp WOu3zBFTnPs2FBX4bz1LJTmLq9QUgZmitYBEO/DLjkyXe/qKaV/ojDcA+LmrxJ8s1Mban+ R/bikHOveVf/9Vh0K/aRM8pPVYHRAV1IKGu6uooYLxn2xd4BBlotYTpxNRGi3yoY2wty8w eShWzaIdjRCPUdZ6nOqfJkDdrKUxMjmUCbRSNuIkIJMA5tQNeC6s8YYNnsquEn49J3+Cu/ z8jlrVcxBNreVzn/vws0UWlARi3eFr/AYNGozKgi7PugATXKBUhbjZFO46/uDQ== Message-ID: Date: Tue, 11 Oct 2022 14:43:25 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.2 To: ffmpeg-devel@ffmpeg.org References: <20221007145942.880-1-ovchinnikov.dmitrii@gmail.com> Content-Language: en-US From: Timo Rothenpieler In-Reply-To: <20221007145942.880-1-ovchinnikov.dmitrii@gmail.com> Subject: Re: [FFmpeg-devel] [crop support for matroska demuxer, V3 1/3] libavcodec: Add crop related fields to structure AVCodecContext and AVCodecParameters. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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".