From patchwork Sun Jul 4 21:58:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ffmpegandmahanstreamer@lolcow.email X-Patchwork-Id: 28761 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp3589110ios; Sun, 4 Jul 2021 14:59:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzga9NELT0PAkZaMpldNm6Y7tnjYPJn+qwVmI6OPirAp6Hr89PEAS2h2jjZCA8NDP/4qrCa X-Received: by 2002:a17:906:4fd4:: with SMTP id i20mr10181983ejw.449.1625435942592; Sun, 04 Jul 2021 14:59:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625435942; cv=none; d=google.com; s=arc-20160816; b=uTD0Y7GyNOOLvuxMo8r5fE0AGv8b30PboBrEX/SsK4BT5Du8kLB8ALuBydTFEvcgl2 fpzvW/T+LDSUaeXIbhScWP0a+3PzC40sQnDwIsB2+lXHSA2GDj8jVftJvqmGNzLi4WNC 6Z7YYGdqSjXKpV79T4SWHakNmUTyt/Bo7pqFw16v7mk54vi4zEUFbR6WILgNJy1DHIAL mSH2N85Q/ixJglFzGbB/TGMpC/GDjjeqRiY9EO4bX7WwDNGqsiUAxGzFmyiIJP2rYCkd DFNikTJlfjfEOATSTqQi0/+yck595/aU3lA0lJE/m0W9orPR95lF5tm3n1hxgA7lhezS haRQ== 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:message-id:user-agent:to:from:date:mime-version :dkim-signature:delivered-to; bh=Zs1HvmobBnUHRQoHW67KP2H5j1ZupdX5rCMnq4vOeHU=; b=d2qfw2v+M+/lhS7WzweRtFB5IcODszR7d1WFYuu1tZL3SXtkxASqB19+WpUFRFF6Zb e+bCLKt+lgqikUC+ujYx+9t+YhTDHuananRovYxYXOwsc6CpXdZ9drPY9WmMb/0j42d+ eFTrfcfT+AOg8M49fRACUGfcjrC2qRrmWf9DkrtrdZc1MIXw3iWdk8QdhA2cQxQJ6Qpy yBLfvw7d3jRv+8NkAl8zvF90MQqtHCLglChFNe3rkjp3Bwh8QndHSK8QfO+zWmJPahaz PFriLlvPGkQT1M7Q6zh8aU50Y6tSqEiUcf2RvrWDzpjI2mpav96SNbvKfl7rumnsQJT2 ScgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@lolcow.email header.s=dkim header.b=mfKY2Dod; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=lolcow.email Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id cf25si10498391ejb.288.2021.07.04.14.59.01; Sun, 04 Jul 2021 14:59:02 -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=@lolcow.email header.s=dkim header.b=mfKY2Dod; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=lolcow.email Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B45CF68A417; Mon, 5 Jul 2021 00:58:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mx.lolcow.email (unknown [178.18.93.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 98931689AA0 for ; Mon, 5 Jul 2021 00:58:51 +0300 (EEST) Received: from vps66647.public.cloudvps.com (localhost [127.0.0.1]) by mx.lolcow.email (Postfix) with ESMTP id AF1D0998CA for ; Sun, 4 Jul 2021 23:58:40 +0200 (CEST) Authentication-Results: vps66647.public.cloudvps.com (amavisd-new); dkim=pass (1024-bit key) reason="pass (just generated, assumed good)" header.d=lolcow.email DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lolcow.email; h= message-id:user-agent:subject:subject:to:from:from:date:date :content-transfer-encoding:content-type:content-type :mime-version; s=dkim; t=1625435919; x=1626299920; bh=7O9J6YupWc QVDLlrl/apERUNzCdhhkMGlnyinAVfC2E=; b=mfKY2DoddB3utbjz2JBBh1DaoJ KzovmHDCiADr5IzyL0bVcBV3iBbp1WVtkxQylRlN2/Y2HMXC3nH6b6sBGLuRlcGP ZtT1VOeEkyLd7RHU6naUFrPkWCv+YYKPNnKJ/675RSuKtWOeSxPNFHR/UlWueOCC XyTkHS6u5BYlUhVmc= X-Virus-Scanned: Debian amavisd-new at vps66647.public.cloudvps.com Received: from mx.lolcow.email ([127.0.0.1]) by vps66647.public.cloudvps.com (vps66647.public.cloudvps.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 7kJWFnTcbIL1 for ; Sun, 4 Jul 2021 23:58:39 +0200 (CEST) Received: from lolcow.email (localhost [127.0.0.1]) by mx.lolcow.email (Postfix) with ESMTPSA id 3256699553 for ; Sun, 4 Jul 2021 23:58:39 +0200 (CEST) MIME-Version: 1.0 Date: Sun, 04 Jul 2021 17:58:38 -0400 From: ffmpegandmahanstreamer@lolcow.email To: ffmpeg-devel@ffmpeg.org User-Agent: Roundcube Webmail Message-ID: <2be15aea25f9ee8eb40285a77fa56014@lolcow.email> X-Sender: ffmpegandmahanstreamer@lolcow.email Subject: [FFmpeg-devel] [PATCH][libavcodec] Duckduckgo Truemotion 1 - some code cleanup and preparation for addition of sprite support X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: QvuOt+J8nN4I These are some cosmetic changes and also priming the decoder for sprite support (which i plan on adding). This patch was mainly for me to get used to the git email patch flow, if anything. Of course the decoder still works as it was before (i tested it). --- libavcodec/truemotion1.c | 41 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 24 deletions(-) #include @@ -360,8 +360,12 @@ static int truemotion1_decode_header(TrueMotion1Context *s) s->flags = FLAG_KEYFRAME; if (s->flags & FLAG_SPRITE) { + // https://wiki.multimedia.cx/index.php/Duck_TrueMotion_1 + header.xoffset = AV_RL16(&header_buffer[13]); + header.yoffset = AV_RL16(&header_buffer[15]); + header.width = AV_RL16(&header_buffer[17]); + header.height = AV_RL16(&header_buffer[19]); avpriv_request_sample(s->avctx, "Frame with sprite"); - /* FIXME header.width, height, xoffset and yoffset aren't initialized */ return AVERROR_PATCHWELCOME; } else { s->w = header.xsize; @@ -660,20 +664,15 @@ static void truemotion1_decode_16bit(TrueMotion1Context *s) case 0: /* if macroblock width is 2, apply C-Y-C-Y; else * apply C-Y-Y */ + APPLY_C_PREDICTOR(); + APPLY_Y_PREDICTOR(); + OUTPUT_PIXEL_PAIR(); if (s->block_width == 2) { APPLY_C_PREDICTOR(); - APPLY_Y_PREDICTOR(); - OUTPUT_PIXEL_PAIR(); - APPLY_C_PREDICTOR(); - APPLY_Y_PREDICTOR(); - OUTPUT_PIXEL_PAIR(); - } else { - APPLY_C_PREDICTOR(); - APPLY_Y_PREDICTOR(); - OUTPUT_PIXEL_PAIR(); - APPLY_Y_PREDICTOR(); OUTPUT_PIXEL_PAIR(); } + APPLY_Y_PREDICTOR(); + OUTPUT_PIXEL_PAIR(); break; case 1: @@ -786,20 +785,14 @@ static void truemotion1_decode_24bit(TrueMotion1Context *s) case 0: /* if macroblock width is 2, apply C-Y-C-Y; else * apply C-Y-Y */ + APPLY_C_PREDICTOR_24(); + APPLY_Y_PREDICTOR_24(); + OUTPUT_PIXEL_PAIR(); if (s->block_width == 2) { APPLY_C_PREDICTOR_24(); - APPLY_Y_PREDICTOR_24(); - OUTPUT_PIXEL_PAIR(); - APPLY_C_PREDICTOR_24(); - APPLY_Y_PREDICTOR_24(); - OUTPUT_PIXEL_PAIR(); - } else { - APPLY_C_PREDICTOR_24(); - APPLY_Y_PREDICTOR_24(); - OUTPUT_PIXEL_PAIR(); - APPLY_Y_PREDICTOR_24(); - OUTPUT_PIXEL_PAIR(); } + APPLY_Y_PREDICTOR_24(); + OUTPUT_PIXEL_PAIR(); break; case 1: diff --git a/libavcodec/truemotion1.c b/libavcodec/truemotion1.c index 32d8fb4005..80946a405f 100644 --- a/libavcodec/truemotion1.c +++ b/libavcodec/truemotion1.c @@ -23,10 +23,10 @@ * @file * Duck TrueMotion v1 Video Decoder by * Alex Beregszaszi and - * Mike Melanson (melanson@pcisys.net) + * Mike Melanson (mike@multimedia.cx) * * The TrueMotion v1 decoder presently only decodes 16-bit TM1 data and - * outputs RGB555 (or RGB565) data. 24-bit TM1 data is not supported yet. + * outputs RGB555 (or RGB565) data. */