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 5FC8B4AF11 for ; Tue, 25 Jun 2024 13:12:21 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9712E68D516; Tue, 25 Jun 2024 16:12:18 +0300 (EEST) Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3C14768C35A for ; Tue, 25 Jun 2024 16:12:12 +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=gnda0BK3; dkim-atps=neutral Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id E6A59240DAC for ; Tue, 25 Jun 2024 15:12:11 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id pcIpy-bCgfxF for ; Tue, 25 Jun 2024 15:12:11 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1719321130; bh=EYqaqmAd4rD5JA8cm8JM1aSxQTV3GPQG9W21CnUdv7g=; h=Subject:From:To:In-Reply-To:References:Date:From; b=gnda0BK3Amv8PMRMJ8FldG5w4q5tzeJUd+UvIKjLjb74JS/Fh9X9cAXHCx5UO+cE/ 4nhp8eFJ/ul6nUjkSu6/qiSvPwlYOpZCBbnlS+PHBNAFQ6rhOb+7pj6TpYFy5pZOKJ v0HMOoyc8vUChC6MrOy8m5eUkI+CMQccHE8SvosmBGpJSe+aQYQBNbcgBcEN/xUI2H t7tYdTKbhwX5tSsSRYyEGn4dkm9iICj/ex6sFswhcgYoH/tfUGD168YQoQiiAUYHhj xRM5UZVl3O8g2ihsxYPG98hAf+hjoc5OT3l19jL9dpDKWN02kTB9isQGziAGuUoyCn Qs0p88WnWF6bA== 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 F316D2404E5 for ; Tue, 25 Jun 2024 15:12:10 +0200 (CEST) Received: by lain.khirnov.net (Postfix, from userid 1000) id CC3B51601B9; Tue, 25 Jun 2024 15:12:10 +0200 (CEST) From: Anton Khirnov To: FFmpeg development discussions and patches In-Reply-To: References: <20240530225757.GG2821752@pb2> <20240530232251.3538-1-jamrial@gmail.com> <171931112129.21847.16787893012767512029@lain.khirnov.net> Mail-Followup-To: FFmpeg development discussions and patches Date: Tue, 25 Jun 2024 15:12:10 +0200 Message-ID: <171932113080.21847.7300485697794388957@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-06-25 14:38:58) > On 6/25/2024 7:25 AM, Anton Khirnov wrote: > > 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. > > Yeah, for some reason i missed a "* !!ds->apply_cropping" next to the > IFILTER_FLAG_CROP above. With it container cropping is applied depending > on the value of apply_cropping. > > And how can i work around the ffmpeg option shadowing the avcodec one of > the same name? Using a different name for container cropping option > exclusively in ffmpeg is not really nice for the user. They either care > about cropping no matter the source, or no cropping. I expect plenty of broken files from various sources where the user will want to selectively ignore either codec or container cropping. So we could make this an enum option, with values none/all/codec/container, mapping to 0/1/2/3 respectively. That should keep compatibility with current syntax. -- 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".