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 0AA3F4AEDF for ; Tue, 25 Jun 2024 10:25:31 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 75FB068D412; Tue, 25 Jun 2024 13:25:28 +0300 (EEST) Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7081768D3F8 for ; Tue, 25 Jun 2024 13:25:22 +0300 (EEST) Authentication-Results: mail0.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=WbfH0ADN; dkim-atps=neutral Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 1515E240DAC for ; Tue, 25 Jun 2024 12:25:22 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id c9kB9G2XhUwR for ; Tue, 25 Jun 2024 12:25:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1719311121; bh=r7sDEE8xJ13NQern2/jvkYt5r905A/4qz1MRHtkAReg=; h=Subject:From:To:In-Reply-To:References:Date:From; b=WbfH0ADNvSJHA9oT2JfJwjrxJJ2K+pk6pEaqGycb5MdRGsYyRK94utMrsekHo/nRL KyI1afifs25O00tE5YqmQCjraHuWEG0waAmsB3zU9/l5dNPsgcXVvYIAMzBZWQvc8U oZN4fMfQZnpiXXNyIFVxslFAGW2LDkAz3i8f3UfYQBQnvgeSha55SR+3IMx6auSLk2 6mE1DQ2KpHYuxWxyoDEqb16fZcgOUncZjtlprRvMdghGNqdnMMv7pAEyBt3W2nzcKz xJWulH7IQuyNiEPYSkUln+JExIirlKaidGIujLb2dr7HDHEPMQywWc6j7hPBRhOc5S LQqysj8MIMrhg== Received: from lain.khirnov.net (lain.khirnov.net [IPv6:2001:67c:1138:4306::3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "lain.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 71DF12404E5 for ; Tue, 25 Jun 2024 12:25:21 +0200 (CEST) Received: by lain.khirnov.net (Postfix, from userid 1000) id 4E40A1601B9; Tue, 25 Jun 2024 12:25:21 +0200 (CEST) From: Anton Khirnov To: FFmpeg development discussions and patches In-Reply-To: <20240530232251.3538-1-jamrial@gmail.com> References: <20240530225757.GG2821752@pb2> <20240530232251.3538-1-jamrial@gmail.com> Mail-Followup-To: FFmpeg development discussions and patches Date: Tue, 25 Jun 2024 12:25:21 +0200 Message-ID: <171931112129.21847.16787893012767512029@lain.khirnov.net> User-Agent: alot/0.8.1 MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH 1/2 v2] fftools/ffmpeg: support applying container level cropping 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-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Quoting James Almer (2024-05-31 01:22:51) > @@ -1000,11 +1001,21 @@ int ist_filter_add(InputStream *ist, InputFilter *ifilter, int is_simple, > ist->filters[ist->nb_filters - 1] = ifilter; > > if (ist->par->codec_type == AVMEDIA_TYPE_VIDEO) { > + const AVPacketSideData *sd = av_packet_side_data_get(ist->par->coded_side_data, > + ist->par->nb_coded_side_data, > + AV_PKT_DATA_FRAME_CROPPING); > if (ist->framerate.num > 0 && ist->framerate.den > 0) { > opts->framerate = ist->framerate; > opts->flags |= IFILTER_FLAG_CFR; > } else > opts->framerate = av_guess_frame_rate(d->f.ctx, ist->st, NULL); > + if (sd && sd->size == sizeof(uint32_t) * 4) { > + opts->crop_top = AV_RL32(sd->data + 0); > + opts->crop_bottom = AV_RL32(sd->data + 4); > + opts->crop_left = AV_RL32(sd->data + 8); > + opts->crop_right = AV_RL32(sd->data + 12); > + opts->flags |= IFILTER_FLAG_CROP; > + } > } else if (ist->par->codec_type == AVMEDIA_TYPE_SUBTITLE) { > /* Compute the size of the canvas for the subtitles stream. > If the subtitles codecpar has set a size, use it. Otherwise use the > @@ -1241,6 +1252,9 @@ static int ist_add(const OptionsContext *o, Demuxer *d, AVStream *st) > ds->autorotate = 1; > MATCH_PER_STREAM_OPT(autorotate, i, ds->autorotate, ic, st); > > + ds->apply_cropping = 1; > + MATCH_PER_STREAM_OPT(apply_cropping, i, ds->apply_cropping, ic, st); > + > MATCH_PER_STREAM_OPT(codec_tags, str, codec_tag, ic, st); > if (codec_tag) { > uint32_t tag = strtol(codec_tag, &next, 0); > @@ -1362,6 +1376,8 @@ static int ist_add(const OptionsContext *o, Demuxer *d, AVStream *st) > > ds->dec_opts.flags |= DECODER_FLAG_BITEXACT * !!o->bitexact; > > + av_dict_set_int(&ds->decoder_opts, "apply_cropping", ds->apply_cropping, 0); If I'm reading it right, this new option now applies only to decoder cropping (breaking syntax, because AVOptions always take an argument), while container cropping is always applied unconditionally. That seems wrong. -- 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".