From patchwork Wed Nov 22 17:44:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "pkv.stream" X-Patchwork-Id: 6279 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp460393jah; Wed, 22 Nov 2017 09:44:21 -0800 (PST) X-Google-Smtp-Source: AGs4zMZOaM93Se1i+8QkdaxQ8fljACuCwlFWk/s3T/UEQlYef5erTTPrOmYw1RsUYyJsa2IMXBYD X-Received: by 10.28.226.214 with SMTP id z205mr5167005wmg.149.1511372661011; Wed, 22 Nov 2017 09:44:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511372660; cv=none; d=google.com; s=arc-20160816; b=Wl05zIPCiKYTEsTVb04RIBZCKPoo3HGcM5xbAGbmmjtdfwxTHleb7oFUILi9w1Id1N Gl7UrbgCUhP/1FlKS67ayfpyaC2Um9h+R4Wq6BOoaAQ43GMnTNOYnw97+zphBq54nrYK Y+vac3xyDsPVQj88jGXH78D0dTlgjnLT4hQ4M58E5Tr9Oc9sTRa/i9OZdyHglRBZVrR1 MwgEZZ5qKFuKKZDMA9Op9/NrXHjv7kJe3qnap9rfGTeFBZ+6xh8ShTM8gwr0lVt6fpag YjyG6unrb97DMaPoXqYb+PVdHazSs/9SbG8Z3OzjlSv2jM2OfPFVZASo4/rQugqkZuMF dtcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-language:in-reply-to:mime-version:user-agent:date :message-id:references:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=TdJjHn+ymF/Io7N+Km/pMhAtazVPYDQQJ830qjDC7yQ=; b=ep5mfxlrAr7dbrbzFmFAXYuTgCVN0aMXtyw5OsmwAG3+OBiY2b2SAf8eaYW1dmsZ5N tgnlrBM1YWGluzrV7KOGMqMTZDASd1Hg0vszbpioZpNE1phmSHAF45S9RKJlGV7qJNAf 7pyHgoZ1TPZun/wgYakjKYfhe9Ob/NCBAmZMcykv+7BmCrNF04eAp6cVVHxYoM/5ysh0 vk2B7FriULG9nGmebfmMUPqFP+bp/mNQAdKNb0PaUnWxp7g70DVtJ0SdgfooQD6R+F1O fFRmz0yHQsrnzBzAAUubmh7MlQQ/slt2lQg+xHtXhn0YE0USCRH6ncGQjPztWKhokM2Q 1qkQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=c/BD3Iwz; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j32si13823660wrj.390.2017.11.22.09.44.20; Wed, 22 Nov 2017 09:44:20 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=c/BD3Iwz; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 922BA68A1D7; Wed, 22 Nov 2017 19:44:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f46.google.com (mail-wm0-f46.google.com [74.125.82.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 099F268A143 for ; Wed, 22 Nov 2017 19:44:13 +0200 (EET) Received: by mail-wm0-f46.google.com with SMTP id r68so11923023wmr.1 for ; Wed, 22 Nov 2017 09:44:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:references:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=ti01D4Yrx8hK7e3wQeBpcauqz1MNurC7CVf2j1h6L+4=; b=c/BD3Iwzmx5q49tbA60Bc2+H9fDLQILNFQvSeRZi/DkRipoTmcSDDSbgEHSCbG6hbz mOgMX248kbfosJjH48l8wk72vpUopUD8X6ADtZgOZ/us0CJtsbDGE92aZu3f4ZynPWIh E5DTDe04sdPp65Y2IqxfkgLlcc5E+UGNh7PRF52Euq1SG+ZrPPFgOdZPJqAhLibAFxT9 1BQM8kYgVxUsq6IBL7OWtlUT4u6Gv83rgkKOKWwHj+RozJ0jlazemj7GHOiiTaWVvIGW vtuR4Vv4oHE4254kr1+ZJbdqjUTs2w20XfIngjj4k7IrdtMr/eRRJpLinZolp+Ad5Nrb bAFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=ti01D4Yrx8hK7e3wQeBpcauqz1MNurC7CVf2j1h6L+4=; b=SZfXcKUTPxIArfkpwPDG95+LkHiPeK2t/kjWGK3wKeLQCHRcBKBm2QZApek29f1K4b HgChMwIGdR3TpvHqmBxl7pNuOpc15DVT26GPuJu5vNXjJcYkvzAXJ+TVjDnFuTVG+N+R SDS/dN4ChXOrK4KM9NDUH6jNF3mD2zZCE7DP/GKz+zz/wWeMfwacvZob64cF55BmENe4 KsFdWXEdMmms3Zvp/QEAgJ35Ni93/jV3UPIOI6auVvF3nKYTaDF+ZZAwBrYKizMJKdMA LUoMRZXXHZE9uoV2tkt8iyztbph6NzzhK/O2l8dLIY4J6dMaTZ+ocCwUkSKtQrwlnEZU gtsA== X-Gm-Message-State: AJaThX78vyOhTVgyHXOQ+CLQMl4mwQlxhPyX6Cm+AL4e87rIn8w/4l8i pCoHRj1tn/xYgChWp38p7yjRGA== X-Received: by 10.80.145.154 with SMTP id g26mr27511264eda.140.1511372652501; Wed, 22 Nov 2017 09:44:12 -0800 (PST) Received: from [192.168.0.100] ([176.159.7.188]) by smtp.googlemail.com with ESMTPSA id k19sm12523660ede.35.2017.11.22.09.44.11 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Nov 2017 09:44:11 -0800 (PST) From: "pkv.stream" To: ffmpeg-devel@ffmpeg.org References: <20171112160048.GQ6009@nb4> <20171112163827.GT6009@nb4> <19c44254-1279-b685-3f46-0f03b2fa7a07@gmail.com> <20171114121355.GB6009@nb4> <16cfbba9-053d-0958-0042-6487d93301e9@gmail.com> <20171116014847.GT6009@nb4> <148ce8f6-476b-a8b1-a7ae-d44cd2e44316@gmail.com> <20171118202649.GC4903@nb4> <425f2195-fc3d-9325-df02-796dae5289e3@gmail.com> <20171119192842.GB4645@nb4> Message-ID: <2d1fc880-b659-1279-01d3-2bcf7f6be5eb@gmail.com> Date: Wed, 22 Nov 2017 18:44:10 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: Content-Language: fr Subject: Re: [FFmpeg-devel] [DEVEL][PATCH 2/2] ffmpeg: fix ticket 6706 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" sorry wrong patch, discard previous for this one ! From 532b13fb2a174af0b91a0b08984cbdb8d5027392 Mon Sep 17 00:00:00 2001 From: pkviet Date: Sat, 18 Nov 2017 00:26:50 +0100 Subject: [PATCH 2/2] ffmpeg: fix ticket 6706 Fix regression with channel_layout option which is not passed correctly from output streams to filters when the channel layout is not a default one. Signed-off-by: pkviet --- fftools/ffmpeg.h | 3 +++ fftools/ffmpeg_opt.c | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index e0977e1..5c45df4 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -121,6 +121,8 @@ typedef struct OptionsContext { int nb_frame_sizes; SpecifierOpt *frame_pix_fmts; int nb_frame_pix_fmts; + SpecifierOpt *channel_layouts; + int nb_channel_layouts; /* input options */ int64_t input_ts_offset; diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index f66f672..6da53aa 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1818,6 +1818,7 @@ static OutputStream *new_audio_stream(OptionsContext *o, AVFormatContext *oc, in char *sample_fmt = NULL; MATCH_PER_STREAM_OPT(audio_channels, i, audio_enc->channels, oc, st); + MATCH_PER_STREAM_OPT(channel_layouts, ui64, audio_enc->channel_layout, oc, st); MATCH_PER_STREAM_OPT(sample_fmts, str, sample_fmt, oc, st); if (sample_fmt && @@ -2542,7 +2543,11 @@ loop_end: (count + 1) * sizeof(*f->sample_rates)); } if (ost->enc_ctx->channels) { - f->channel_layout = av_get_default_channel_layout(ost->enc_ctx->channels); + if (ost->enc_ctx->channel_layout) { + f->channel_layout = ost->enc_ctx->channel_layout; + } else { + f->channel_layout = av_get_default_channel_layout(ost->enc_ctx->channels); + } } else if (ost->enc->channel_layouts) { count = 0; while (ost->enc->channel_layouts[count]) @@ -3119,7 +3124,7 @@ static int opt_channel_layout(void *optctx, const char *opt, const char *arg) char layout_str[32]; char *stream_str; char *ac_str; - int ret, channels, ac_str_size; + int ret, channels, ac_str_size, stream_str_size; uint64_t layout; layout = av_get_channel_layout(arg); @@ -3131,12 +3136,30 @@ static int opt_channel_layout(void *optctx, const char *opt, const char *arg) ret = opt_default_new(o, opt, layout_str); if (ret < 0) return ret; + stream_str = strchr(opt, ':'); + stream_str_size = (stream_str ? strlen(stream_str) : 0); + /* set duplicate 'channel_layout' option in SpecifierOpt, + * enabling access to channel layout through MATCH_PER_STREAM_OPT + */ + ac_str_size = 22 + stream_str_size; + ac_str = av_mallocz(ac_str_size); + if (!ac_str) { + return AVERROR(ENOMEM); + } + av_strlcpy(ac_str, "channel_layout", 22); + if (stream_str) { + av_strlcat(ac_str, stream_str, ac_str_size); + } + ret = parse_duplicate_option(o, ac_str, layout_str, options); + av_free(ac_str); + if (ret < 0) { + return ret; + } /* set 'ac' option based on channel layout */ channels = av_get_channel_layout_nb_channels(layout); snprintf(layout_str, sizeof(layout_str), "%d", channels); - stream_str = strchr(opt, ':'); - ac_str_size = 3 + (stream_str ? strlen(stream_str) : 0); + ac_str_size = 3 + stream_str_size; ac_str = av_mallocz(ac_str_size); if (!ac_str) return AVERROR(ENOMEM); @@ -3689,6 +3712,9 @@ const OptionDef options[] = { { "channel_layout", OPT_AUDIO | HAS_ARG | OPT_EXPERT | OPT_PERFILE | OPT_INPUT | OPT_OUTPUT, { .func_arg = opt_channel_layout }, "set channel layout", "layout" }, + { "channel_layout", OPT_AUDIO | HAS_ARG | OPT_INT64 | OPT_SPEC | + OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(channel_layouts) }, + "set channel layout with uint64", "layout_uint64" }, // allows storage of option in SpecifierOpt { "af", OPT_AUDIO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_audio_filters }, "set audio filters", "filter_graph" }, { "guess_layout_max", OPT_AUDIO | HAS_ARG | OPT_INT | OPT_SPEC | OPT_EXPERT | OPT_INPUT, { .off = OFFSET(guess_layout_max) },