From patchwork Sat Oct 7 18:57:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz X-Patchwork-Id: 5452 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp942955jah; Sat, 7 Oct 2017 11:59:35 -0700 (PDT) X-Google-Smtp-Source: AOwi7QBHW1KhNu5PsZtmBBnnwD+r9yRvKYSVMNxU5ll5QnriU/T+7lPHFDZ/HEtr9q8bFhUwg9kG X-Received: by 10.223.199.197 with SMTP id y5mr5595774wrg.71.1507402775379; Sat, 07 Oct 2017 11:59:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507402775; cv=none; d=google.com; s=arc-20160816; b=z5vNJqu8JHBbw/RdhbScRKql2aewPzPCWs42YFjUgqTOpXSLrbT5jDgec2ff3iwah9 3NF80y6AlM4+/z2JqfHCOWRERQf82vuBo+Ij4lQNfxUBnZK1Ta9QkUeZcXp2VH1W4QvK iGubk2lV40DwZYS5+eNyYKcQ+K+buDiyLX6N1NvibpoSfrH/9K+qThmG24TMBJMZnD3i 3gZaku1q0hx4Z3L8oSvU/6dHYk+xWb7VibPjEKHVkFscw8qpHdXn195AGm/DSGrZKcSh QhcFhyXWkaoK7j4m2IhwWLvcPrDgAU+YRBpDW+iW6qWl7aY9E8wG3U+SUAKfKasPENg+ PzNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-language:mime-version:user-agent:date:message-id:from:to :dkim-signature:delivered-to:arc-authentication-results; bh=696JYqvKqKD7ntlda95B+pPiEOGUr0mUSHJOtOz7bk8=; b=Rchvp6C3WcQJFGjl6cvPZlTskCWuw9qjNyH+BVBhyzHscU7tD0BZsGoaO9xH22Zwu6 F91hYq6Ca6KAOkKuwTVIu3MHIhgRUjCD+GixLcOmrglDiHNe9xn/EtPz/z6G0hjWvHtU FvJasAhLldhnRQNFXA0eXqvHPAJQ+TIc9QTxEpBSJOw84hX6g2AS0iSb7h30oqpwyNvA rtiXa5DjpIv2JQBJoR92G7g2E/AEqeURgK+0vrgkg1VpG0m9uHNz4sWJiz2CNdBiVnJ1 3ZjKvIwHNUIedmXtCm7o9ENIyJgXklyGGLWDbhIXZBi81oLzNAWEXMNQ8U0tdkfWINQu 0igQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@poczta.onet.pl header.s=2011 header.b=LvLBK6V4; 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 e36si4049037wre.413.2017.10.07.11.59.35; Sat, 07 Oct 2017 11:59:35 -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=@poczta.onet.pl header.s=2011 header.b=LvLBK6V4; 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 BF346689C07; Sat, 7 Oct 2017 21:59:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtpo105.poczta.onet.pl (smtpo106.poczta.onet.pl [213.180.149.159]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 42167689B99 for ; Sat, 7 Oct 2017 21:59:26 +0300 (EEST) Received: from [192.168.1.3] (afdd191.neoplus.adsl.tpnet.pl [95.49.81.191]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: mateuszb@poczta.onet.pl) by smtp.poczta.onet.pl (Onet) with ESMTPSA id 3y8bQg3WhxzljWCn for ; Sat, 7 Oct 2017 20:59:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=poczta.onet.pl; s=2011; t=1507402764; bh=l2nto383Oy6q1R8DHiS00l6shirJQ/wyrJgTAfuwLSA=; h=To:From:Subject:Date:From; b=LvLBK6V4PvICNP8WJBE5Mc3v9fdj5wsOjqlvz9WTAd3q4ROHdTr8lrIw04XQzbQos QuT2kqDIZcZ4o3lwZAHYT8RvkS5UxyZD4PAkqLrQWuDIZB9HFGkUkHZyRV9kpgP6FK jH8xCSOHw97F0oc5DSZu+cRWbOj+NNovAqr4szos= To: ffmpeg-devel@ffmpeg.org From: Mateusz Message-ID: Date: Sat, 7 Oct 2017 20:57:23 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 Content-Language: en-US Subject: [FFmpeg-devel] [PATCH] avformat/yuv4mpeg: add gray9/10/12 support 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" Lately ffmpeg supports gray9/10/12 pixel formats. This patch adds gray9/10/12 pixel formats to y4m. It also moves gray16 to 'strict -1' section. Please review. Mateusz From f2b31ef66931e02a355e3140d47b17f0d307dec7 Mon Sep 17 00:00:00 2001 From: Mateusz Date: Sat, 7 Oct 2017 19:05:53 +0200 Subject: [PATCH] avformat/yuv4mpeg: add gray9/10/12 support Signed-off-by: Mateusz Brzostek --- libavformat/yuv4mpegdec.c | 6 ++++++ libavformat/yuv4mpegenc.c | 23 ++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/libavformat/yuv4mpegdec.c b/libavformat/yuv4mpegdec.c index 462b823860..ff0125e4cf 100644 --- a/libavformat/yuv4mpegdec.c +++ b/libavformat/yuv4mpegdec.c @@ -126,6 +126,12 @@ static int yuv4_read_header(AVFormatContext *s) pix_fmt = AV_PIX_FMT_YUV444P; } else if (strncmp("mono16", tokstart, 6) == 0) { pix_fmt = AV_PIX_FMT_GRAY16; + } else if (strncmp("mono12", tokstart, 6) == 0) { + pix_fmt = AV_PIX_FMT_GRAY12; + } else if (strncmp("mono10", tokstart, 6) == 0) { + pix_fmt = AV_PIX_FMT_GRAY10; + } else if (strncmp("mono9", tokstart, 5) == 0) { + pix_fmt = AV_PIX_FMT_GRAY9; } else if (strncmp("mono", tokstart, 4) == 0) { pix_fmt = AV_PIX_FMT_GRAY8; } else { diff --git a/libavformat/yuv4mpegenc.c b/libavformat/yuv4mpegenc.c index b4dc6e9ef6..44f40bbad9 100644 --- a/libavformat/yuv4mpegenc.c +++ b/libavformat/yuv4mpegenc.c @@ -69,6 +69,15 @@ static int yuv4_generate_header(AVFormatContext *s, char* buf) case AV_PIX_FMT_GRAY8: colorspace = " Cmono"; break; + case AV_PIX_FMT_GRAY9: + colorspace = " Cmono9"; + break; + case AV_PIX_FMT_GRAY10: + colorspace = " Cmono10"; + break; + case AV_PIX_FMT_GRAY12: + colorspace = " Cmono12"; + break; case AV_PIX_FMT_GRAY16: colorspace = " Cmono16"; break; @@ -184,6 +193,9 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt) case AV_PIX_FMT_YUV422P: case AV_PIX_FMT_YUV444P: break; + case AV_PIX_FMT_GRAY9: + case AV_PIX_FMT_GRAY10: + case AV_PIX_FMT_GRAY12: case AV_PIX_FMT_GRAY16: case AV_PIX_FMT_YUV420P9: case AV_PIX_FMT_YUV422P9: @@ -213,7 +225,8 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt) ptr += frame->linesize[0]; } - if (st->codecpar->format != AV_PIX_FMT_GRAY8 && + if (st->codecpar->format != AV_PIX_FMT_GRAY8 && st->codecpar->format != AV_PIX_FMT_GRAY9 && + st->codecpar->format != AV_PIX_FMT_GRAY10 && st->codecpar->format != AV_PIX_FMT_GRAY12 && st->codecpar->format != AV_PIX_FMT_GRAY16) { // Adjust for smaller Cb and Cr planes av_pix_fmt_get_chroma_sub_sample(st->codecpar->format, &h_chroma_shift, @@ -255,11 +268,14 @@ static int yuv4_write_header(AVFormatContext *s) "stream, some mjpegtools might not work.\n"); break; case AV_PIX_FMT_GRAY8: - case AV_PIX_FMT_GRAY16: case AV_PIX_FMT_YUV420P: case AV_PIX_FMT_YUV422P: case AV_PIX_FMT_YUV444P: break; + case AV_PIX_FMT_GRAY9: + case AV_PIX_FMT_GRAY10: + case AV_PIX_FMT_GRAY12: + case AV_PIX_FMT_GRAY16: case AV_PIX_FMT_YUV420P9: case AV_PIX_FMT_YUV422P9: case AV_PIX_FMT_YUV444P9: @@ -291,7 +307,8 @@ static int yuv4_write_header(AVFormatContext *s) "yuv444p10, yuv422p10, yuv420p10, " "yuv444p12, yuv422p12, yuv420p12, " "yuv444p14, yuv422p14, yuv420p14, " - "yuv444p16, yuv422p16, yuv420p16 " + "yuv444p16, yuv422p16, yuv420p16, " + "gray9, gray10, gray12 " "and gray16 pixel formats. " "Use -pix_fmt to select one.\n"); return AVERROR(EIO);