From patchwork Mon Aug 16 04:07:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "rui.jiang" <229135609@qq.com> X-Patchwork-Id: 29547 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1692405iov; Sun, 15 Aug 2021 21:11:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwB7Nx1IBt8GdQ2lvowmNrlJW7ozr3h8UWFcFQpdG3n9A2x3PI4Ql+y9VPrUg3wNhMwYgIm X-Received: by 2002:a05:6402:781:: with SMTP id d1mr18065320edy.32.1629087096847; Sun, 15 Aug 2021 21:11:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629087096; cv=none; d=google.com; s=arc-20160816; b=kwPZap98MBZb8uykNIZAk5l3oRyIXe9/m02RwZ/pa3mI4XZ1gx2oeQjkTEuxmG5DHS Yz5fEdiOyCYu2fWjf4yGpwn5L9n+MvKQ+umHkeb9sMdxhU5/F+pI1uNDYc1bUwMrvWCw 3bSXQUj9CyOME60xzqZ82dT4oLMNmTYm6QFOeXFnWYdVComja0kLqHXEC6+vAm5jXEXh OG8+xX79eZRT6UJkkIevVWVk8umzk9flaOQX2bNNlUfj4K8316l5srW+gzn2Q6uoKkPo buO71zkHAg3BmfCj0U+Io/GPXAVDuh+t15pWgxQWARkubZUqInfNnEP3BXZxH2QGahXq ME3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:context:mime-version:date:to:from :message-id:dkim-signature:delivered-to; bh=jRWoikzCaCiXorN3ySL2DKO0PsedwUknEF0chqQWcM0=; b=zhrsLFPx7S1hfw74t76ErVZH/3FZXqwZ2Xs4LMLCwUp+LYMq8pkN6XW334nkQdjD77 o8rrN4mHOsGlr0mQtfD8Keftbxhbd5PxDp1HwyCzJoskpA/2cRRhRNEfZAOFuozxuyxd yCGvPkeNyTtNEjfZivhsT9VyGMR+X9qHCSPth3BGVpnv8X5WOXeVpfOCHg+KN9FHHIkN p+8vYDb+7jCA5UM5HCb79Qyj9X1WQRdYK/JgXBD9g+agbnZR25ymsxnvMGYOIOF6nHlL 7X2p3hW4h4uGFl5XRfyz3kTwHuHyg7mkw1XJHVkHOwertJGVGw+WpZHYcZrE+PH9glHo msxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@qq.com header.s=s201512 header.b=i3BAmzrO; 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=qq.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v17si9304316edd.77.2021.08.15.21.11.35; Sun, 15 Aug 2021 21:11:36 -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=@qq.com header.s=s201512 header.b=i3BAmzrO; 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=qq.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0C51868A484; Mon, 16 Aug 2021 07:11:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-57-210.mail.qq.com (out162-62-57-210.mail.qq.com [162.62.57.210]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E5A1E689F02 for ; Mon, 16 Aug 2021 07:11:22 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1629087080; bh=CTF2aIVUQJMViQTAL3T7zowEZDzaSc2dAmO9H2osJoo=; h=From:To:Cc:Subject:Date; b=i3BAmzrOh3E2VYk64N6CDHT5UJhQQ2saMCLTDtdGBV6Y2jSXKG9Cfxx2vPEUIVXbs wlbOatljNB1AA304gYQxdc8sOxTp57LFsi9Mad8HoVrlB1LjEHc6ziSXXiVJn359Rl eYU2bgpGXWzj1LtKkDyq8r3EVOIi1GzoHH3u2mB0= Received: from localhost.localdomain ([2408:840c:203f:8982:88dd:91e3:60c3:1507]) by newxmesmtplogicsvrsza23.qq.com (NewEsmtp) with SMTP id 2822A87B; Mon, 16 Aug 2021 12:10:02 +0800 X-QQ-mid: xmsmtpt1629087002tnibw1bbq Message-ID: X-QQ-XMAILINFO: MfB44pUq4Z5xM9Rlcvns2Lf55PaH92TITdFsdWIjgskKRHuswiCPKEkul3cNLY 5Kcpzr2+hgiD2USwvIbdDirXBYkBwnL57//AcbCc/y4Q03q9lux5tzFNWB5oIVEvfGPp7PbMwlaH tCGBz+zWxN0ALJr9TWic6g7EyfTtQA/HJwj5aZzQ6i5ts4b7aK27GotdQlY3d13Cizwa5UVO5ZIT BKMmkaSqgDvr0bWI7JijEyT2z0UkRgoT2KmY07SgW9iHs62i3Y4yRBqZ1i+m9hMh55khCl2QTyWS mepXsaCJsMh/qOb6m5k4ASlMOAeXqZlwekFkvvJFgRWApxhZlF+srmY3rMRYiWZsa9l0rsnr8Rw1 qC9AlAB80gerfCQgdTtzc2i8OK96xtqTHuZ7ijqrR6bzVXYBkhlKoN0RMjCG+9NnVIy1KW/2lnua eNvI5m+tjtjGw0jHUAi+upSVJzA7WI+rmgLiw1qfcDnD8IForH4ABIc7HCj2cXRDP+I2glhufPNk XNxVu31jK46z9Ps7j+zAzPWvRWVnb6fSsL3uku4iV+4+NIwmmOwi/r4MwXITF+0dbX4qWerfJbm6 aEAm3Ft++psd5LmxWDadpLFH0IIpe/tHH4CBIs+wV3Xi5I+0W/ew0dexkvNBikjkd4lr6qOTjd5H zGb/b4YqGxFKDSamZLAtkG8dbOK7460qtEwjiZ35SkVenNA4OgMiQBPXSJuKrGbF+hXCCQ5d8Pll VNXEMfyS6iowTDNu9Rh3zSM+o9tIVpy6iNvTh+sa2wnSz82c/iXvzJpVCUH/cMNNsWQ/wiCTj9xn 4YGq13SGkPWMv/T0N9Mzkm0RsEi0vgdR+0IajxYj1jJh1vClog4NKyeRw4UKnc1iYgb2j3cpxDP+ F0ucW3sz9S/AJAf/ZDUkw= From: "rui.jiang" <229135609@qq.com> To: ffmpeg-devel@ffmpeg.org Date: Mon, 16 Aug 2021 12:07:07 +0800 X-OQ-MSGID: <20210816040706.91356-1-229135609@qq.com> X-Mailer: git-send-email 2.30.1 (Apple Git-130) MIME-Version: 1.0 Context: support raw avi for raw PAL8 or Gray8 pixel data Subject: [FFmpeg-devel] [PATCH] support raw avi for raw PAL8 or Gray8 pixel data 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 Cc: "rui.jiang" <229135609@qq.com> Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: dfUtQN2eKoj7 add palette data in avi header when the input data is raw PAL8 or Gray8 pixel data and the output data is 8bit raw avi video; Here is a sample: the codec params like: st->codecpar->bits_per_raw_sample=8; st->codecpar->bits_per_coded_sample=8; st->codecpar->format = AV_PIX_FMT_GRAY8;//AV_PIX_FMT_PAL8; the input data like: int width = 320; int height = 480; int BUFSIZE = width * height; uint8_t* buffer = new unsigned char[BUFSIZE]; --- libavformat/riffenc.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libavformat/riffenc.c b/libavformat/riffenc.c index 43c8bf957a..bc654b3cd3 100644 --- a/libavformat/riffenc.c +++ b/libavformat/riffenc.c @@ -228,7 +228,8 @@ void ff_put_bmp_header(AVIOContext *pb, AVCodecParameters *par, pal_avi = !for_asf && (pix_fmt == AV_PIX_FMT_PAL8 || pix_fmt == AV_PIX_FMT_MONOWHITE || - pix_fmt == AV_PIX_FMT_MONOBLACK); + pix_fmt == AV_PIX_FMT_MONOBLACK || + pix_fmt == AV_PIX_FMT_GRAY8); /* Size (not including the size of the color table or color masks) */ avio_wl32(pb, 40 + (ignore_extradata || pal_avi ? 0 : extradata_size)); @@ -263,6 +264,13 @@ void ff_put_bmp_header(AVIOContext *pb, AVCodecParameters *par, avio_wl32(pb, 0xffffff); else if (i == 1 && pix_fmt == AV_PIX_FMT_MONOBLACK) avio_wl32(pb, 0xffffff); + else if (pix_fmt == AV_PIX_FMT_PAL8 || pix_fmt == AV_PIX_FMT_GRAY8) { + /* Initialize palette */ + avio_w8(pb,i); + avio_w8(pb,i); + avio_w8(pb,i); + avio_w8(pb,0); + } else avio_wl32(pb, 0); }