From patchwork Fri Jun 8 09:01:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Borsboom X-Patchwork-Id: 9321 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:11c:0:0:0:0:0 with SMTP id c28-v6csp601306jad; Fri, 8 Jun 2018 02:01:40 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIi7efmVPolKQ+DMmOLNxtz3yOgc9Uq12hEqsXS+7A/60QbU663VQrwi+Jz8DzTEZzAu10B X-Received: by 2002:a1c:4056:: with SMTP id n83-v6mr978859wma.6.1528448500254; Fri, 08 Jun 2018 02:01:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528448500; cv=none; d=google.com; s=arc-20160816; b=fWrMmO8R1RomvXZ/AiKhZ2N7NOlvauVpds0jjq63V/Q2z25GSe63uOW0xo4J9DHRhr 7UoDIyQ6IGuPrPQRA0i1pou7HadY/jiMHKgL437L1OvBpliCCv18T1PG5hJMJ4GlVk1A n+1n+M8bz4GaKlf2Hl4rLfV0Q62RA03VmH5L2MPD9qIFBuoK306UZKSQSilw8PW9RveN mkD1qE/agHBEi6vEKh7zPI3fC/Fo0c2qzZ85D6M152kpO/0GIlMq7NE0A9tIyFMkZs2O lrMHGYQNLSn07M9+TxMZT20m/SjpNrFDbewyouUgz1EIrLMpWFgAhscN3pxgpxZXmyfY tGAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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:from:references:to:dkim-signature :delivered-to:arc-authentication-results; bh=9q/hAlE/EHl9p2cKPTsQg2vIrOlaPQ5si7mofXkc1Zs=; b=g6LWPkgwFbbLzz82FBaHfuG/cbCg+mVa231G6x2dxubqkscyuvPVbF975ltPzgfymj qcBb9KkTkWMMEhGIaE8zCjt0S2lc00TOT+KCho3eE1AlqGD0y9RPKaA6UFblsIoBAu3V 42aRBdsoHZTTE8WQ4ER6BGMgojzv2+ZURNBHdb5gh7F6P8QrrSwAcBjX7Lz3rdsymhbY PVp1v+mSO6ABNBhQf65fCdTonUXGRnOakM9vKrkwZgklDJZXin42/JvKOuhJ0BzRxk05 8lQtSykdRRZJ6aXu3CYq0H8j4qyv6MNy54tqS2AlNzFMZoEK5hUUxpzKdPrrxJ13dKD6 q2zw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@carpalis.nl header.s=default header.b="ib0Qkq/A"; 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 k130-v6si722717wmf.178.2018.06.08.02.01.39; Fri, 08 Jun 2018 02:01: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=@carpalis.nl header.s=default header.b="ib0Qkq/A"; 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 48C5268A624; Fri, 8 Jun 2018 12:00:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from kyoto.xs4all.nl (kyoto.xs4all.nl [83.161.153.34]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1CD3668A61E for ; Fri, 8 Jun 2018 12:00:39 +0300 (EEST) Received: from [10.1.50.39] ([87.215.30.74]) (authenticated bits=0) by kyoto.xs4all.nl (8.14.7/8.14.7) with ESMTP id w5891PYi005449 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 8 Jun 2018 11:01:26 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=carpalis.nl; s=default; t=1528448486; bh=Pc7LsEOGLclaCaPjTj7Zker1Zv3FHKB5nWG0ymxe8Wg=; h=To:References:Subject:From:Date:In-Reply-To; b=ib0Qkq/ALtX7mX7I3jRtx9nuwdLwbPDD2AsqjAnFPS8PnGUEBFLOs4REl3hAtRgGn pvz1vXFTD6N97TEaQTr6QCQppn5wAtkfK6Zyw8pRxHXjXbl8zjBqBLTO8GoLKMlxnt NZheMfKf2/6RoPOvv5CVS+feez0qdmpWYdhgfqxOdsudTvhkqVOuqaISH1nmr6dwss 1uSM298hLociBoSrT5vQp7DDrhr5wjBDCJWJIW/6Rkmcb+ixmXjkW5aEww/F0gj5oI zzyU5kmpklhsfjtUWiuwhvGZry1cTTNsaeERT9HG2HDeQAU69DVeMlQqx2BrdHZ99v ILUPk9/jndYMw== To: ffmpeg-devel@ffmpeg.org References: <6908e49b-4603-1be5-2cf6-d543d65fd166@carpalis.nl> From: Jerome Borsboom Message-ID: <25cd9f06-0c77-f5e3-e475-86cbe7534e64@carpalis.nl> Date: Fri, 8 Jun 2018 11:01:26 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <6908e49b-4603-1be5-2cf6-d543d65fd166@carpalis.nl> Content-Language: nl Subject: Re: [FFmpeg-devel] [PATCH 2/4 v2] avcodec/vc1: add Simple and Main profile to vc1_put_signed_blocks_clamped 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" Simple and Main Profile also need unsigned put_pixels_clamped. Add an argument to choose between signed and unsigned put_pixels and change function name to vc1_put_blocks_clamped. Signed-off-by: Jerome Borsboom --- libavcodec/vc1_block.c | 58 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/libavcodec/vc1_block.c b/libavcodec/vc1_block.c index caf1596812..1dc8c6422d 100644 --- a/libavcodec/vc1_block.c +++ b/libavcodec/vc1_block.c @@ -66,7 +66,7 @@ static inline void init_block_index(VC1Context *v) /** @} */ //Bitplane group -static void vc1_put_signed_blocks_clamped(VC1Context *v) +static void vc1_put_blocks_clamped(VC1Context *v, int put_signed) { MpegEncContext *s = &v->s; uint8_t *dest; @@ -85,20 +85,30 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v) if (i > 3 ? v->mb_type[0][s->block_index[i] - s->block_wrap[i] - 1] : v->mb_type[0][s->block_index[i] - 2 * s->block_wrap[i] - 2]) { dest = s->dest[0] + ((i & 2) - 4) * 4 * s->linesize + ((i & 1) - 2) * 8; - s->idsp.put_signed_pixels_clamped(v->block[v->topleft_blk_idx][i], - i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize - 8 : dest, - i > 3 ? s->uvlinesize : s->linesize); + if (put_signed) + s->idsp.put_signed_pixels_clamped(v->block[v->topleft_blk_idx][i], + i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize - 8 : dest, + i > 3 ? s->uvlinesize : s->linesize); + else + s->idsp.put_pixels_clamped(v->block[v->topleft_blk_idx][i], + i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize - 8 : dest, + i > 3 ? s->uvlinesize : s->linesize); } } } - if (s->mb_x == s->mb_width - 1) { + if (s->mb_x == v->end_mb_x - 1) { for (i = 0; i < block_count; i++) { if (i > 3 ? v->mb_type[0][s->block_index[i] - s->block_wrap[i]] : v->mb_type[0][s->block_index[i] - 2 * s->block_wrap[i]]) { dest = s->dest[0] + ((i & 2) - 4) * 4 * s->linesize + (i & 1) * 8; - s->idsp.put_signed_pixels_clamped(v->block[v->top_blk_idx][i], - i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize : dest, - i > 3 ? s->uvlinesize : s->linesize); + if (put_signed) + s->idsp.put_signed_pixels_clamped(v->block[v->top_blk_idx][i], + i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize : dest, + i > 3 ? s->uvlinesize : s->linesize); + else + s->idsp.put_pixels_clamped(v->block[v->top_blk_idx][i], + i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize : dest, + i > 3 ? s->uvlinesize : s->linesize); } } } @@ -114,13 +124,18 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v) dest = s->dest[0] + ((i & 2) >> 1) * s->linesize + ((i & 1) - 2) * 8; else dest = s->dest[0] + (i & 2) * 4 * s->linesize + ((i & 1) - 2) * 8; - s->idsp.put_signed_pixels_clamped(v->block[v->left_blk_idx][i], - i > 3 ? s->dest[i - 3] - 8 : dest, - i > 3 ? s->uvlinesize : s->linesize << fieldtx); + if (put_signed) + s->idsp.put_signed_pixels_clamped(v->block[v->left_blk_idx][i], + i > 3 ? s->dest[i - 3] - 8 : dest, + i > 3 ? s->uvlinesize : s->linesize << fieldtx); + else + s->idsp.put_pixels_clamped(v->block[v->left_blk_idx][i], + i > 3 ? s->dest[i - 3] - 8 : dest, + i > 3 ? s->uvlinesize : s->linesize << fieldtx); } } } - if (s->mb_x == s->mb_width - 1) { + if (s->mb_x == v->end_mb_x - 1) { if (v->fcm == ILACE_FRAME) fieldtx = v->fieldtx_plane[s->mb_y * s->mb_stride + s->mb_x]; for (i = 0; i < block_count; i++) { @@ -129,9 +144,14 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v) dest = s->dest[0] + ((i & 2) >> 1) * s->linesize + (i & 1) * 8; else dest = s->dest[0] + (i & 2) * 4 * s->linesize + (i & 1) * 8; - s->idsp.put_signed_pixels_clamped(v->block[v->cur_blk_idx][i], - i > 3 ? s->dest[i - 3] : dest, - i > 3 ? s->uvlinesize : s->linesize << fieldtx); + if (put_signed) + s->idsp.put_signed_pixels_clamped(v->block[v->cur_blk_idx][i], + i > 3 ? s->dest[i - 3] : dest, + i > 3 ? s->uvlinesize : s->linesize << fieldtx); + else + s->idsp.put_pixels_clamped(v->block[v->cur_blk_idx][i], + i > 3 ? s->dest[i - 3] : dest, + i > 3 ? s->uvlinesize : s->linesize << fieldtx); } } } @@ -1469,7 +1489,7 @@ static int vc1_decode_p_mb(VC1Context *v) end: if (v->overlap && v->pq >= 9) ff_vc1_p_overlap_filter(v); - vc1_put_signed_blocks_clamped(v); + vc1_put_blocks_clamped(v, 1); v->cbp[s->mb_x] = block_cbp; v->ttblk[s->mb_x] = block_tt; @@ -1680,7 +1700,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) } if (v->overlap && v->pq >= 9) ff_vc1_p_overlap_filter(v); - vc1_put_signed_blocks_clamped(v); + vc1_put_blocks_clamped(v, 1); v->cbp[s->mb_x] = block_cbp; v->ttblk[s->mb_x] = block_tt; @@ -1800,7 +1820,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) } if (v->overlap && v->pq >= 9) ff_vc1_p_overlap_filter(v); - vc1_put_signed_blocks_clamped(v); + vc1_put_blocks_clamped(v, 1); v->cbp[s->mb_x] = block_cbp; v->ttblk[s->mb_x] = block_tt; @@ -2727,7 +2747,7 @@ static void vc1_decode_i_blocks_adv(VC1Context *v) if (v->overlap && v->condover != CONDOVER_NONE) ff_vc1_i_overlap_filter(v); - vc1_put_signed_blocks_clamped(v); + vc1_put_blocks_clamped(v, 1); if (v->s.loop_filter) ff_vc1_i_loop_filter(v);