From patchwork Mon Dec 4 00:09:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 6531 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp3790218jah; Sun, 3 Dec 2017 16:09:33 -0800 (PST) X-Google-Smtp-Source: AGs4zMYn9urnEM0G0bP3sC71o0aaQfstO8WA1rpsXGAKjhJVkZi39Ecj7nzhYjnKw4OSmVnFE/U0 X-Received: by 10.28.134.130 with SMTP id i124mr4842223wmd.10.1512346173140; Sun, 03 Dec 2017 16:09:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512346173; cv=none; d=google.com; s=arc-20160816; b=hKFk7B4eUMOqilVYJswvH/10yfcUcbc8t6eNtAeXpOeq6YKzoBsYWGOVVG73ALXVhv 334B9Vzb3dn0v8ccX2VgAj2ZB3eb9F9krTgaVk+zLR+2BUX5qEVDrj9YJ3Hwg1ly4Cfk TjBs5zZHmNFEPV7tCTzvII9ORI15U/X9XPcu5MsJ7S7NnEveJEiksWwDDWUlWSKFje6X BBR0YB1lhEVtfNnaPE6MN8kQ4QhXcJ0JIjW3caq3WKFBUF/1L5FTDiva1n6rXZ6tPNe4 vvtaGFRweYD/n66QYxhG/MjAvIGh4yH73hirsKjzXz4OjJvEThJkH5B7X9zD1QxJMVPD 1IfQ== 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:to :message-id:date:from:mime-version:dkim-signature:delivered-to :arc-authentication-results; bh=Tcx5Vtb7WlUHXgjdU1gchcs5tN4FWROyY/7ka+xMka0=; b=xHza0gqxvLL4O6xBGgUvIOTVSvdbSdlXAY9pqRFEeRrP+Ydia7CExVXTiy2Xg0V3Ty apOyuKekogIM4dLJa0iY6zWiqHq9nLxErOA6T8dg9fAeA00lmp01WTdzopVutZXP1hZD RT0/yG08cq+6Abj7ue+nn9WpkrJci37oOHv5qoN2hElO29KGwk+vb8got3TdXI2yfXfY XWmUKUqU1n/2S2+UFg80k4kyNy9FGEvMFwT0V0nZc+CsfPDcfH+x0dqEnQLUg1372E8P ZyzaMQtZlS6RGhm2RO26mncZZ+bxT1YOpEqc0lysIE2Shye2mvZnEb1gL31YIwqc2jy/ +YRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=XN6TPB7c; 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 f136si3963658wmg.5.2017.12.03.16.09.32; Sun, 03 Dec 2017 16:09:33 -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=XN6TPB7c; 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 9308468A39E; Mon, 4 Dec 2017 02:09:26 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-it0-f52.google.com (mail-it0-f52.google.com [209.85.214.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 63DD068A197 for ; Mon, 4 Dec 2017 02:09:19 +0200 (EET) Received: by mail-it0-f52.google.com with SMTP id r6so2620107itr.3 for ; Sun, 03 Dec 2017 16:09:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=XMAB+RAHv8qBVUt9Lkfhj1Ka/jY/mT3eCniKfC5c2gU=; b=XN6TPB7cIi7Y0nottPrxX9FZOLRTf5cPQUm3EAnSvlrTacIKvvG3K5HvNSlNc2xSge YDe6KPyNpMZhdRhE4moHrTDrw9woEvHOGA9oLEN3GKUOV17JWjwtcZkug6h9p7oAKorM +VYZ1MapEQimzM3r2YA23m0X/b8iwkGXqdA2BgnnW2/38aH8PdbvzvP5ExBdbwDpqACe 3XrEr7s3h6xEBWAR5sRgaHlrgQf7nvliUkonS4ttDwSgM1xGb0goNaeUPDaiLmwm7Tbb QQ7iKGIu5tBUWqaliznZMPz3VSb9kgFxd7FvHZXifvEczditT/iTjljnqTfJmlDuTNGt X2eA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=XMAB+RAHv8qBVUt9Lkfhj1Ka/jY/mT3eCniKfC5c2gU=; b=cc01NFNepHxjIqguotxYVF81iegu/FRs8wLkWsjjOTvtt66Iyd9zjKgtelkwIs0DY/ wx7e2/BgIEBaOC1m1vgPKF33mh2wsuXr56jlnqHt3VIOHgbKcrJT7Flit31AT1jA+sLC hMdH9Lxm17OZDKujfqVi+umHQ+puJ+iWxA3Q7sRIBY6dQ4Yv0KPh0An7o5pn2cDuEbYW +Mi7igHzbmUSHzudr2Jt70OnxeHdPltiLxqVqL85H98IatcPIs2PUlKkv1tc9zBKzmG8 0eoBpeLNMM6NYBPQKu2mT6plG0DkZeoNotICdA/+2wsAOLzAc+Go6f8khjR9m6YFZzWC HmDA== X-Gm-Message-State: AKGB3mLqsG+PG3QAjNvKiYAqWEq3lQrd+BOnj7Rba1Qx9muA/XTl7rBj yEBxMZJ5IEpeIpSwye7uZAyUfX9aSoqZ9KjOlrs= X-Received: by 10.36.110.22 with SMTP id w22mr2507978itc.113.1512346162398; Sun, 03 Dec 2017 16:09:22 -0800 (PST) MIME-Version: 1.0 Received: by 10.2.155.66 with HTTP; Sun, 3 Dec 2017 16:09:01 -0800 (PST) From: Carl Eugen Hoyos Date: Mon, 4 Dec 2017 01:09:01 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH]lavc: Allow forcing work-around for x264 cabac 8x8 4:4:4 bug 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" Hi! Attached patch fixes ticket #6717, files without sei can be produced with remuxing and seeking, even if this is a (separate) bug, such files exist in the wild. Please comment, Carl Eugen From c3ce0a75f13663958034a70fb4a982671532d269 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Mon, 4 Dec 2017 01:05:57 +0100 Subject: [PATCH] lavc: Allow forcing work-around for old x264 cabac 8x8 4:4:4 bug. Fixes ticket #6717. --- libavcodec/avcodec.h | 1 + libavcodec/h264_cabac.c | 5 ++++- libavcodec/options_table.h | 1 + libavcodec/version.h | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 5db6a81..bae8812 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2516,6 +2516,7 @@ typedef struct AVCodecContext { */ int workaround_bugs; #define FF_BUG_AUTODETECT 1 ///< autodetection +#define FF_BUG_X264_CAB_8x8_444 2 #define FF_BUG_XVID_ILACE 4 #define FF_BUG_UMP4 8 #define FF_BUG_NO_PADDING 16 diff --git a/libavcodec/h264_cabac.c b/libavcodec/h264_cabac.c index ec5fc74..8b2973a 100644 --- a/libavcodec/h264_cabac.c +++ b/libavcodec/h264_cabac.c @@ -1919,6 +1919,9 @@ int ff_h264_decode_mb_cabac(const H264Context *h, H264SliceContext *sl) int dct8x8_allowed = h->ps.pps->transform_8x8_mode; const int decode_chroma = sps->chroma_format_idc == 1 || sps->chroma_format_idc == 2; const int pixel_shift = h->pixel_shift; + AVCodecContext *avctx = h->avctx; + if (h->x264_build < 151U) + avctx->workaround_bugs |= FF_BUG_X264_CAB_8x8_444; mb_xy = sl->mb_xy = sl->mb_x + sl->mb_y*h->mb_stride; @@ -2347,7 +2350,7 @@ decode_intra_mb: if (CHROMA444(h) && IS_8x8DCT(mb_type)){ int i; uint8_t *nnz_cache = sl->non_zero_count_cache; - if (h->x264_build < 151U) { + if (avctx->workaround_bugs & FF_BUG_X264_CAB_8x8_444) { for (i = 0; i < 2; i++){ if (sl->left_type[LEFT(i)] && !IS_8x8DCT(sl->left_type[LEFT(i)])) { nnz_cache[3+8* 1 + 2*8*i]= diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h index d89f58d..ed35bec 100644 --- a/libavcodec/options_table.h +++ b/libavcodec/options_table.h @@ -112,6 +112,7 @@ static const AVOption avcodec_options[] = { {"bug", "work around not autodetected encoder bugs", OFFSET(workaround_bugs), AV_OPT_TYPE_FLAGS, {.i64 = FF_BUG_AUTODETECT }, INT_MIN, INT_MAX, V|D, "bug"}, {"autodetect", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_BUG_AUTODETECT }, INT_MIN, INT_MAX, V|D, "bug"}, {"xvid_ilace", "Xvid interlacing bug (autodetected if FOURCC == XVIX)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_BUG_XVID_ILACE }, INT_MIN, INT_MAX, V|D, "bug"}, +{"x264_cab_8x8_444", "x264 cabac 8x8 4:4:4 encoding bug (autodetected if possible)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_BUG_X264_CAB_8x8_444 }, INT_MIN, INT_MAX, V|D, "bug"}, {"ump4", "(autodetected if FOURCC == UMP4)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_BUG_UMP4 }, INT_MIN, INT_MAX, V|D, "bug"}, {"no_padding", "padding bug (autodetected)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_BUG_NO_PADDING }, INT_MIN, INT_MAX, V|D, "bug"}, {"amv", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_BUG_AMV }, INT_MIN, INT_MAX, V|D, "bug"}, diff --git a/libavcodec/version.h b/libavcodec/version.h index d67b689..3b5c300 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MINOR 6 -#define LIBAVCODEC_VERSION_MICRO 102 +#define LIBAVCODEC_VERSION_MICRO 103 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ -- 1.7.10.4