From patchwork Fri Jan 10 22:06:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lynne X-Patchwork-Id: 17282 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 51B33449DFE for ; Sat, 11 Jan 2020 00:06:53 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 21FAF68ADE7; Sat, 11 Jan 2020 00:06:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from w4.tutanota.de (w4.tutanota.de [81.3.6.165]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DE33A68A2B6 for ; Sat, 11 Jan 2020 00:06:46 +0200 (EET) Received: from w3.tutanota.de (unknown [192.168.1.164]) by w4.tutanota.de (Postfix) with ESMTP id B5E5E106025B for ; Fri, 10 Jan 2020 22:06:45 +0000 (UTC) Authentication-Results: w4.tutanota.de; dkim=pass (2048-bit key; secure) header.d=lynne.ee header.i=@lynne.ee header.b="QlHsJPd8"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1578694005; s=s1; d=lynne.ee; h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type; bh=UALDvRXsaRDi7hVNzMlUWMstPSR/qzzVLdjOJVq8BFM=; b=QlHsJPd8w7WJ6C//4fbz/No3eOQ1+/BhijC52vq93D5RM/+9j2r9v50+XuYrf0Eh DUE5JpGNWV77tyZLkCbK2lkom3Z9TJvXnTZy2nfMzMpdEROkZSp8CNXcw3iE5KBKSVP DmTjmvNVmwCclDbfYWLznihtZ5Q6Q2e5WvivpBXtohPQSWkpXPkbKCGIqlYvOZ8skDp OLMuoaOBhhqkfiO0e7bXkLPbDcRBjmvG+sfW6DP6nyi2oZWHUn6IdX/ghcZOLRhN7BL 6fLITIo6LFgQjEA+E4rbBoyc9lX0lMtfUHKbK4KUteqV8R5iXW8KsMrkP14qpMfiGK4 JqQ19vtGUQ== Date: Fri, 10 Jan 2020 23:06:45 +0100 (CET) From: Lynne To: Ffmpeg Devel Message-ID: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] tiffdec: support embedded ICC profiles 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" Patch attached. Very widespread, every NASA TIFF image has an ICC profile embedded, and its almost never sRGB, so this is really needed for proper color display. From 1a3cbad82c897110e8ef221aae9733b841a443fc Mon Sep 17 00:00:00 2001 From: Lynne Date: Fri, 10 Jan 2020 21:55:19 +0000 Subject: [PATCH] tiffdec: support embedded ICC profiles --- libavcodec/tiff.c | 13 +++++++++++++ libavcodec/tiff.h | 1 + 2 files changed, 14 insertions(+) diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c index 636614aa28..257572b551 100644 --- a/libavcodec/tiff.c +++ b/libavcodec/tiff.c @@ -1218,6 +1218,7 @@ static void set_sar(TiffContext *s, unsigned tag, unsigned num, unsigned den) static int tiff_decode_tag(TiffContext *s, AVFrame *frame) { + AVFrameSideData *sd; unsigned tag, type, count, off, value = 0, value2 = 1; // value2 is a denominator so init. to 1 int i, start; int pos; @@ -1643,6 +1644,18 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame) } } break; + case TIFF_ICC_PROFILE: + if (count >= INT_MAX || count <= 0) + return AVERROR_INVALIDDATA; + if (bytestream2_get_bytes_left(&s->gb) < count) + return AVERROR_INVALIDDATA; + + sd = av_frame_new_side_data(frame, AV_FRAME_DATA_ICC_PROFILE, count); + if (!sd) + return AVERROR(ENOMEM); + + bytestream2_get_bufferu(&s->gb, sd->data, count); + break; case TIFF_ARTIST: ADD_METADATA(count, "artist", NULL); break; diff --git a/libavcodec/tiff.h b/libavcodec/tiff.h index 2184c2c829..c07a5d4fa9 100644 --- a/libavcodec/tiff.h +++ b/libavcodec/tiff.h @@ -92,6 +92,7 @@ enum TiffTags { TIFF_MODEL_TIEPOINT = 0x8482, TIFF_MODEL_PIXEL_SCALE = 0x830E, TIFF_MODEL_TRANSFORMATION= 0x8480, + TIFF_ICC_PROFILE = 0x8773, TIFF_GEO_KEY_DIRECTORY = 0x87AF, TIFF_GEO_DOUBLE_PARAMS = 0x87B0, TIFF_GEO_ASCII_PARAMS = 0x87B1, -- 2.25.0.rc2