From patchwork Thu Jul 19 09:48:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 9756 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:104:0:0:0:0:0 with SMTP id c4-v6csp1506152jad; Thu, 19 Jul 2018 02:56:42 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcL3ARjRoJrFwWs1MSfGv5ha+H347qmxMub2ziVGZL/ZGpdXtyd31a4WvwueFAZ0unBvdDl X-Received: by 2002:adf:eb4c:: with SMTP id u12-v6mr4482317wrn.174.1531994202747; Thu, 19 Jul 2018 02:56:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531994202; cv=none; d=google.com; s=arc-20160816; b=FbO8NPSwWWWcuywUdzvrqVYc8/7pT4vOZWTEtOh1oAn7ajMnWwa5oAn+wnUgA8L31t DLhWZmsfAIN0sFFhdqz7XEwwrW7vq0iM86SQ7Aw0w7BOn2hcDhthNNQ5aocKVW//Rm1W v3kFmvGffcpnoazAwL6Sw05fKvEBonBoq/BEv7iQcdVk7g+O6z28Vv0D8A8pMRgOv2vF VvMbQIY2vFwyS3FgQNO9wwkZS870yOTITzvWwYdlc1x565TZyn8sXvorCUk1PtfqBJNY AlzG8MQKHwi5W59BiCV1m3zPOvz8FKoEFomLmtCKcs98CkB4QO6O+LYELgx1Usqu6LPk eRkg== 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:dkim-signature:delivered-to:arc-authentication-results; bh=ecqCrwxfLDfVzVYWNt3JnrjJorolywz8RFqNe5TAjEM=; b=hvCSnW8ljBd40sr2qSHVWqCV7AH6xoaA99PGwGAPcsaDuJM3jXcKIv3hyA1WL3ehVq IQ0umtiowwzr1ymaPF1FoBdpofltly5SUkMg9bqP2JN6AIjvGginN9Ai3nZhncsEDcXd 9AT0IKcI949b+yOd0kAC4XNGZKb3CIgMa1c6Fr8Niy/7CIIWtxbhpQ9c3yv9vn5cjzpd xmin++kRqX5iqGBelRAE7UERG6g4TJhaycdY6DedKn/szxf9Pg5NTIOKd5rY3TV4h59N d0B2rlVvNGVQQyYqeMiQzxOqU3PJeKxDSpcIwOvp/VXyIqKFgJ2E3rIIExM795sir5fS 6E5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=VyeZ3NZH; 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=QUARANTINE 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 l28-v6si5124033wrb.290.2018.07.19.02.56.42; Thu, 19 Jul 2018 02:56:42 -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=VyeZ3NZH; 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=QUARANTINE 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 8EF27689DD6; Thu, 19 Jul 2018 12:56:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B081C689BB8 for ; Thu, 19 Jul 2018 12:56:22 +0300 (EEST) Received: by mail-wr1-f65.google.com with SMTP id h10-v6so7419551wre.6 for ; Thu, 19 Jul 2018 02:56:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=zTrk7QFef6zpGyp5BUSzsanNoekEsGcDezVlLblV1UQ=; b=VyeZ3NZHDDABvV3UC7H1IHxM+iE4d8TCtDylRfoZQ3W8XClVpdEeN7gLze8hwR47W7 09zXTIpnHgsgToEHfbX+/iNBnGVjZAjyN380J86u3OGy80hkacZ0+oSzqjFG5e7PPgY9 iekztCSuAd0TJRh+NEpVOkr6E6imizZ/eqWgf7SBiyXN1ZrWm+LRgLRcRO79N8BX9w8B TxjifyffNyGdGMsmzLNT6h6appPP4FOFb9BDrpoFVyxsgiEx5uJV5MfevgbbMf4Kcali f0HbtOLH5ABxfNf2m0ZoWns9E+ZCaSCv2v2RIGwpKd7e1MgNk7IPwcHERGtiIHL26XAd Kt6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=zTrk7QFef6zpGyp5BUSzsanNoekEsGcDezVlLblV1UQ=; b=RhpsCu+gaUPOIMDgcTRXtAxcYW7P5hQJ2MOE2HnItOXp6uxhttqrHWtB17L6rJxwep T28541zkYYVxEmJe4vgcxTMst4DcuVYNmGpfFd4+uIQRCsdXhzN3FIQ6TbOOy+PHqFys 6OpL8FDIXsJydxtN44PcjtF16q1euAkiFQIsNQI6VfijFsLQzO+9OvkvH3vht59cZ8G5 VjvRQV4CVhw0jlRJQ65qK3u48wRKft5KFyusjseOxYYsVcWIpS46oWz1UHW+SulnSKLE rgLcC37R9q0hAsDxs+a76heNhRqafe38a/JqqcK03zzfexFgKTNcjR342ZUvtw0U44EC Gxew== X-Gm-Message-State: AOUpUlHTM/nSFlPo9W/hq8NQ6LhDEt1T43R4xhezgQes0+jTtezSBVDA Fxts4m5U3u9Q+wLRXWb/f/hyHBN/ X-Received: by 2002:a5d:50cd:: with SMTP id f13-v6mr7269368wrt.73.1531993721606; Thu, 19 Jul 2018 02:48:41 -0700 (PDT) Received: from localhost.localdomain ([94.250.174.60]) by smtp.gmail.com with ESMTPSA id d15-v6sm1579893wmb.0.2018.07.19.02.48.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 Jul 2018 02:48:41 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Thu, 19 Jul 2018 11:48:31 +0200 Message-Id: <20180719094831.3206-2-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180719094831.3206-1-onemda@gmail.com> References: <20180719094831.3206-1-onemda@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/bink: add 'k' version support 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: Paul B Mahol --- libavcodec/bink.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/libavcodec/bink.c b/libavcodec/bink.c index c4cf617a8b..b3136b763c 100644 --- a/libavcodec/bink.c +++ b/libavcodec/bink.c @@ -371,11 +371,19 @@ static const uint8_t bink_rlelens[4] = { 4, 8, 12, 32 }; static int read_block_types(AVCodecContext *avctx, GetBitContext *gb, Bundle *b) { + BinkContext * const c = avctx->priv_data; int t, v; int last = 0; const uint8_t *dec_end; CHECK_READ_VAL(gb, b, t); + if (c->version == 'k') { + t ^= 0xBBu; + if (t == 0) { + b->cur_dec = NULL; + return 0; + } + } dec_end = b->cur_dec + t; if (dec_end > b->data_end) { av_log(avctx, AV_LOG_ERROR, "Too many block type values\n"); @@ -994,6 +1002,17 @@ static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, int bw = is_chroma ? (c->avctx->width + 15) >> 4 : (c->avctx->width + 7) >> 3; int bh = is_chroma ? (c->avctx->height + 15) >> 4 : (c->avctx->height + 7) >> 3; int width = c->avctx->width >> is_chroma; + int height = c->avctx->height >> is_chroma; + + if (c->version == 'k' && get_bits1(gb)) { + int fill = get_bits(gb, 8); + + dst = frame->data[plane_idx]; + + for (i = 0; i < height; i++) + memset(dst + i * stride, fill, width); + goto end; + } init_lengths(c, FFMAX(width, 8), bw); for (i = 0; i < BINK_NB_SRC; i++) @@ -1190,6 +1209,8 @@ static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, } } } + +end: if (get_bits_count(gb) & 0x1F) //next plane data starts at 32-bit boundary skip_bits_long(gb, 32 - (get_bits_count(gb) & 0x1F));