From patchwork Sat Oct 21 23:41:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 5645 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp5246497jah; Sat, 21 Oct 2017 16:42:31 -0700 (PDT) X-Google-Smtp-Source: ABhQp+TO67xG83CX56UyP/K4L+MAeUiKnMm9P704R9BFCK8Fhsz5Q21SxcIhQ+getC/HSd7p1bqJ X-Received: by 10.28.107.17 with SMTP id g17mr2328150wmc.58.1508629351843; Sat, 21 Oct 2017 16:42:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508629351; cv=none; d=google.com; s=arc-20160816; b=mGeAdV0jMAfyM3xo+SmFvEP0tjdHH0EBlGo1Wh2GYMVVleti9xGp+RmUCx413lKJFN cNKT0MrYgUCIDIF5HcAbRwHu4QJvQiVVHW9L4VYKalAe1nVYbYiJOUCiUvNMX0lQcAQl EH6tf9lcGXbiPb92CnEzaKmf5Gb0Ua1A3PpdUQ9eSJIUYl0SzVWn+SDLBV1ky/uxR34m 5NUoBxQVhmJA7JYCT1CrB9EYFm5v8VtWLlwgNuKFcfld/2IG7oceBU07CjS6YkX67bG1 hvAx3vsCcO5kiC/EU5uCs+XEvFBSwxEGW2q55NUmpCNsu+YYGwCLtIt7mJES85oeC9aS gGrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to:arc-authentication-results; bh=kE/ZDGRAmF5SC0S8wNcDt4ZysA7Y5F2j0UOijEsXKyQ=; b=NUTt63foFUZHnS6lRnTw7rhdZdyKXgZSVnYp6tinQfbqAxJMWIfPYpg4Qv9+ANEpJU BEFHpHjfyeuu969wnzICziDqj56PiZymw4DmhDPOdzywybCynU3itYo8Wi6Zc6zNS1hM DdgQG2wDmnGVvfrm1qLxD0tKEp1YU9VtvGUXDYVratwDufoyro+FoLfY+f1v4z9BzN94 w5/J7S2ctmRUZGxl4NXug3qV0zy5juM+t9uf/Df4gvw6jlb3uoAMW4y0EWtNoj2kU2+M 9VF+jNSSxvjCzbs7zuBfLOqo38KIe+yyWF0jwmJFgWG+9qJPiHCf60W2jveZLVQqmYtJ tMBQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id z202si1429695wmd.61.2017.10.21.16.42.31; Sat, 21 Oct 2017 16:42:31 -0700 (PDT) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E6240689E6E; Sun, 22 Oct 2017 02:42:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vie01a-qmta-pe02-3.mx.upcmail.net (vie01a-qmta-pe02-3.mx.upcmail.net [62.179.121.183]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6FFC4689E34 for ; Sun, 22 Oct 2017 02:42:08 +0300 (EEST) Received: from [172.31.218.52] (helo=vie01a-dmta-pe08-1.mx.upcmail.net) by vie01a-pqmta-pe02.mx.upcmail.net with esmtp (Exim 4.88) (envelope-from ) id 1e63PC-0000G5-Ow for ffmpeg-devel@ffmpeg.org; Sun, 22 Oct 2017 01:42:14 +0200 Received: from [172.31.216.43] (helo=vie01a-pemc-psmtp-pe01) by vie01a-dmta-pe08.mx.upcmail.net with esmtp (Exim 4.88) (envelope-from ) id 1e63P7-0006iE-1p for ffmpeg-devel@ffmpeg.org; Sun, 22 Oct 2017 01:42:09 +0200 Received: from localhost ([213.47.41.20]) by vie01a-pemc-psmtp-pe01 with SMTP @ mailcloud.upcmail.net id QPhz1w01Y0S5wYM01Pi0dC; Sun, 22 Oct 2017 01:42:01 +0200 X-SourceIP: 213.47.41.20 From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 22 Oct 2017 01:41:57 +0200 Message-Id: <20171021234158.19405-2-michael@niedermayer.cc> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171021234158.19405-1-michael@niedermayer.cc> References: <20171021234158.19405-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 2/3] ffmpeg: add -bitexact flag to simplify enabling bitexact mode in (de)muxer and (de/en)coder 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Michael Niedermayer --- fftools/ffmpeg.h | 1 + fftools/ffmpeg_opt.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index 888f77223a..cb912d95e4 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -161,6 +161,7 @@ typedef struct OptionsContext { float mux_preload; float mux_max_delay; int shortest; + int bitexact; int video_disable; int audio_disable; diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 500920326b..a6af1c6622 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -786,6 +786,9 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic) exit_program(1); } + if (o->bitexact) + ist->dec_ctx->flags |= AV_CODEC_FLAG_BITEXACT; + switch (par->codec_type) { case AVMEDIA_TYPE_VIDEO: if(!ist->dec) @@ -1049,6 +1052,8 @@ static int open_input_file(OptionsContext *o, const char *filename) av_format_set_data_codec(ic, find_codec_or_die(data_codec_name, AVMEDIA_TYPE_DATA, 0)); ic->flags |= AVFMT_FLAG_NONBLOCK; + if (o->bitexact) + ic->flags |= AVFMT_FLAG_BITEXACT; ic->interrupt_callback = int_cb; if (!av_dict_get(o->g->format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE)) { @@ -1370,6 +1375,10 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e ost->encoder_opts = filter_codec_opts(o->g->codec_opts, AV_CODEC_ID_NONE, oc, st, NULL); } + + if (o->bitexact) + ost->enc_ctx->flags |= AV_CODEC_FLAG_BITEXACT; + MATCH_PER_STREAM_OPT(time_bases, str, time_base, oc, st); if (time_base) { AVRational q; @@ -2148,6 +2157,10 @@ static int open_output_file(OptionsContext *o, const char *filename) const AVOption *o = av_opt_find(oc, "fflags", NULL, 0, 0); av_opt_eval_flags(oc, o, e->value, &format_flags); } + if (o->bitexact) { + format_flags |= AVFMT_FLAG_BITEXACT; + oc->flags |= AVFMT_FLAG_BITEXACT; + } /* create streams for all unlabeled output pads */ for (i = 0; i < nb_filtergraphs; i++) { @@ -3471,6 +3484,9 @@ const OptionDef options[] = { { "shortest", OPT_BOOL | OPT_EXPERT | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(shortest) }, "finish encoding within shortest input" }, + { "bitexact", OPT_BOOL | OPT_EXPERT | OPT_OFFSET | + OPT_OUTPUT | OPT_INPUT, { .off = OFFSET(bitexact) }, + "bitexact mode" }, { "apad", OPT_STRING | HAS_ARG | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(apad) }, "audio pad", "" },