From patchwork Fri Aug 18 17:45:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: bananaman255@gmail.com X-Patchwork-Id: 4745 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.46.211 with SMTP id u202csp1039085vsu; Fri, 18 Aug 2017 10:53:43 -0700 (PDT) X-Received: by 10.223.161.133 with SMTP id u5mr6700952wru.191.1503078820270; Fri, 18 Aug 2017 10:53:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1503078820; cv=none; d=google.com; s=arc-20160816; b=GcHbhTEbj0WmUaKzepclLE1DG9g9M4CcUz/hp7+tgXEg7Gz2EsKeSuHp6bj0SJVSti TkKwbLeJI4pVmqWlpNzQtWgImUChFqJvf2D3H/anARYEt2/e3gERt3piVBgZzN5NjZM4 vweSz1JdIOapTOxR7FkFoxLdF5RNBPU0R4JGoBkOZcsiqeGmDkdOHdVV9JCsT7PlHJA2 THxN1HfZ6OSyTRz8HBdVgWoHX6s7owK9Veb72M8LG+QZBGZwETj9e8ERawaJ/OZDzo5Z HDzYcdgwBLbCV00MdsA0yXZLbRofTpJ4REwbDXgIPJ/8kyF0e/j+9jnQT/Wx4+d3QtZv n1XA== 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:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=dJMZqcLASnmulz0oSYowHl+DJ8nyLwQN5OqE8kWiGCk=; b=Pn8KKb2ZUzeSPraqKmqzK4+5wxZS17sRT6gqpB1N71DiqYbHvOmkb4QzKt9U6knuCO ASzyL3XVCVk5lEmhcMsDTqNLn2IQiEfbjXz3E90CyRz5+7mNz4GUr3jwzuGn+/xD09ql 5hABxUITxQucqzb7F6sMPX+X2KcjX7gzMVrGy+zByAEsph2NQjzYxEspJrImdp4Ouc2P I7Npgg6IbltmVBTswqD7aWjEuo3dpaKAmYArLZAzeKA/zPh3UESh2SpopNdR230JJZkx qgFxFmUNa/07o7domppduDcUgLwnqBnFXhkE8/f6ZqH+objfKEK09Rgx/LZZY80hBJgD zIiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=HEuUF9Os; 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 j17si4755150wrc.475.2017.08.18.10.53.39; Fri, 18 Aug 2017 10:53:40 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=HEuUF9Os; 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 BBDD16882B3; Fri, 18 Aug 2017 20:53:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D34FA68040D for ; Fri, 18 Aug 2017 20:53:23 +0300 (EEST) Received: by mail-wr0-f194.google.com with SMTP id 49so7910636wrw.5 for ; Fri, 18 Aug 2017 10:53:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=Ni2/yIfGqp4mId6cU7fMOlihfmLy5R3KAssHRyNK3X4=; b=HEuUF9OsM7f9lwn5Y6rGZhkniWfP5UdY2SBZ0QjgtPKNLpPRerXecrmuVOOKaf5Rg8 vRKNeWjr7fPI5WqFZZxU3UP3XKCghABFkR/XnL5o2uZQZom9sPDW9b24kCX+reQnLRho ih5/0TYmJgSTiKlgPIFASyXarjYemJteQgqJmxYNqy+oZF1RdKmgsi6Mvp/xpltcLdxc /a2LPCc0XTBYymO8ecfPhKtOvXvwI+mUgM4JC3aL3ozwoGH6GOpL4XA3C/N+arF4YmYe rzo7kmqM/8miDJYnvUDnvOFL4i1LNsBass1JBJB1eCJ0nzCJeocE8xRFOlJn7wNZJdIu bAjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Ni2/yIfGqp4mId6cU7fMOlihfmLy5R3KAssHRyNK3X4=; b=g+K2K+/7K/j9ibrjYM9XwX7gB/EJIO/2yY9++hNOTdt3RMoaRdN80JmUt8TArDHzfE 3EyFc9potbMXN7oEkcG7n6SPPn+Uv9HPN7s3XiSUWzI59ofptWHpM3joijSA7y55/gbN RPLn0XXyl7Ab4rg48oUF9xn4HTq4Ax5abbSSrWU//ty6jyXqBAYS+nSuXNgBEL1sRXOk XcUxsMlk8r76hoUrnycr2KTXjwh7nYUD4Q84I6jqNzuUX7IgqofLacivpQrPcc0mF9Ry zadHTE4KuXW4jlWHI/J4m0XJpyhCWz707t8s1Clivc61FltMNsfgpAaPafPeDDHJSos7 +dNg== X-Gm-Message-State: AHYfb5gnBjHbaTXOv/Y6zG3ro6jzMBLTUWx4G+rokM698/5hpGCuFM9m RPI5MoaGMw39Dbem X-Received: by 10.223.167.145 with SMTP id j17mr4295658wrc.46.1503078389063; Fri, 18 Aug 2017 10:46:29 -0700 (PDT) Received: from localhost.localdomain (34.10.134.37.dynamic.jazztel.es. [37.134.10.34]) by smtp.googlemail.com with ESMTPSA id a1sm8822211wra.17.2017.08.18.10.46.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 18 Aug 2017 10:46:28 -0700 (PDT) From: bananaman255@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Fri, 18 Aug 2017 19:45:16 +0200 Message-Id: <20170818174516.3928-1-bananaman255@gmail.com> X-Mailer: git-send-email 2.11.0.windows.3 Subject: [FFmpeg-devel] [PATCH] lavf/bink: fix latest header and add all existing revisions 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 Cc: bnnm MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: bnnm KB2 'i' found in Life is Strange (Xbox 360), rest verified against binkconv.exe Signed-off-by: bnnm --- libavformat/bink.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/libavformat/bink.c b/libavformat/bink.c index 20dba677db..8a05082fcd 100644 --- a/libavformat/bink.c +++ b/libavformat/bink.c @@ -65,10 +65,12 @@ static int probe(AVProbeData *p) int smush = AV_RN32(p->buf) == AV_RN32("SMUS"); do { - if (((b[0] == 'B' && b[1] == 'I' && b[2] == 'K' && - (b[3] == 'b' || b[3] == 'f' || b[3] == 'g' || b[3] == 'h' || b[3] == 'i')) || + if (((b[0] == 'B' && b[1] == 'I' && b[2] == 'K' && /* Bink 1 */ + (b[3] == 'b' || b[3] == 'f' || b[3] == 'g' || b[3] == 'h' || b[3] == 'i' || + b[3] == 'k')) || (b[0] == 'K' && b[1] == 'B' && b[2] == '2' && /* Bink 2 */ - (b[3] == 'a' || b[3] == 'd' || b[3] == 'f' || b[3] == 'g'))) && + (b[3] == 'a' || b[3] == 'd' || b[3] == 'f' || b[3] == 'g' || b[3] == 'h' || + b[3] == 'i' || b[3] == 'j' || b[3] == 'k'))) && AV_RL32(b+8) > 0 && // num_frames AV_RL32(b+20) > 0 && AV_RL32(b+20) <= BINK_MAX_WIDTH && AV_RL32(b+24) > 0 && AV_RL32(b+24) <= BINK_MAX_HEIGHT && @@ -159,7 +161,14 @@ static int read_header(AVFormatContext *s) } if (bink->num_audio_tracks) { - avio_skip(pb, 4 * bink->num_audio_tracks); + uint32_t signature = (vst->codecpar->codec_tag & 0xFFFFFF); + uint8_t revision = ((vst->codecpar->codec_tag >> 24) % 0xFF); + + if ((signature == AV_RL32("BIK") && (revision == 0x6b)) || /* k */ + (signature == AV_RL32("KB2") && (revision == 0x69 || revision == 0x6a || revision == 0x6b))) /* i,j,k */ + avio_skip(pb, 4); /* unknown new field */ + + avio_skip(pb, 4 * bink->num_audio_tracks); /* max decoded size */ for (i = 0; i < bink->num_audio_tracks; i++) { ast = avformat_new_stream(s, NULL);