From patchwork Sun Feb 28 03:01:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26022 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id C9C65448619 for ; Sun, 28 Feb 2021 05:01:43 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9ED5768AB32; Sun, 28 Feb 2021 05:01:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4CFE668AB25 for ; Sun, 28 Feb 2021 05:01:37 +0200 (EET) Received: by mail-wm1-f51.google.com with SMTP id e23so386951wmh.3 for ; Sat, 27 Feb 2021 19:01:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=61dCKBXUn1pyQaMvdcyQNm8sIzuhYn+8ha4Hqzzafgo=; b=lmRuHvjpMG75avD4esTZsXQct76Exbd1oTVZcaDWPkrZOquD/aVucmzt/A55wkEwrU 4pVT4WVIxn/yUowv/o6Eb+3Tc4J10WqOYyHOG2NzBefv2O8zmAKrzKQhmtmLLo5uxXLO R3VjrHkDiGjSTn43bylbOTnZJGT15nedNE+31kc7rM9ft4IGpJK+A3Wi51kYjrB6RhIb RMHYGAoPE1n13QeVZXr6uW+lwgNxo1gm6rOYD7+HslzTQJnFEka2dHrl4FsqPU/YAJqx dLGMzfevFUEw3a/R75c5zQ+Y3XVmsz9zyefEfnqr0hmBPcY16oDHvZvxwx2ahp9mL+mb eYLQ== 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:mime-version :content-transfer-encoding; bh=61dCKBXUn1pyQaMvdcyQNm8sIzuhYn+8ha4Hqzzafgo=; b=jVZ0AqZnrxBB0NsUkNtMJ8EJD6rzXwH8GqWizHvw2NOWgS4E3aXaskmJyCvQcx0ifM b3S2lRhF3+Ac/6b+uZ9h1Iv/4WfGkF5FMoOnZDbgy136BrT02ss+b63fV3uFdXIQqY3N dEZQekGBWc4n52z8y9rF9PscMmKMNTIs8msgRQVAv4bnYMDd/pC0pi4ySl2rnCRtuCkw 8ogANkxh/9ROmy6rFEqyK/Wy3XjvTgOkAK7NhTf0X1uuTWisrAbJfe594250RtKp2OYI SOno/p9oyjYD60o2x4JFS0KmeZFhRFO5wRLWGF1mY3YUGRFF/aXDNHgc+Sv3AhC8033A odTQ== X-Gm-Message-State: AOAM5331uAw+384w5nckpuSuFrpRd37BT6rhmTVN1VoMjVAI9nr2GpKe ojQGeb4dMtmtV0U8qrSmqX+wsvpZJzM= X-Google-Smtp-Source: ABdhPJwix390p/D1TlU5faUAd/EsAOsLx31Rjm/f5I2QKTxkg8zmYXcMUjPosdqHNY+1HbZJRdElug== X-Received: by 2002:a05:600c:4ba2:: with SMTP id e34mr9417245wmp.121.1614481296555; Sat, 27 Feb 2021 19:01:36 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id j14sm9815220wrw.69.2021.02.27.19.01.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Feb 2021 19:01:36 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Feb 2021 04:01:21 +0100 Message-Id: <20210228030122.3101246-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/wtvdec: Fix reading OLE dates on BE 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The WTV demuxer's oledata_to_iso8601 reads a value via avio_rl64 and reinterprets it as a double via av_int2double. This does not work on big endian systems. So swap it to native endianness before av_int2double. law-and-order-partial.wtv from the FATE-suite exhibited the problem. Thanks-to: Andriy Gelman Signed-off-by: Andreas Rheinhardt --- libavformat/wtvdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/wtvdec.c b/libavformat/wtvdec.c index 7def9d2348..bb84e5dc9f 100644 --- a/libavformat/wtvdec.c +++ b/libavformat/wtvdec.c @@ -418,7 +418,7 @@ static int crazytime_to_iso8601(char *buf, int buf_size, int64_t value) */ static int oledate_to_iso8601(char *buf, int buf_size, int64_t value) { - time_t t = (av_int2double(value) - 25569.0) * 86400; + time_t t = (av_int2double(av_le2ne64(value)) - 25569.0) * 86400; struct tm tmbuf; struct tm *tm= gmtime_r(&t, &tmbuf); if (!tm)