From patchwork Mon Feb 8 18:04:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 25514 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 4457444A879 for ; Mon, 8 Feb 2021 20:04:38 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1E943689A15; Mon, 8 Feb 2021 20:04:38 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 155B9687F87 for ; Mon, 8 Feb 2021 20:04:31 +0200 (EET) Received: by mail-ej1-f44.google.com with SMTP id l25so9141831eja.9 for ; Mon, 08 Feb 2021 10:04:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=wPCZsFoL+uBnssyJtaAGkRRxj1MbU6oFJmK7DuLDuVg=; b=Ctq0csNzVwjn2/wF6J/6jjooVn+bJWC7Dns9ZqdsGk1VTcKYtHWConZjQHqx+79PLu fuTVsSyJKG3pxJw2mNqt/URO6q3hucp2r/qdDJHcM7yRK+bSyGS0rhJ5dgNyAsrCeXAS cW2yGsKfYoCQgnQ0ddhgCIsoMItQh07oHiuoxvqr4AlHgTdL1Jq/mINIvJKO+ib9Mt7h XFZudAmyjlWwOmdtLW5K5xZEQo92yuQFPqDjdkaw6mNJ23XC1t0DcHIYEU+BXFCw5Cp1 1mKmodKDUFl0N/Q1Ih08ovF0ckJgdScr0hzNQ0GDWUwDbFt3Ao42p5aDcRc3V7Ujotjz 0bQQ== 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; bh=wPCZsFoL+uBnssyJtaAGkRRxj1MbU6oFJmK7DuLDuVg=; b=UmvqXJSocqbiLiroJHK32H7bRFOrXjSyx2F8c5J/+8vYcmA6Hdw0Uu07CUkIH0ktan JZvz/S+LbYYMrlx1IBWvF6v8LAucyRJSjQ26CTQTBO9d7zyDbnwg/bQwrt+MQEWOli91 yZC2Vzm4RC2KeabhijRZaF54sNiDt+bG4ez4gzkv6rYtZ/nfXWnwehtHBIrnLz37DvH5 W3UnTIpTYh7G+avfwAO1BvvglS+yXDStB648fSnro80ZTPaCsVPiC7m6+IVX/yynTeFK +xWztJphhLCEA5mk1HXrAFqj17lRe9JnyIsbyiFRDJnzL8PalxvVvjQBAYkG8HrEVg1Z Z0zg== X-Gm-Message-State: AOAM533LxKCYiZGPZxJPSZV4R+OgNeMzF/GYRcJwZ/A2u/Y0Yib6XA20 hvDkwr2IgtibzS0FLra43iqJy7BYOjP/7A== X-Google-Smtp-Source: ABdhPJxFP0pWjkNlpfu08KaZxWrI2YejF5ziDk/mm3RlDvw25fJqy9y6Z7z+mk2nG9jo0WOjfflYvQ== X-Received: by 2002:a17:906:158c:: with SMTP id k12mr18402178ejd.119.1612807470643; Mon, 08 Feb 2021 10:04:30 -0800 (PST) Received: from localhost.localdomain ([212.15.167.195]) by smtp.gmail.com with ESMTPSA id bd27sm9247487edb.37.2021.02.08.10.04.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Feb 2021 10:04:30 -0800 (PST) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 Feb 2021 19:04:15 +0100 Message-Id: <20210208180416.14669-1-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/fitsdec: properly initialize header->data_max 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/fitsdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/fitsdec.c b/libavcodec/fitsdec.c index 32a79cdd0d..802aa5b509 100644 --- a/libavcodec/fitsdec.c +++ b/libavcodec/fitsdec.c @@ -63,7 +63,7 @@ static int fill_data_min_max(const uint8_t *ptr8, FITSHeader *header, const uint int i, j; header->data_min = DBL_MAX; - header->data_max = DBL_MIN; + header->data_max = -DBL_MAX; switch (header->bitpix) { #define CASE_N(a, t, rd) \ case a: \ From patchwork Mon Feb 8 18:04:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 25515 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 23ADD44A879 for ; Mon, 8 Feb 2021 20:04:41 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0ABE9689A12; Mon, 8 Feb 2021 20:04:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6683068834D for ; Mon, 8 Feb 2021 20:04:32 +0200 (EET) Received: by mail-ed1-f53.google.com with SMTP id s11so19624812edd.5 for ; Mon, 08 Feb 2021 10:04:32 -0800 (PST) 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=AFDZ3x9dhPcXAQKEd78Ng/23kgNhQa1S9xXywLCE0dM=; b=aPjKACuN5Kw97aAWR3VoOIhJFK+0bKv+yjrRYcRWbU9wB0Yb12PiutmWDpLAWxSjDe RArPno9AYczb4vhqXeLBbXVX4+tfgq71c6QIPomLyyhdNBiKKKX8nJpSTtQsl7VdVCc7 CEwyyXJxJ4XqXHQQIeyWsdDK5ywjGLKR/GOOBDC2dCM1WdZuuI4KX77LdZnheg+yvgD2 bUGh7JN+/+iJY5wfFCyDCG995FKQTzuKoBaXzfZVPOzLLfNs3BGzbtqlxMQcWEUHeujo eb+yjRCUUjLsh7NzfhftDtknNGWbxYtughYy1rFlX7iIA2pt4oADQM2oFO4YAtIkczux cFZQ== 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=AFDZ3x9dhPcXAQKEd78Ng/23kgNhQa1S9xXywLCE0dM=; b=E5luCmai5gWP9g+m7wqx2fFAfk0w7fqHmrKxk1S3T186jHey9DPYNRgcIcNSsa/xpO yhjZ3ijtafTj7zn2BUip2ZGbYFlyaPDwiDrcEXKawFM3S4/QDrLMlnMw5VlI1XOe7kMa Knok3NfPigSoxfLF5LBCepcTtcGf7u53ABtxezPoC7bIcXxBNND6A/UWXlqWZKM0mt4d OZ3fyjcvxUZayAFz/kRES8rCke0dlOgMC0iDFQBL6IL2rMSZ9pptTYjwygOfU4K5yQO6 WtbLnBoAhhJoDOlW/sQGiyFK5yhEWVfP/lDm/2y0EP/gWr/eq0ET+Jf6Z6PkZfyYmi2Y 6wlg== X-Gm-Message-State: AOAM530HQn+0noUwKr+BX5THwfrFiHsreBuRnCIDJCMKx4l9aqp/gu6P kCXacCfd1GxSEanWXA5OyU2dOUT0PtOP/w== X-Google-Smtp-Source: ABdhPJy7MEt6SyGxK394tTJcFH9EX9t04r3jUJwrUYKboob4EUdN1BNGDTdEdTzIOP1aSvt6NjkDGQ== X-Received: by 2002:a05:6402:16dd:: with SMTP id r29mr9540598edx.212.1612807471954; Mon, 08 Feb 2021 10:04:31 -0800 (PST) Received: from localhost.localdomain ([212.15.167.195]) by smtp.gmail.com with ESMTPSA id bd27sm9247487edb.37.2021.02.08.10.04.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Feb 2021 10:04:31 -0800 (PST) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 Feb 2021 19:04:16 +0100 Message-Id: <20210208180416.14669-2-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210208180416.14669-1-onemda@gmail.com> References: <20210208180416.14669-1-onemda@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/2] avformat/fitsenc: write DATAMIN/DATAMAX to encoded output 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" There is no point in doing normalization when such files are decoded. Update fate test with new results. Signed-off-by: Paul B Mahol --- libavformat/fitsenc.c | 39 ++++++++++++++++++++++++++--------- tests/ref/fate/fits-demux | 10 ++++----- tests/ref/fate/fitsdec-gray | 2 +- tests/ref/lavf/gbrap.fits | 2 +- tests/ref/lavf/gbrap16be.fits | 2 +- tests/ref/lavf/gbrp.fits | 2 +- tests/ref/lavf/gbrp16be.fits | 2 +- tests/ref/lavf/gray.fits | 2 +- tests/ref/lavf/gray16be.fits | 4 ++-- 9 files changed, 42 insertions(+), 23 deletions(-) diff --git a/libavformat/fitsenc.c b/libavformat/fitsenc.c index cc3999aa8a..212c769df1 100644 --- a/libavformat/fitsenc.c +++ b/libavformat/fitsenc.c @@ -45,7 +45,8 @@ static int fits_write_header(AVFormatContext *s) * @param lines_written to keep track of lines written so far * @return 0 */ -static int write_keyword_value(AVFormatContext *s, const char *keyword, int value, int *lines_written) +static int write_keyword_value(AVFormatContext *s, const char *fmt, + const char *keyword, void *value, int *lines_written) { int len, ret; uint8_t header[80]; @@ -57,7 +58,12 @@ static int write_keyword_value(AVFormatContext *s, const char *keyword, int valu header[8] = '='; header[9] = ' '; - ret = snprintf(header + 10, 70, "%d", value); + if (!strcmp(fmt, "%d")) { + ret = snprintf(header + 10, 70, fmt, *(int *)value); + } else { + ret = snprintf(header + 10, 70, fmt, *(float *)value); + } + memset(&header[ret + 10], ' ', sizeof(header) - (ret + 10)); avio_write(s->pb, header, sizeof(header)); @@ -72,16 +78,22 @@ static int write_image_header(AVFormatContext *s) FITSContext *fitsctx = s->priv_data; uint8_t buffer[80]; int bitpix, naxis, naxis3 = 1, bzero = 0, rgb = 0, lines_written = 0, lines_left; + int pcount = 0, gcount = 1; + float datamax, datamin; switch (encctx->format) { case AV_PIX_FMT_GRAY8: bitpix = 8; naxis = 2; + datamin = 0; + datamax = 255; break; case AV_PIX_FMT_GRAY16BE: bitpix = 16; naxis = 2; bzero = 32768; + datamin = 0; + datamax = 65535; break; case AV_PIX_FMT_GBRP: case AV_PIX_FMT_GBRAP: @@ -93,6 +105,8 @@ static int write_image_header(AVFormatContext *s) } else { naxis3 = 4; } + datamin = 0; + datamax = 255; break; case AV_PIX_FMT_GBRP16BE: case AV_PIX_FMT_GBRAP16BE: @@ -105,6 +119,8 @@ static int write_image_header(AVFormatContext *s) naxis3 = 4; } bzero = 32768; + datamin = 0; + datamax = 65535; break; default: return AVERROR(EINVAL); @@ -122,28 +138,31 @@ static int write_image_header(AVFormatContext *s) } lines_written++; - write_keyword_value(s, "BITPIX", bitpix, &lines_written); // no of bits per pixel - write_keyword_value(s, "NAXIS", naxis, &lines_written); // no of dimensions of image - write_keyword_value(s, "NAXIS1", encctx->width, &lines_written); // first dimension i.e. width - write_keyword_value(s, "NAXIS2", encctx->height, &lines_written); // second dimension i.e. height + write_keyword_value(s, "%d", "BITPIX", &bitpix, &lines_written); // no of bits per pixel + write_keyword_value(s, "%d", "NAXIS", &naxis, &lines_written); // no of dimensions of image + write_keyword_value(s, "%d", "NAXIS1", &encctx->width, &lines_written); // first dimension i.e. width + write_keyword_value(s, "%d", "NAXIS2", &encctx->height, &lines_written); // second dimension i.e. height if (rgb) - write_keyword_value(s, "NAXIS3", naxis3, &lines_written); // third dimension to store RGBA planes + write_keyword_value(s, "%d", "NAXIS3", &naxis3, &lines_written); // third dimension to store RGBA planes if (!fitsctx->first_image) { - write_keyword_value(s, "PCOUNT", 0, &lines_written); - write_keyword_value(s, "GCOUNT", 1, &lines_written); + write_keyword_value(s, "%d", "PCOUNT", &pcount, &lines_written); + write_keyword_value(s, "%d", "GCOUNT", &gcount, &lines_written); } else { fitsctx->first_image = 0; } + write_keyword_value(s, "%g", "DATAMIN", &datamin, &lines_written); + write_keyword_value(s, "%g", "DATAMAX", &datamax, &lines_written); + /* * Since FITS does not support unsigned 16 bit integers, * BZERO = 32768 is used to store unsigned 16 bit integers as * signed integers so that it can be read properly. */ if (bitpix == 16) - write_keyword_value(s, "BZERO", bzero, &lines_written); + write_keyword_value(s, "%d", "BZERO", &bzero, &lines_written); if (rgb) { memcpy(buffer, "CTYPE3 = 'RGB '", 20); diff --git a/tests/ref/fate/fits-demux b/tests/ref/fate/fits-demux index 85605ab11a..de7aa11d5d 100644 --- a/tests/ref/fate/fits-demux +++ b/tests/ref/fate/fits-demux @@ -3,8 +3,8 @@ #codec_id 0: fits #dimensions 0: 72x36 #sar 0: 0/1 -0, 0, 0, 1, 14320, 0x0ecf72e0 -0, 1, 1, 1, 14320, 0xd94af6eb -0, 2, 2, 1, 14320, 0x15c21892 -0, 3, 3, 1, 14320, 0xb18adc01 -0, 4, 4, 1, 14320, 0xc2be706d +0, 0, 0, 1, 14320, 0xa9ee75a4 +0, 1, 1, 1, 14320, 0xb9daf9af +0, 2, 2, 1, 14320, 0xf6431b56 +0, 3, 3, 1, 14320, 0x921adec5 +0, 4, 4, 1, 14320, 0xa34e7331 diff --git a/tests/ref/fate/fitsdec-gray b/tests/ref/fate/fitsdec-gray index d080732452..488ee71022 100644 --- a/tests/ref/fate/fitsdec-gray +++ b/tests/ref/fate/fitsdec-gray @@ -3,4 +3,4 @@ #codec_id 0: rawvideo #dimensions 0: 128x128 #sar 0: 0/1 -0, 0, 0, 1, 16384, 0x353dbacd +0, 0, 0, 1, 16384, 0xeff50901 diff --git a/tests/ref/lavf/gbrap.fits b/tests/ref/lavf/gbrap.fits index 57c71e179d..4662c3e6cc 100644 --- a/tests/ref/lavf/gbrap.fits +++ b/tests/ref/lavf/gbrap.fits @@ -1,3 +1,3 @@ -28eb102547b82acca57ef097a6c639d8 *tests/data/lavf/lavf.gbrap.fits +d953a6a2c719de9d922d0624a7eb796b *tests/data/lavf/lavf.gbrap.fits 10224000 tests/data/lavf/lavf.gbrap.fits tests/data/lavf/lavf.gbrap.fits CRC=0x883af247 diff --git a/tests/ref/lavf/gbrap16be.fits b/tests/ref/lavf/gbrap16be.fits index 030a6d90ed..7206d242cd 100644 --- a/tests/ref/lavf/gbrap16be.fits +++ b/tests/ref/lavf/gbrap16be.fits @@ -1,3 +1,3 @@ -ff5fb24a67aeabd4f56088ca8b03d8b0 *tests/data/lavf/lavf.gbrap16be.fits +e9a04d25104fc43ddc62b58eb33ecd08 *tests/data/lavf/lavf.gbrap16be.fits 20376000 tests/data/lavf/lavf.gbrap16be.fits tests/data/lavf/lavf.gbrap16be.fits CRC=0xa981271b diff --git a/tests/ref/lavf/gbrp.fits b/tests/ref/lavf/gbrp.fits index 2b60ddb336..54c239687e 100644 --- a/tests/ref/lavf/gbrp.fits +++ b/tests/ref/lavf/gbrp.fits @@ -1,3 +1,3 @@ -dae49b5f6eb58981ba91e3e108355717 *tests/data/lavf/lavf.gbrp.fits +3952247f7f9669f968826c909852bbd7 *tests/data/lavf/lavf.gbrp.fits 7704000 tests/data/lavf/lavf.gbrp.fits tests/data/lavf/lavf.gbrp.fits CRC=0x80745c5e diff --git a/tests/ref/lavf/gbrp16be.fits b/tests/ref/lavf/gbrp16be.fits index 9aa9db60a2..5bec5e80f9 100644 --- a/tests/ref/lavf/gbrp16be.fits +++ b/tests/ref/lavf/gbrp16be.fits @@ -1,3 +1,3 @@ -693ea80c33eb9b348db27a0bc4a5cc8a *tests/data/lavf/lavf.gbrp16be.fits +caf72fec125df9c7a1d59c9d1bc70b80 *tests/data/lavf/lavf.gbrp16be.fits 15336000 tests/data/lavf/lavf.gbrp16be.fits tests/data/lavf/lavf.gbrp16be.fits CRC=0x9573fb2b diff --git a/tests/ref/lavf/gray.fits b/tests/ref/lavf/gray.fits index ce6783b7c1..410467506f 100644 --- a/tests/ref/lavf/gray.fits +++ b/tests/ref/lavf/gray.fits @@ -1,3 +1,3 @@ -d76b46a5a336b56f73451817cdf3897c *tests/data/lavf/lavf.gray.fits +e690dc6db533b87f5f843737007ed070 *tests/data/lavf/lavf.gray.fits 2664000 tests/data/lavf/lavf.gray.fits tests/data/lavf/lavf.gray.fits CRC=0x7aa0122f diff --git a/tests/ref/lavf/gray16be.fits b/tests/ref/lavf/gray16be.fits index 058fa4ad19..a0526f3db8 100644 --- a/tests/ref/lavf/gray16be.fits +++ b/tests/ref/lavf/gray16be.fits @@ -1,3 +1,3 @@ -15e85a553bbd07783f92377ed369308b *tests/data/lavf/lavf.gray16be.fits +262658f437a256cd843db2b401bc20a9 *tests/data/lavf/lavf.gray16be.fits 5184000 tests/data/lavf/lavf.gray16be.fits -tests/data/lavf/lavf.gray16be.fits CRC=0x8cdcbeb2 +tests/data/lavf/lavf.gray16be.fits CRC=0x737e8998