From patchwork Fri Dec 9 18:15:14 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gregory J. Wolfe" X-Patchwork-Id: 1733 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.65.86 with SMTP id o83csp452015vsa; Fri, 9 Dec 2016 10:16:05 -0800 (PST) X-Received: by 10.194.174.229 with SMTP id bv5mr70316416wjc.21.1481307365792; Fri, 09 Dec 2016 10:16:05 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id cw10si35104242wjc.41.2016.12.09.10.16.05; Fri, 09 Dec 2016 10:16:05 -0800 (PST) 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=@KodakAlaris.onmicrosoft.com; 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 9FD0668A132; Fri, 9 Dec 2016 20:15:58 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mx0a-001e4c01.pphosted.com (mx0a-001e4c01.pphosted.com [148.163.157.69]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8546B68A0EA for ; Fri, 9 Dec 2016 20:15:51 +0200 (EET) Received: from pps.filterd (m0087346.ppops.net [127.0.0.1]) by mx0a-001e4c01.pphosted.com (8.16.0.17/8.16.0.17) with SMTP id uB9IFX1O009190 for ; Fri, 9 Dec 2016 13:15:53 -0500 Received: from nam03-dm3-obe.outbound.protection.outlook.com (mail-dm3nam03lp0017.outbound.protection.outlook.com [207.46.163.17]) by mx0a-001e4c01.pphosted.com with ESMTP id 277guxbyex-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Fri, 09 Dec 2016 13:15:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=KodakAlaris.onmicrosoft.com; s=selector1-kodakalaris-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=mpqVUBNn2NodCQZe8G+P/+vpDuhE+Qyjz2t8jH23Mis=; b=39s16aj7GglukRGvkBi+WUVOidjs67IOaLJd3slFHiAJs3HHGgw1jUnEJdyisP0veF//irpNN+YweiTxXReuku4xwzRdSFfPia8ctLWf+OzT5fHMXTsfaMiEfvCsV3ErmUbL5IV6h6582fGTcy1hsHbdSFQEMm0EGIHr+UArhOE= Received: from CY1PR03CA0032.namprd03.prod.outlook.com (10.174.128.42) by BN6PR03MB2786.namprd03.prod.outlook.com (10.173.144.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.747.13; Fri, 9 Dec 2016 18:15:50 +0000 Received: from BN1AFFO11FD009.protection.gbl (2a01:111:f400:7c10::169) by CY1PR03CA0032.outlook.office365.com (2603:10b6:600::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.771.8 via Frontend Transport; Fri, 9 Dec 2016 18:15:49 +0000 Received-SPF: Pass (protection.outlook.com: domain of kodakalaris.com designates 137.117.101.28 as permitted sender) receiver=protection.outlook.com; client-ip=137.117.101.28; helo=W5AZEXGP02.kaidmz.kodakalaris.net; Received: from W5AZEXGP02.kaidmz.kodakalaris.net (137.117.101.28) by BN1AFFO11FD009.mail.protection.outlook.com (10.58.52.69) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.761.6 via Frontend Transport; Fri, 9 Dec 2016 18:15:49 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:633; Count:11 Received: from localhost (10.234.8.126) by W5AZEXGP02.kaidmz.kodakalaris.net (10.81.4.5) with Microsoft SMTP Server id 15.0.847.32; Fri, 9 Dec 2016 13:15:49 -0500 From: "Gregory J. Wolfe" To: Date: Fri, 9 Dec 2016 13:15:14 -0500 Message-ID: <1481307314-5296-1-git-send-email-gregory.wolfe@kodakalaris.com> X-Mailer: git-send-email 2.5.1.windows.1 MIME-Version: 1.0 X-IncomingHeaderCount: 11 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.117.101.28; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(7916002)(39450400003)(39840400002)(39410400002)(39860400002)(39850400002)(2980300002)(438002)(3190300001)(189002)(199003)(86362001)(5660300001)(305945005)(38730400001)(4001430100002)(107886002)(106466001)(76506005)(57986006)(77096006)(2351001)(97736004)(50226002)(110136003)(8936002)(626004)(6666003)(6916009)(450100001)(5003940100001)(33646002)(50466002)(81166006)(81156014)(47776003)(2906002)(48376002)(4326007)(104016004)(50986999)(36756003)(68736007)(8676002)(92566002)(356003)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR03MB2786; H:W5AZEXGP02.kaidmz.kodakalaris.net; FPR:; SPF:Pass; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD009; 1:zVf86MrpVaPmC+U+JwO9/s7wlQbwWF5RP/X6rjLjlikdpHfcPNimkPf6gdMzJ2GRCgVA2PP4JX9PB+WmafCKk4puRgP4r2yn35/ZzHbyMoid/aAnKjQPtRW3beXeKpBgHTgH+xSHWS8RAzfzmZm5WL4hxwFfa0nePDzHkji89jyX3fyShl+tI5PWxZ3upPm4oYmoWpgl11g7bneUIL+7AqfbGKJpVJBejjYlyxBdtDD1OsVJwv/GzHDkjfyvk6dVfPpVbjS361JFTUBiVVAMdgpFQrH9sC9gGfbIvUt0ZNCWk5/I2TMiKGhzfxgVdYo9vrsXDTVxz3dBIoSjI1hBNkLWof7XUernsjxwQinmHln/L+wBiKzJBNH+HjV1xoduXbSNesIYaoZsMyE9mwAq0/TR15kP0paketADtWvjrWi2YJTgA6BT0BbHAW5Xpb6oSvz5l5J2ycs3XnjhmWcespS4WIYwUMYpv6LvDrWCx0JSjMMZsNw00rVT75q66YTjYmgYJS5L5gYU2gMJjjlDOXILu6PZfiDz11u/6ebYwqRTP11WXeflYaxyjxqfLIoJBj8T0XgWAMgyQ2tuapwt0pivM09Xjf7RTwxErbdPH5H8Mdbsd3gnzhojQInD1srfOUitAP/cL6MMKDAN1GDtSaHUtCyxXLqiJrfmp+yjt/+sAQ7ziqCGDlcO+ldDiFVYGe4BfWGmmHnTi6EOUoxgTQ== X-MS-Office365-Filtering-Correlation-Id: 779e8420-fa99-4d89-44ff-08d4205f6755 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002); SRVR:BN6PR03MB2786; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2786; 3:MJblTgWu8jTf02lEcxuoYwfbvnY0eXgzEGI8pQcpP/O2Xpt5oPI8Aq0fNfMX2589Y/6S2K5RauXxeijlUf9ZBjQ0vukUvyVLaX/skbi/+VEA/hGahM6DNl978J/Qq9MR6Yk6pjeoOABEUWXZBsUo+HY3yIA+j8oAdQRxaJGzSg68w1m7nCQUkL1JW4BHUJ72REGgobMLLRqjicG2Cg7y6mXs9n+BuwQCfeO3Q6R1i3AE2++b8aJ0yHijnvxTjfS0OaOQCVcR4oJ5tAzVA9PRsOFM0sarnC9X7RliZvcvnTzLq/zDjVQXvIjllaowSFVuu44KL4Berj3kIZeE/2cQuaP5XPO3S+lc6XVQxwAWZny/vi2dnoJiP5gW3LowdAwDWFrlDlx51IszTtRWzpTjwQ== X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2786; 25:Q39Ga3OnQeBlEOCENg92DAyT8M0i/QF7nDu+IHZHhT4Xw9yceKg8fVTLOAuMhvsfNLTC2iEZ3lE5pJibrQduv2gpkAslnGU84TvpbzAp/9hDCmwatQpS0hgW64Imx0L1MZ1rAgk2TaUB5h5tU5P86R8ByE53dq5iuNGzfIdYHj1JiQ9mxDwdVo9KWmHbpv+fnGk28DN5qCN3q43cLEmxS4KUZDotLT95pJyTLLqmytzbQ1xDRT8yySl+ZT0DpBuKDlBovsMeJjVifLajTu0e9V9NzAB42yFdwuT6Kf9+ekhJoovs7o+cIam0ecyHDkO4fUkhK2BUosJiVCLckgryVZIf4O1p+C5xl08Cxz8cVPdtjCQWVALjQBlw1D6l3lQatScQ51HokRJNKrf/sw6st1NfrC/bD/r8/FjeV8nq/3vKDL56QwDQrCFK7oBM3OGvqlVOee0lqiTqFGsOI3MsslWnOKDDuYQyxuieIJeTKUZdWYnOY6yaCKmCgFZLOBxnHClQMwBbtlme2jdRbt6JGqN+HcthN/V0I6Jt4DTUMx1SY0m1dh3czZneke9kc6zWnbREECUV1x5hxF2D0+9njIKlY/KbdI/2fNcHsuo1Cizq6tJibrmLRyH8n+lx9qenjWPv2hxS7gnGg2fC1J0RtBOVrm2lguXmuYghJIQlAyNBjJNXWtW8JybR15Trvt8MhY+2zEQtLkNgaC2wsNq8SsybyZlibBx0p3SNqmrlHjx7NdDxjmLTccw0z9WbPQONs3+aAuNP/yrUh4uSTACU3dqnB+2U0s66pzQc1P3kduSJOzBIodhoEOrMIt+Lke01 X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2786; 31:XG8rLeGrlkOGNC6OkDc48PlqjWuLf8i284GiHQY/vQc18MOJQz5bwW3BVzUz8b8V/IKNrfN4pLKcNKBxXpvEKkboBvSavqnnYbygqWDGo3t5x8VXgNEtS5fu92iwj2gRfGXxSINg6x8Iff0O7+nfrrV6UE5Qn92TSMJZx7wrmGavWtJII8j2Zybm+9aoGiyWlUcDohUiTSaGeMkzFqXxX+Q33NDnDAUq+3a98azcr4bKv0NX5yRELxMy5ws1tck9t5Fbh8m+ZLcOh40bxITua+bqFmDq6yv7Kd9z7WeiK68=; 20:zGUwEz08uxkLY9oJmN+WfQRwxWnB3KErvoWeQk2XlpRK5G2m/D5jwEe3sNWV+wM2b+9MqRoHWg4udbNLJRRF2iXrUGqOhFL42Fr7gvsJdGjppUvDGdy+ZqKs2y4nCnDrO0a8qsrOts8FxQcCj+AMhHHUpLeg3fdqddUPRA35khxiVvp4hi3NZv5608EefUJq/gUDoYwTuHI+Ez7afJGzSxpe4vEsCewGfOXeTN3Us36mUHS8fEoDwPVSzKzDtgXchWDi2OQVCMyCbMPYgKyULllcjUC4LA3Vd7Kj8NLFuixbCaMxcYKeoQlSXwmulPeEFNKMLh6F+IO4GTe+FkTCmHIC3OAuAB5mo/Uhx+dG0LJvTBzMwPhI9SS0gr9Iip9QJNRdHkB+zcGrEewOgofDlUDGTgcCbHKY4c+ci31mDGggFACxVwbg4L7qitBOX4GcBHjvHRDCewf7G/0uDcigJDRsefRcMDG/xJ6h1o/smbVocO5MltxAuAAwzUN7lKn+ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(13023025)(13017025)(13015025)(13024025)(13018025)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123562025)(20161123564025)(20161123555025)(6072148)(6047074); SRVR:BN6PR03MB2786; BCL:0; PCL:0; RULEID:; SRVR:BN6PR03MB2786; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2786; 4:sVVgm+ZqpdOlwKp5dPaCoPZBwTbVGOi6ITFV55cw/k0WGPvOpB9vOEtHdeSn65SCQtui9Ok0goYzAicU17gD+qGAenKR6GnVWOj1eATqPpQTMmBDQkE0+qWo6nLqt+m3GgiSu8CQ1q9nhDtHNW0Pjs7VI468CFks32bZXliTc1NYbnUC7kVcswjKMVnkGOWDparip7jcWD/6j12jIeeYBNjx5zw7E3eRa8jWUllOzHqNR94b8EBaxUjI84jU4kbda0wJ1Z6ucjyxywpDxsikT6b5FJVS/kqKEEpird8XsV+gJZB+DmLBSrIBGl4JJeVKT1WTSOrt6za+7nzNm6mcshNtxElVOeMwlsD2z8Ya9o7QAF+Azv9m3Qljih5ZT/+CfnzHK5WluoaiUoN8a9CFZSiddy373mVz1MFjfC4RXVijZ6XZFwPyoOb7hTw6/PJNbhwddQ4w4RCVmsc/GQ+KsF3HTNvpBtzLU8HPxSyGPhw4V2VS5v1JhiYw7+r3iwmtxMUi8wzxGfsbkF9lB6l+06nKPuc5YNayIibEE+oMcO67ksW/WSImvrqLd0TcTDbwABIcQAv19ZcrrMwcXweggVRZl3e3lBpJK7XZWytKTYKy4W4Z0ua4ZKsuxHcg2RR4EZkPWC9Hi4jv1CY1oMJNrP4yuHW2FSk/LVSiyMlMVTHV0FyFloK5JraQORBgENKl+ijwgUVaIFpU1j3B38NgAQ== X-Forefront-PRVS: 015114592F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR03MB2786; 23:E1GLQA7DH7u81axfj9TF0jUDT8sb3alfABAY2tHVO?= =?us-ascii?Q?bn1iSiAMnqrLB3bBtf8Fz/EsmQYIVPUCIraxzd2bUdbBY3Zh6N6nwqiDIFlx?= =?us-ascii?Q?GZONSKnIm6MUqErm5lEbREDsmK6mM2wrJMEyB4JoYztApvQSDG1LxItqhncA?= =?us-ascii?Q?10ugrl7OSvq/TU6W5rKiEtMtZ3r1WKMEv2uZVyf/7thH9QoSgZTBgjzBcUNM?= =?us-ascii?Q?LqKF8oUcnRFfjSw772IZdPqNwqon8L/Vh4dab5sQjMkqJqjag7V0kz8lzBST?= =?us-ascii?Q?dttsgdahR9c9L6DmxD8HprVbrlD9jeQBkFLiaY/m1DXrs1jGZaHM8numHOIU?= =?us-ascii?Q?oQuTscToBwMERXGPquuheJ720ipvUcFXaXZKY6zh1ZjvICh19gy2pJDlhCxz?= =?us-ascii?Q?jcJwm3qDWUGXnHMGNgmy/Zu2KmNDRO1WC6as9OeIB61MIKRaFLHT+cOXuvMR?= =?us-ascii?Q?/2DJdFl2M3ytZpCpHvAUuPtPaRMDivefgkyTlvoV/S7e5pbyT/3mVBTDPRWR?= =?us-ascii?Q?dDykAzfp8RDvSjRSRoJMyEMc7jdQ/3+UMIimrp8W6htXL+x87WVYhd2O07S+?= =?us-ascii?Q?R3Ktxj9h04qLuasTfzNP862RMYDb/C0yPK7Pem9OaY0GNjTLMkfMNIETy308?= =?us-ascii?Q?zr2PmFeg0gMjpL9ILonMxP3dpqvQMxOd7g27kGEq7WR60zgGkLKm420DG/ye?= =?us-ascii?Q?hTH6YOCK46TLVDLAfFe+st7GCwWLj9Yk/6fExKz/DDVuGxaCSpIe1dgNfw0u?= =?us-ascii?Q?x8waivriZFqi6xJAOMGm3osKUZEI5CGt9luByW6hCnOGBzXzauSmofX2Ic57?= =?us-ascii?Q?6OIuy7gXERjrjfvZVQ/bAZ5IItGlZGu9Lh+fx3Egh6csU50vgO7Cx/jR9xMf?= =?us-ascii?Q?tXTRiTInYTOm+wXvxmCehnHk+vLdKfJ0JK2c/I7IU+HXF9l9dPMdVH8os34j?= =?us-ascii?Q?DUxJWliDiLfcHqM/CithJST31pVd+tysK5ESQ0K3J19VMBrA2z/TyeZD35Ek?= =?us-ascii?Q?xNfRA3rIDcrRcLtLh2zs1GCfg6JI/lulvf2rQFcdV7sJX/BLmTHXzCjXO/aA?= =?us-ascii?Q?+3lL8WBQqOjLrav30mf3ltOfBoADJcLCmQ2WqpSWJGlTYfTJ9At77CUBksWB?= =?us-ascii?Q?89tjZ7SF9d6ULDJYNQOrgv0Zw6OFItHI4BS4+jciDXWBAQOedjrL8aIpv2Hq?= =?us-ascii?Q?DmheogVErkywgI=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2786; 6:wyMVoz8MN3IX/4p/HzepmD6HR8rePz1hnsBx0iqpcfiW9Sfn03WjMc8s6ZhUup9Wf+7b9rEyyy8sFPHRxfGcgnpb+ZjKo8O+fZ/4ikd519Iase7oXZo0yoMl3RTJYDjTCVRHtpei3LlXoCTlvHQ4+M/6aPJUGc3VfXQJuSHmHnpwTRPFSWhI/nMZouAWVQcWGV0UTtmCWQ8FoGN842hjnA9TZI5Q7QrNt1Grr8bnLF2DShOyxD9IZhNfJcGsWAUJ08FctK4MnVVfVfL9r76DoqlwKNKvSAG7NMi60gymhpFZiDUVMylPDU/+8YG294TFCasASjdBgVZHhicMEU7xVlhgBFFqtcu6SOmKLu8we1HgKHuxKMh07xFZ26/qdDBTwt9oCyLdPYdLCY7StUxoQzcoJjOS6pXSdN6Cp17j4IbjKzSGKi4dVzeCg0nRq3p7Wq+1gKUWM7ttEjjSP/vEYVpxIqPgEZiHHh7y/7Nq5IMcx07hSZFfZWjeB73wI3Ho; 5:r3hfK6+C7RdtTfX5L65hiQ5jwLzRuu0lpDNZ+dVQEEgKO/o1q92cICoDHjiEzlDYFLbVD0lFhtuOUrz/b0fvxTGhTLtFUTShEd7iC2FO6dUD1MFqDLk8tQJzLQ6kYzxO5SvLAt12bkVSttbtHtUjxVqHdt4S8PyKpa/gIHdXz9Q=; 24:Rp2zr1YFWwWh/fFQPpw+tzwlp1qW9X1GQvriXTZHxDK+x2ltRoaBEWQAkvRKtgswdUdKwz2k0krlqCWXAtZyL5TqsIoK4Rjcu5ACsj77xQ8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2786; 7:D7F9ttva2QPIkDE4L6ICK4ktEs/mBnD8wU1IMmvH5g1U1GBL+RH4/R1qD8r/wnMud4xSKzh2soNjH8UuO/QXERLu1SQFhS4sFhhux4WiohQhAPpAz5Frgg3e9FXTzfbSjgBQlH1r6MpwxUG9SRU1dEgrU1eYXqJ6RTSdpvV+d2KvQ4TmFR2iJNczlGo28MOvnQPBvfsSHsbvwXOqsB+7842KIco+JwTzOkaFgYGbcCOptgA1PjAqNyCLP6k1LCUYi28mUBucNKfwbQkPp4RsoCr9zWy0ymADHHPiwwh6GtxTabeA8pMS0dW3n6iaFXI/AjI9iJ8qByPktrMy2gEtQvn69RWf8NgnkGmFYsYJwJL1/sHdc68li4B3u4Eq86G3Ixwtx1qk7JL+e6ADvnfIvCfrLsR3DSP0PD2x+q9J0DFlSRSF9asMFUyhb6Up0OD4MGaAvvYEyBYLSw9TJYs6pw== X-OriginatorOrg: kodakalaris.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Dec 2016 18:15:49.3081 (UTC) X-MS-Exchange-CrossTenant-Id: d29b7a9b-6edb-4720-99a8-3c5c6c3eeeb0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=d29b7a9b-6edb-4720-99a8-3c5c6c3eeeb0; Ip=[137.117.101.28]; Helo=[W5AZEXGP02.kaidmz.kodakalaris.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2786 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-12-09_10:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000 definitions=main-1612090252 Subject: [FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files. 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" As of version 1.6, libopenh264 saves (in the output video file) information about the color primaries, transfer characteristics, and color matrix used when the video pixel data was created. This patch sets the required libopenh264 data structures using the FFmpeg colorspace information so that video players will know how to properly decode video files created using FFmpeg and libopenh264. Signed-off-by: Gregory J. Wolfe --- libavcodec/libopenh264enc.c | 61 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index e84de27..d8a7ea3 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -205,6 +205,67 @@ FF_ENABLE_DEPRECATION_WARNINGS } } +#if OPENH264_VER_AT_LEAST(1, 6) + // set video signal type information + param.sSpatialLayers[0].bVideoSignalTypePresent = true; + param.sSpatialLayers[0].uiVideoFormat = VF_UNDEF; // default; choices are VF_: COMPONENT, PAL, NTSC, SECAM, MAC, UNDEF + param.sSpatialLayers[0].bFullRange = avctx->color_range == AVCOL_RANGE_JPEG; + param.sSpatialLayers[0].bColorDescriptionPresent = true; + // These switches are intended to filter out all but the values supported by libopenh264. + // An unsupported value causes the associated quantity to be set to "unspecified" and a + // warning message to be issued. + switch (avctx->color_primaries) { + case AVCOL_PRI_BT709: param.sSpatialLayers[0].uiColorPrimaries = CP_BT709; break; + case AVCOL_PRI_UNSPECIFIED: param.sSpatialLayers[0].uiColorPrimaries = CP_UNDEF; break; + case AVCOL_PRI_BT470M: param.sSpatialLayers[0].uiColorPrimaries = CP_BT470M; break; + case AVCOL_PRI_BT470BG: param.sSpatialLayers[0].uiColorPrimaries = CP_BT470BG; break; + case AVCOL_PRI_SMPTE170M: param.sSpatialLayers[0].uiColorPrimaries = CP_SMPTE170M; break; + case AVCOL_PRI_SMPTE240M: param.sSpatialLayers[0].uiColorPrimaries = CP_SMPTE240M; break; + case AVCOL_PRI_FILM: param.sSpatialLayers[0].uiColorPrimaries = CP_FILM; break; + case AVCOL_PRI_BT2020: param.sSpatialLayers[0].uiColorPrimaries = CP_BT2020; break; + default: param.sSpatialLayers[0].uiColorPrimaries = CP_UNDEF; + av_log(avctx, AV_LOG_WARNING, "Unsupported color primaries value %d was specified;" + " color primaries value has been set to \"unspecified\"\n", avctx->color_primaries); + break; + } + switch (avctx->color_trc) { + case AVCOL_TRC_BT709: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT709; break; + case AVCOL_TRC_UNSPECIFIED: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF; break; + case AVCOL_TRC_GAMMA22: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470M; break; + case AVCOL_TRC_GAMMA28: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470BG; break; + case AVCOL_TRC_SMPTE170M: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE170M; break; + case AVCOL_TRC_SMPTE240M: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE240M; break; + case AVCOL_TRC_LINEAR: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LINEAR; break; + case AVCOL_TRC_LOG: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG100; break; + case AVCOL_TRC_LOG_SQRT: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG316; break; + case AVCOL_TRC_IEC61966_2_4: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_4; break; + case AVCOL_TRC_BT1361_ECG: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT1361E; break; + case AVCOL_TRC_IEC61966_2_1: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_1; break; + case AVCOL_TRC_BT2020_10: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_10; break; + case AVCOL_TRC_BT2020_12: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_12; break; + default: param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF; + av_log(avctx, AV_LOG_WARNING, "Unsupported transfer characteristics value %d was specified;" + " transfer characteristics value has been set to \"unspecified\"\n", avctx->color_trc); + break; + } + switch (avctx->colorspace) { + case AVCOL_SPC_RGB: param.sSpatialLayers[0].uiColorMatrix = CM_GBR; break; + case AVCOL_SPC_BT709: param.sSpatialLayers[0].uiColorMatrix = CM_BT709; break; + case AVCOL_SPC_UNSPECIFIED: param.sSpatialLayers[0].uiColorMatrix = CM_UNDEF; break; + case AVCOL_SPC_FCC: param.sSpatialLayers[0].uiColorMatrix = CM_FCC; break; + case AVCOL_SPC_BT470BG: param.sSpatialLayers[0].uiColorMatrix = CM_BT470BG; break; + case AVCOL_SPC_SMPTE170M: param.sSpatialLayers[0].uiColorMatrix = CM_SMPTE170M; break; + case AVCOL_SPC_SMPTE240M: param.sSpatialLayers[0].uiColorMatrix = CM_SMPTE240M; break; + case AVCOL_SPC_YCOCG: param.sSpatialLayers[0].uiColorMatrix = CM_YCGCO; break; + case AVCOL_SPC_BT2020_NCL: param.sSpatialLayers[0].uiColorMatrix = CM_BT2020NC; break; + case AVCOL_SPC_BT2020_CL: param.sSpatialLayers[0].uiColorMatrix = CM_BT2020C; break; + default: param.sSpatialLayers[0].uiColorMatrix = CM_UNDEF; + av_log(avctx, AV_LOG_WARNING, "Unsupported color matrix coefficients value %d was specified;" + " color matrix coefficients value has been set to \"unspecified\"\n", avctx->colorspace); + break; + } +#endif + if ((*s->encoder)->InitializeExt(s->encoder, ¶m) != cmResultSuccess) { av_log(avctx, AV_LOG_ERROR, "Initialize failed\n"); return AVERROR_UNKNOWN;