From patchwork Fri Oct 4 21:07:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Schitter X-Patchwork-Id: 52056 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp673805vqg; Fri, 4 Oct 2024 14:19:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXTLhaIxsoE/KnUXsAftKvkh7FVHzY8UuJz2zZbfkN+Ym0h7jOkLE7mXm9Fp6xQGSziSLIHfM/96IhBiycb3+jn@gmail.com X-Google-Smtp-Source: AGHT+IFFLKCbB9PvXwTxCAuN/epqgLdpLwY30wieyLdJsNeIjIzfpCr1H+v8aKBxwO+/cQz40AzI X-Received: by 2002:a05:6512:3a91:b0:539:94c4:d9cb with SMTP id 2adb3069b0e04-539ab88c4d6mr2588263e87.31.1728076747220; Fri, 04 Oct 2024 14:19:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728076747; cv=none; d=google.com; s=arc-20240605; b=Nei8FxZm+FKRixvDw0a5u3cneZXI3C57REGHrxt7hOpE95F/j4N4RqaNn3jl4TbdWN oREnehYQWNhcBWvzmyV7MZzlrPBuLInrTDcJSi2gjhV2jzML38/Cvdj6rW0nU+8zaofY 3ZyTNC82QPfdu3YNUWfZb4foTDzSsw9aQTTQ6eUfLELgnpND0ZpAozGuNQ3vtAZp0ch4 5EjFrFVe6T+APGAKOIe+dGEVRewnKz786rh+H4Dsw+8KlmYlh8x6oXUKA0KlrkfxCOR8 5G+dR0sZG1rM5INKH5M2TRmIsnOkLCy1W062sV3xWwJ6sO90RY2eNuTFgY7oksZjIMqw Av1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=/ew0HJoLZ++6HSScurlWFfdtXx1gTq9RB+eNYWCLe24=; fh=SY+A8HDvCKivsvOlugO0byaDvZLxc2A9PIXlqXmaPLE=; b=HDqeYJ1FskmRffDV54SAIwvgXDviNHb+4o2m3O6FbjIEhgES33gPPBFV9Iz2Tw2Vls jenjfV88z+WDKplIMSlumUue/W0A3GCGO6vKiDZ7p/D3yuCmPPGVPHoCCmpWhFqw4Y0K xS3+lp9VKk6YEENBwSuqCBMWW/caXGp4GGsRebM9Tf5b3TQNexMmVlsGA+NmEZrz0y5h RElV/mGJaAemvuCtIl6yoaRVEDU5hpgNAvNshSW93h/8UULut/Rj2950MoLOrKaweJ4L a2P6kaEjSv9FRhhFMJuVkCauFPu6sHET07rtkLKkUCz0hWBZFc9E2r6y8Mk7rhp7urwJ alCQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@mur.at header.s=dkim2 header.b=cWc1KCF2; 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=NONE sp=NONE dis=NONE) header.from=mur.at Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-539aff25891si136946e87.384.2024.10.04.14.19.05; Fri, 04 Oct 2024 14:19:07 -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=@mur.at header.s=dkim2 header.b=cWc1KCF2; 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=NONE sp=NONE dis=NONE) header.from=mur.at Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2A74A68DAD0; Sat, 5 Oct 2024 00:10:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from efeu.mur.at (efeu.mur.at [89.106.208.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 76B9A68D9B4 for ; Sat, 5 Oct 2024 00:10:45 +0300 (EEST) Received: from localhost.localdomain (lan1.raspi.ma39.ffgraz.net [10.12.1.243]) by efeu.mur.at (Postfix) with ESMTPSA id 87596461CD; Fri, 4 Oct 2024 23:10:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mur.at; s=dkim2; t=1728076242; bh=GrqwtMUOpHRZNChUU1PuMRpsRepb8ZvqIyIvZ6Wc9kc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cWc1KCF2eGG/Sa5hlxGU32t+HmNieyENLBopBMTbXNW/j+woazRdzEfcgLUXDKrCR Q4XwqrMymW43Bk7ItVZ2o4Hv5Kxk73q5IZgzq3SYf9AGENR/8wVMDRSUdGlCYAxhC7 UfNapVq8r2CY3i6yLoOiVJ6mgRBWWXjykJvxKVoV+5NMS7T0hsxxF7RmeEHrDX319T RmOVxLyBbViEMGk2VP3JocuUjIS9CJ1JyVoXbaTXmsxrhmktXhDvDcGvx4JobzYia8 XmXleGz3d/wsGtgB2D2FfZHkrhMgxogzasNsMqGDjMogRWljYXEm0L2Q747ZNARQvN ktmZqNPtMU085fso34mepjIzFi4gmW0+mgUOR9Ec52A665K2RbNb7XySpza+oEKOLf lVZFIecJ0A3zkrlSZH1B6YYcI7FS6rBqDgEPWF8MPKFcC+QIPCro8mlhZejZZGc/4r fVCbZMmqHww0BYyHQCY52i0lS1AboZK0En5frlRaFO7hVWxkPQ2 From: Martin Schitter To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 Oct 2024 23:07:30 +0200 Message-ID: <20241004210734.3145612-3-ms+git@mur.at> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241004210734.3145612-2-ms+git@mur.at> References: <20241004210734.3145612-2-ms+git@mur.at> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v10 1/6] libavcodec/: Add ID and desc for DNxUncompressed 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: michael@niedermayer.cc, Martin Schitter Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: F0Z6fTrCaYNs --- libavcodec/codec_desc.c | 7 +++++++ libavcodec/codec_id.h | 1 + libavcodec/version.c | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c index 03dea57..2452a7b 100644 --- a/libavcodec/codec_desc.c +++ b/libavcodec/codec_desc.c @@ -1959,6 +1959,13 @@ static const AVCodecDescriptor codec_descriptors[] = { .long_name = NULL_IF_CONFIG_SMALL("LEAD MCMP"), .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, }, + { + .id = AV_CODEC_ID_DNXUC, + .type = AVMEDIA_TYPE_VIDEO, + .name = "dnxuc", + .long_name = NULL_IF_CONFIG_SMALL("DNxUncompressed / SMPTE RDD 50"), + .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS, + }, /* various PCM "codecs" */ { diff --git a/libavcodec/codec_id.h b/libavcodec/codec_id.h index 0a8d3be..0abd036 100644 --- a/libavcodec/codec_id.h +++ b/libavcodec/codec_id.h @@ -322,6 +322,7 @@ enum AVCodecID { AV_CODEC_ID_RTV1, AV_CODEC_ID_VMIX, AV_CODEC_ID_LEAD, + AV_CODEC_ID_DNXUC, /* various PCM "codecs" */ AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs diff --git a/libavcodec/version.c b/libavcodec/version.c index 27f9432..03dd95e 100644 --- a/libavcodec/version.c +++ b/libavcodec/version.c @@ -31,7 +31,7 @@ const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION; unsigned avcodec_version(void) { - static_assert(AV_CODEC_ID_LEAD == 269 && + static_assert(AV_CODEC_ID_DNXUC == 270 && AV_CODEC_ID_PCM_SGA == 65572 && AV_CODEC_ID_ADPCM_XMD == 69683 && AV_CODEC_ID_CBD2_DPCM == 81928 && From patchwork Fri Oct 4 21:07:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Schitter X-Patchwork-Id: 52057 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp673817vqg; Fri, 4 Oct 2024 14:19:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVEQxYgVy7WkGJ13jSHRwyK/B55x7wnniA6SrDSrrOFXTYkLHEV1ZUynL9kzw6RTsTeGRIZ0FJ3pVHXyeBmszZG@gmail.com X-Google-Smtp-Source: AGHT+IEY7eGlqCAhzZW3VH+iKpj5ijm1dmWblgMHY76zkWFhfySWtMl76GBuZueLN9XnnQ2b5dsd X-Received: by 2002:a17:907:e2a8:b0:a86:700f:93c0 with SMTP id a640c23a62f3a-a991bd49049mr375940466b.35.1728076749173; Fri, 04 Oct 2024 14:19:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728076749; cv=none; d=google.com; s=arc-20240605; b=EmHSBv2h7cFOJaqIOTlOwGFHf13DsXpIOpU+zvUKl1ihgUcvX55ElCmHAfIcVNqjf5 6G208XIpqEwsyGyOguC1751hj143CcXX0mcelgc+fDkczk1BxBvLmgEqY3HvJhKw/pD2 XxLp0bIDKyB7bNC/bWmLm4gaDdMCYP6C40Q+kx/xM/6tLOHefEo+H3F81H8b4WZOQMyv jg/DwDhpMaEGe6LoVr3+h9rW6P/cslyQYB9oa5WhUqsLEac10Nh1S7MTFG2Lq7L1nXcl 9QpJKlkoR8OPqXfPuChnL+td/uYn8rHlob3TukqIGDQnOdgBAY0EqbX52rJLx012gV2i J8lA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=OVJXPdcQxvE2QE4heFiPjG75T0HhAMRmm+q37bxYPWc=; fh=SY+A8HDvCKivsvOlugO0byaDvZLxc2A9PIXlqXmaPLE=; b=TJBX2kiyvLvc+lO3nLxxaRg+3SuQ38Z7Q7sCYR4gSkw9dKGMIn51+GbsZz5NpcJiZa 0LCzxB8ucy6OUYPLoIRxDjJQIUAixegUOp8AJVIpdKr4Mt3dIjs5meiiK/JNIZ0wK9of XcaOZDPL1i7g9LyyVwgmNTaGs86CWOHNeUvoZwzLV6uAUo8NIWGeqdgZllfCtmt3m0An aDoxxJbEoQDZh31FK8C8sVjjRdiUEW+AJhOFrK08krQQhHTi18ZzPXIEWFqa0Fl1ljd9 dP/vAieaga29FRWhKY5C6EvcC3HYot0pk1SCmLupHZgsCqN8m7+CPDxuvE9vkYqoaADr ld+g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@mur.at header.s=dkim2 header.b=jmqTyZ2Q; 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=NONE sp=NONE dis=NONE) header.from=mur.at Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a9937d13c7esi6482866b.970.2024.10.04.14.19.08; Fri, 04 Oct 2024 14:19:09 -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=@mur.at header.s=dkim2 header.b=jmqTyZ2Q; 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=NONE sp=NONE dis=NONE) header.from=mur.at Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8126F68DB0F; Sat, 5 Oct 2024 00:10:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from efeu.mur.at (efeu.mur.at [89.106.208.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3FCE368DAEF for ; Sat, 5 Oct 2024 00:10:50 +0300 (EEST) Received: from localhost.localdomain (lan1.raspi.ma39.ffgraz.net [10.12.1.243]) by efeu.mur.at (Postfix) with ESMTPSA id A5107461D8; Fri, 4 Oct 2024 23:10:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mur.at; s=dkim2; t=1728076242; bh=XNnUblzy4H7+qN9UcxWhzBh84hBIfd+gRlmxfiCeFEU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jmqTyZ2QCOvwhZDu8g2aX4RaWOw30crZUoI3IdifEJ7mpxIEqDwZ30krKa2sJy/Cg SrlIJs9lMoib9eZJ6YsrTYM1NwafCcOAqUJ0u12nuAMRyyIMsIDn1Nl87llHmgaQpk MIUIk4u+uAwj8GPMKpoKJUz1nhE9sPZdD/i9Lal3Yyf3Ojn7/iKFpG4geNLTQz6q9x qoX5H7wBR0dAPLALlIuG3L9NPWkayHKuaWXW5pzDf73QHHqyqWzBV457RsvBLNLi/3 ng2Qrp5z4hIPw70YY8QtKuS2RUvNQ+KQJu7IbrVX+q5XJYI9h3X4w2PTBfsrS/FWBG H9skwiZ7uS83IPL1BsqkFEFgBE9aHKWgWCO3Wx/7CFa5Fzp+1/LldZ2rcx06Kpnusx XMf2+4duUXNzKXOdzEmVLioahnBptTOOSJGGEr87ulk/61MG59jpdQ2aw++ah8Fdrg sn0OPqvMuXlSMe3/J3ZbyUKPTHBspAcCH6Ex6+FX5SOuO7r52VD From: Martin Schitter To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 Oct 2024 23:07:31 +0200 Message-ID: <20241004210734.3145612-4-ms+git@mur.at> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241004210734.3145612-2-ms+git@mur.at> References: <20241004210734.3145612-2-ms+git@mur.at> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v10 2/6] libavformat/mxf: Add ULs for DNxUncompressed 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: michael@niedermayer.cc, Martin Schitter Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ImQdvdWZwXt1 --- libavformat/mxf.c | 1 + libavformat/mxfdec.c | 1 + 2 files changed, 2 insertions(+) diff --git a/libavformat/mxf.c b/libavformat/mxf.c index a73e40e..b6c1f17 100644 --- a/libavformat/mxf.c +++ b/libavformat/mxf.c @@ -61,6 +61,7 @@ const MXFCodecUL ff_mxf_codec_uls[] = { { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x01,0x02,0x02,0x71,0x00,0x00,0x00 }, 13, AV_CODEC_ID_DNXHD }, /* SMPTE VC-3/DNxHD */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x01,0x02,0x02,0x03,0x02,0x00,0x00 }, 14, AV_CODEC_ID_DNXHD }, /* SMPTE VC-3/DNxHD */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x0E,0x04,0x02,0x01,0x02,0x04,0x01,0x00 }, 16, AV_CODEC_ID_DNXHD }, /* SMPTE VC-3/DNxHD Legacy Avid Media Composer MXF */ + { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0D,0x04,0x01,0x02,0x02,0x03,0x07,0x01,0x00 }, 14, AV_CODEC_ID_DNXUC }, /* DNxUncompressed/SMPTE RDD 50 */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x00,0x00 }, 14, AV_CODEC_ID_H264 }, /* H.264/MPEG-4 AVC Intra */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x31,0x11,0x01 }, 14, AV_CODEC_ID_H264 }, /* H.264/MPEG-4 AVC SPS/PPS in-band */ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x01,0x01,0x02,0x02,0x01 }, 16, AV_CODEC_ID_V210 }, /* V210 */ diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 1b53a97..e5f5908 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -1617,6 +1617,7 @@ static const MXFCodecUL mxf_picture_essence_container_uls[] = { { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000, NULL, 14, J2KWrap }, { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x10,0x60,0x01 }, 14, AV_CODEC_ID_H264, NULL, 15 }, /* H.264 */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00 }, 14, AV_CODEC_ID_DNXHD, NULL, 14 }, /* VC-3 */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x0d,0x01,0x03,0x01,0x02,0x1e,0x01,0x00 }, 14, AV_CODEC_ID_DNXUC, NULL, 14 }, /* DNxUncompressed / SMPTE RDD 50 */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x12,0x01,0x00 }, 14, AV_CODEC_ID_VC1, NULL, 14 }, /* VC-1 */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x14,0x01,0x00 }, 14, AV_CODEC_ID_TIFF, NULL, 14 }, /* TIFF */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x15,0x01,0x00 }, 14, AV_CODEC_ID_DIRAC, NULL, 14 }, /* VC-2 */ From patchwork Fri Oct 4 21:07:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Schitter X-Patchwork-Id: 52053 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp670789vqg; Fri, 4 Oct 2024 14:11:17 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUzEQzd0xsZ4al38FkWoau5/NoB4BDnrN7NyLH6O7F/+bGViHsI6NNxe0/efyQqui4GxTPn/Rh1cvUkT+mdKNbq@gmail.com X-Google-Smtp-Source: AGHT+IGuyTe+n5R7c8NGdCxHrxFLYcR28/djRHepQXt+VzNDDJoM2KJCNUAO2c3k+m6sP8isnNSP X-Received: by 2002:a2e:be28:0:b0:2fa:c8d1:224 with SMTP id 38308e7fff4ca-2faf3bffeb3mr27050041fa.2.1728076277191; Fri, 04 Oct 2024 14:11:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728076277; cv=none; d=google.com; s=arc-20240605; b=S0tloNMZE5yl4CxsiVibYLm6mU4zFShBDPhKw/EDaIQr4ai2u03MczaMDvzKrVchvH fiFJO8EToLOnaS60wyFfC+jOChGcHzFcSABQywuvGH0BkvjjflufciuYo/O8TFYMwVlL ClTMRpWoTEvW92OMiRrP+s5zyX0hM9xFkAA5y8AAb2qMDo3tLcUE3wx8OAB+WsW/wkzH 3Jg05IooASJiWOeZQ8rO5vYKn8sHgd/efyYLw0Pf28+JV+zXW/39EuOzvm4oVb0Kx9Y9 sEDGwSzXIp8vRnWHGQAlanlrPHkSkh51wQAOqHKToWUdDxGsFykzl/jrOMK3D1iOHkFG 9y5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=RhehLmyCNcBpoBTnvx0CgIBgxxRkn+AezXnvKXO0vI8=; fh=SY+A8HDvCKivsvOlugO0byaDvZLxc2A9PIXlqXmaPLE=; b=TEwrTPF7/r9NgAzwBnyUnYwtxBYJs6gjDJgvl+YmFZrH09yUpYF14ALg5pWhk/qVD8 Qb97oW8Q03y2KXXiZDxVi4VegEuPsnuRFRW0gmd2vo8f/PigOb6znuKOe2QGcF2QpcQC h7SLg/0QxhDamq5pkaxgt9bHxHg8WXypNjhkMbbWgS5GsZH2jCdQjaGlaglHcT1Glud8 JaADunNa91Qn9Xqc/PHe/cqt4PeiE4y4pNFiDEdIPebJM2fZp9PBxqIqtBlOZo9d74VP 6DPJas6NhdLQRlt5s8HMWg5sDQrCtldRSRiREL1Q2mSreVHq3cILTzn47ny8hEhRtpve 9/mQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@mur.at header.s=dkim2 header.b=PQRA75qZ; 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=NONE sp=NONE dis=NONE) header.from=mur.at Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2faf9b31e08si1654121fa.360.2024.10.04.14.11.16; Fri, 04 Oct 2024 14:11:17 -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=@mur.at header.s=dkim2 header.b=PQRA75qZ; 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=NONE sp=NONE dis=NONE) header.from=mur.at Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8E26168DB09; Sat, 5 Oct 2024 00:10:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from efeu.mur.at (efeu.mur.at [89.106.208.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3399D68DAE9 for ; Sat, 5 Oct 2024 00:10:50 +0300 (EEST) Received: from localhost.localdomain (lan1.raspi.ma39.ffgraz.net [10.12.1.243]) by efeu.mur.at (Postfix) with ESMTPSA id C1702461EB; Fri, 4 Oct 2024 23:10:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mur.at; s=dkim2; t=1728076242; bh=sqJ7HnsmJTVEfJ52cUHrVg6oCkXsT1LJrlwqsEvYQcY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PQRA75qZ+7HfPYwnHSvAqWFlzzc4G6MfMW6YfhS+3fY2BRlzpRdeNhXSMQTXS8eP+ Kv8jOdVHlGriyabSps3wpSHwW3pmPP+CAuM2n3oy6NZ4vCFH8hV9T1BaYbtoWLWBnt 5YxXSDBIEs0pIEq9D85qoGcpzLx6pdyEaSvQGZl7BUqrNxLwKiEEGunz9LHZiG5CbY 8s/iiMZ6kyLec3m3dEiH0fshcK01nN+3EkuySjyv+lhERHb+BWxOQlEi32Cl0WmZDZ gM2je8dN2EwkinsGOn2OhbedYvZh1ut9HHT9kEAoEXeAjmO0CzeL5UrCZmsLh97jQX o3xhj8iRmYBhnNyCdkgSbqDJrGgXrGvbCs8Nb+WZdXqzooM7LPB0a1IhZM0zUPMPCj 3RaGZ2X3N1vJeUPUU70kmkyoW/BnuroQT4rOZvhONqejEdJ25jsJ9ga4kQjws+3WNl +yXRhYRcngLOKaEi5/QOsb++wkx7E7NNvThXhbSsVk4Mego+q3a From: Martin Schitter To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 Oct 2024 23:07:32 +0200 Message-ID: <20241004210734.3145612-5-ms+git@mur.at> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241004210734.3145612-2-ms+git@mur.at> References: <20241004210734.3145612-2-ms+git@mur.at> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v10 3/6] libavcodec/dnxuc_parser: DNxUncompressed essence parser 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: michael@niedermayer.cc, Martin Schitter Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: iIrc2Pw355Bd --- libavcodec/Makefile | 1 + libavcodec/dnxuc_parser.c | 124 ++++++++++++++++++++++++++++++++++++++ libavcodec/parsers.c | 1 + 3 files changed, 126 insertions(+) create mode 100644 libavcodec/dnxuc_parser.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 4eed81e..81fc0a1 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1194,6 +1194,7 @@ OBJS-$(CONFIG_DCA_PARSER) += dca_parser.o dca_exss.o dca.o \ dca_sample_rate_tab.o OBJS-$(CONFIG_DIRAC_PARSER) += dirac_parser.o OBJS-$(CONFIG_DNXHD_PARSER) += dnxhd_parser.o dnxhddata.o +OBJS-$(CONFIG_DNXUC_PARSER) += dnxuc_parser.o OBJS-$(CONFIG_DOLBY_E_PARSER) += dolby_e_parser.o dolby_e_parse.o OBJS-$(CONFIG_DPX_PARSER) += dpx_parser.o OBJS-$(CONFIG_DVAUDIO_PARSER) += dvaudio_parser.o diff --git a/libavcodec/dnxuc_parser.c b/libavcodec/dnxuc_parser.c new file mode 100644 index 0000000..55d5763 --- /dev/null +++ b/libavcodec/dnxuc_parser.c @@ -0,0 +1,124 @@ +/* + * Avid DNxUncomressed / SMPTE RDD 50 parser + * Copyright (c) 2024 Martin Schitter + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + This parser for DNxUncompressed video data is mostly based on + reverse engineering of output generated by DaVinci Resolve 19 + but was later also checked against the SMPTE RDD 50 specification. + + Limitations: Multiple image planes are not supported. +*/ + +#include "avcodec.h" +#include "libavutil/intreadwrite.h" + +typedef struct DNxUcParseContext { + uint32_t fourcc_tag; + uint32_t width; + uint32_t height; + uint32_t nr_bytes; +} DNxUcParseContext; + +/* +DNxUncompressed frame data comes wrapped in nested boxes of metadata +(box structure: len + fourcc marker + data): + +[0-4] len of outer essence unit box (typically 37 bytes of header + frame data) +[4-7] fourcc 'pack' + +[8-11] len of "signal info box" (always 21) +[12-15] fourcc 'sinf' +[16-19] frame width / line packing size +[20-23] frame hight / nr of lines +[24-27] fourcc pixel format indicator +[28] frame_layout (0: progressive, 1: interlaced) + +[29-32] len of "signal data box" (nr of frame data bytes + 8) +[33-36] fourcc 'sdat' +[37-..] frame data + +A sequence of 'signal info'+'signal data' box pairs wrapped in +'icmp'(=image component) boxes can be utilized to compose more +complex multi plane images. +This feature is only partially supported in the present implementation. +We never pick more than the first pair of info and image data enclosed +in this way. +*/ + +static int dnxuc_parse(AVCodecParserContext *s, + AVCodecContext *avctx, + const uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size) +{ + char fourcc_buf[5]; + const int HEADER_SIZE = 37; + int icmp_offset = 0; + + DNxUcParseContext *pc; + pc = (DNxUcParseContext *) s->priv_data; + + if (!buf_size) { + return 0; + } + if (buf_size > 16 && MKTAG('i','c','m','p') == AV_RL32(buf+12)){ + icmp_offset += 8; + } + if ( buf_size < 37 + icmp_offset /* check metadata structure expectations */ + || MKTAG('p','a','c','k') != AV_RL32(buf+4+icmp_offset) + || MKTAG('s','i','n','f') != AV_RL32(buf+12+icmp_offset) + || MKTAG('s','d','a','t') != AV_RL32(buf+33+icmp_offset)){ + av_log(avctx, AV_LOG_ERROR, "can't read DNxUncompressed metadata.\n"); + *poutbuf_size = 0; + return buf_size; + } + + pc->fourcc_tag = AV_RL32(buf+24+icmp_offset); + pc->width = AV_RL32(buf+16+icmp_offset); + pc->height = AV_RL32(buf+20+icmp_offset); + pc->nr_bytes = AV_RL32(buf+29+icmp_offset) - 8; + + if (!avctx->codec_tag) { + av_fourcc_make_string(fourcc_buf, pc->fourcc_tag); + av_log(avctx, AV_LOG_INFO, "dnxuc_parser: '%s' %dx%d %dbpp %d\n", + fourcc_buf, + pc->width, pc->height, + (pc->nr_bytes*8)/(pc->width*pc->height), + pc->nr_bytes); + avctx->codec_tag = pc->fourcc_tag; + } + + if (pc->nr_bytes > buf_size - HEADER_SIZE + icmp_offset){ + av_log(avctx, AV_LOG_ERROR, "Insufficient size of image essence data.\n"); + *poutbuf_size = 0; + return buf_size; + } + + *poutbuf = buf + HEADER_SIZE + icmp_offset; + *poutbuf_size = pc->nr_bytes; + + return buf_size; +} + +const AVCodecParser ff_dnxuc_parser = { + .codec_ids = { AV_CODEC_ID_DNXUC }, + .priv_data_size = sizeof(DNxUcParseContext), + .parser_parse = dnxuc_parse, +}; diff --git a/libavcodec/parsers.c b/libavcodec/parsers.c index 5128009..8bfd2db 100644 --- a/libavcodec/parsers.c +++ b/libavcodec/parsers.c @@ -35,6 +35,7 @@ extern const AVCodecParser ff_cri_parser; extern const AVCodecParser ff_dca_parser; extern const AVCodecParser ff_dirac_parser; extern const AVCodecParser ff_dnxhd_parser; +extern const AVCodecParser ff_dnxuc_parser; extern const AVCodecParser ff_dolby_e_parser; extern const AVCodecParser ff_dpx_parser; extern const AVCodecParser ff_dvaudio_parser; From patchwork Fri Oct 4 21:07:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Schitter X-Patchwork-Id: 52054 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp670891vqg; Fri, 4 Oct 2024 14:11:36 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUJCSAMTJFZ5+H1O8h9r/SyCnxQ0HlOLcq/w41Nry0tFF6tj9TjDiRIJ32w++4ECc6hkjcHOMPjhnv3gCa4V+Br@gmail.com X-Google-Smtp-Source: AGHT+IF6T6+NGzPaaWZg/KqXWaRVXFqW7PJ4Nms1dZ6xDgjpAwbG9vICSOyo7meKM5owAkOsT0H/ X-Received: by 2002:a17:907:3da4:b0:a98:f6c9:fa28 with SMTP id a640c23a62f3a-a991bce41a6mr431506666b.5.1728076295806; Fri, 04 Oct 2024 14:11:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728076295; cv=none; d=google.com; s=arc-20240605; b=XAGP8YQeCzk/TuehNfRH6DPbDNKPy+AgOF+vIcIbvATUlhfX0Ao5ozjoRHezDHC083 KSy1DDkfNlVUoViYN4h8wJOjb6w/CUKEPvp4JkAk3UKfrAU3i5yddKqnPixBMekjRmKy 0Vr2E8xpucvPJgFMas8e/y5Ee17bsikwD9xoBTFN3qRyQd03D4Zg2ifHUsZmvncDd451 NSF9jr+sPQRf27XFjRqs3TFvPhE6oyCrJUiwuypCx/8i+Pw2Rh1+FX5ho1ls5NyAbHId kJTM7SVVe+FbyTRMd182BRCyeMu9AuduDPdyJLd5AJllZEtoGPZa8Kq21d37I1gHY2s1 w1NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=KtUOQxlfXjGnwUuj/Dshea33DQ0Vmyr5imI5I289jm8=; fh=SY+A8HDvCKivsvOlugO0byaDvZLxc2A9PIXlqXmaPLE=; b=GSeAhB2L2aUeSScqmz9CLrEJhuw4RrTK0fyghF2CNXXBsPM1Vd1THnfSGmwU3hgkyE PsONJJGII2PyPmffwmJefiSKPERKmcU5iBBEK5GAMv67rdS9KhZrS5N6JSdrgL8620w0 uz/SPC3tDLFspziPFR/ZPlRHDl6F3WqkXTVfzErjcaJlR5IoX+4eCMPgV94BZ/Zv67/9 6p64fmT9psIwKJH6uqYgIjriHr/iayAXRmkfn5o7JMklp3BIqr0g6oJARedZCjf4t9lQ w+AJmRkqCzVOZpQYvPoaDe3t9x/jVdup0nLEUg5tKajn/xNiLXqVHTqqjlws3ynqwx7f P9Ng==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@mur.at header.s=dkim2 header.b="C/P1IARH"; 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=NONE sp=NONE dis=NONE) header.from=mur.at Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a992e582fa4si43003266b.103.2024.10.04.14.11.35; Fri, 04 Oct 2024 14:11: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=@mur.at header.s=dkim2 header.b="C/P1IARH"; 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=NONE sp=NONE dis=NONE) header.from=mur.at Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C02A968DB32; Sat, 5 Oct 2024 00:11:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from efeu.mur.at (efeu.mur.at [89.106.208.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8421A68DB08 for ; Sat, 5 Oct 2024 00:10:52 +0300 (EEST) Received: from localhost.localdomain (lan1.raspi.ma39.ffgraz.net [10.12.1.243]) by efeu.mur.at (Postfix) with ESMTPSA id DFEC74620C; Fri, 4 Oct 2024 23:10:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mur.at; s=dkim2; t=1728076242; bh=e+wLh6NAHRFRZu9DkLNuKefsTSERJ5mlaTj98IXemX4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C/P1IARHepyE6pM+UFbi0DbDRMkmPYue2PX71pF3jOwp5Ha4rLDIfvJr5KxxAtMog rZMED1WRxbTgSX6/QKzckOjH8XP5pj9b82+8vq/N3oImalQRxlzyRHfRDhQ3MI/htC vUH5vvfsxmJfzUukzA88uYwn4Q0dIKnObkTJlpEKeoK5mey/EnWbmjWQt2F1S5bNC0 sckNWy11Ipil7/4H8aioZJu3chqy+nlcN3Jawx8W0vFJNECsM3t9Uxg8oNRUaEKTqA nqENmKANS0Lz/nIaph48f14rnrByvLlCkAVsLMgn8WopzTXRkfcRkN1BvrbpjbUY6f Z4TMlEw5Kz7kZqqaKbZ7mHdEAMWzbetfbavWboiZn+jkQnhHATTb8suFyUcScVtq8Y axTXRX0/TnIQ5Yv1G2reaRcDsO3vj57k8ujcb51WkMAzOn9BauYG3500zt3cr6S80a Jlqm026H0OvLo/rnMjzlLYaVg0eff5S1cTshntsEyLyheh/8cHR From: Martin Schitter To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 Oct 2024 23:07:33 +0200 Message-ID: <20241004210734.3145612-6-ms+git@mur.at> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241004210734.3145612-2-ms+git@mur.at> References: <20241004210734.3145612-2-ms+git@mur.at> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v10 4/6] libavcodec/dnxucdec: DNxUncompressed decoder 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: michael@niedermayer.cc, Martin Schitter Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: UitjWoWnA4Ha --- libavcodec/Makefile | 1 + libavcodec/allcodecs.c | 1 + libavcodec/dnxucdec.c | 385 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 387 insertions(+) create mode 100644 libavcodec/dnxucdec.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 81fc0a1..251b826 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -327,6 +327,7 @@ OBJS-$(CONFIG_DFPWM_DECODER) += dfpwmdec.o OBJS-$(CONFIG_DFPWM_ENCODER) += dfpwmenc.o OBJS-$(CONFIG_DNXHD_DECODER) += dnxhddec.o dnxhddata.o OBJS-$(CONFIG_DNXHD_ENCODER) += dnxhdenc.o dnxhddata.o +OBJS-$(CONFIG_DNXUC_DECODER) += dnxucdec.o OBJS-$(CONFIG_DOLBY_E_DECODER) += dolby_e.o dolby_e_parse.o kbdwin.o OBJS-$(CONFIG_DPX_DECODER) += dpx.o OBJS-$(CONFIG_DPX_ENCODER) += dpxenc.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index aa0fc47..d6ab5f0 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -93,6 +93,7 @@ extern const FFCodec ff_dfa_decoder; extern const FFCodec ff_dirac_decoder; extern const FFCodec ff_dnxhd_encoder; extern const FFCodec ff_dnxhd_decoder; +extern const FFCodec ff_dnxuc_decoder; extern const FFCodec ff_dpx_encoder; extern const FFCodec ff_dpx_decoder; extern const FFCodec ff_dsicinvideo_decoder; diff --git a/libavcodec/dnxucdec.c b/libavcodec/dnxucdec.c new file mode 100644 index 0000000..f28e935 --- /dev/null +++ b/libavcodec/dnxucdec.c @@ -0,0 +1,385 @@ +/* + * Avid DNxUncomressed / SMPTE RDD 50 decoder + * Copyright (c) 2024 Martin Schitter + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + This decoder for DNxUncompressed video data is mostly based on + reverse engineering of output generated by DaVinci Resolve 19 + but was later also checked against the SMPTE RDD 50 specification. + + Not all DNxUncompressed pixel format variants are supported, + but at least an elementary base set is already usable: + + - YUV 4:2:2 8/10/12bit + - RGB 8/10/12bit/half/float + +*/ + +#include "avcodec.h" +#include "codec_internal.h" +#include "decode.h" +#include "libavutil/imgutils.h" +#include "libavutil/intreadwrite.h" +#include "thread.h" + +static int pass_though(AVCodecContext *avctx, AVFrame *frame, const AVPacket *avpkt) +{ + /* there is no need to copy as the data already match + * a known pixel format */ + + frame->buf[0] = av_buffer_ref(avpkt->buf); + + if (!frame->buf[0]) { + return AVERROR(ENOMEM); + } + + return av_image_fill_arrays(frame->data, frame->linesize, avpkt->data, + avctx->pix_fmt, avctx->width, avctx->height, 1); +} + +static int float2planes(AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt) +{ + int lw; + const size_t sof = 4; + + lw = frame->width; + + for(int y = 0; y < frame->height; y++){ + for(int x = 0; x < frame->width; x++){ + memcpy(&frame->data[2][sof*(lw*y + x)], &pkt->data[sof* 3*(lw*y + x)], sof); + memcpy(&frame->data[0][sof*(lw*y + x)], &pkt->data[sof*(3*(lw*y + x) + 1)], sof); + memcpy(&frame->data[1][sof*(lw*y + x)], &pkt->data[sof*(3*(lw*y + x) + 2)], sof); + } + } + return pkt->size; +} + +static int half_add_alpha(AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt) +{ + /* ffmpeg doesn't provide RGB half bit depth without alpha channel right now + * we simply add an opaque alpha layer as workaround */ + + int lw; + const size_t soh = 2; + const uint16_t opaque = 0x3c00; + + lw = frame->width; + + for(int y = 0; y < frame->height; y++){ + for(int x = 0; x < frame->width; x++){ + memcpy(&frame->data[0][soh*4*(lw*y + x)], &pkt->data[soh*3*(lw*y + x)], soh*3); + memcpy(&frame->data[0][soh*(4*(lw*y + x) + 3)], &opaque, soh); + } + } + return pkt->size; +} + +/* DNxUncompressed utilizes a very dense bitpack representation of 10bit and 12bit pixel data. + +Lines of Image data, which look like in their ordinary 8bit counterpart, contain the most +significant upper bits of the pixel data. These sections alternate with shorter segments in +which the complementary least significant bits of information get packed in a gapless sequence. + ++----------------------+ +----------------------+ +------------------------+ +----------~ +| 8 m.s.bits of R[1] | | 8 m.s.bits of G[1] | | 8 m.s.bits of B[1] | | msb R[2] ... one line ++----------------------+ +----------------------+ +------------------------+ +----------~ + ++---------------------------------------------------------------+ +-----------~ +| +------------+ +------------+ +------------+ +--------------+ | | +--------~ +| | 2 lsb R[2] | | 2 lsb B[1] | | 2 lsb G[1] | | 2 lsb R[1] | | | | G[3]lsb ... LSB bits for line +| +------------+ +------------+ +------------+ +--------------+ | | +--------~ ++---------------------------- one byte ------------------------ + +-----------~ + +next line of MSB bytes... */ + +static int unpack_rg10(AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt) +{ + int lw, msp, pack, lsp, p_off; + uint16_t r,g,b; + + lw = frame->width; + + for(int y = 0; y < frame->height; y++){ + for(int x = 0; x < frame->width; x++){ + msp = pkt->data[y*3*(lw + lw/4) + 3*x]; + p_off = y*(3*(lw + lw/4)) + 3*lw + 3*x/4; + pack = pkt->data[p_off]; + lsp = (pack >> (3*x%4)*2) & 0x3; + r = (msp << 2) + lsp; + // av_log(0, AV_LOG_DEBUG, "r: %04x, %02x, %02x, %02x, %d\n", + // r, msp, lsp, pack, p_off); + + msp = pkt->data[y*3*(lw + lw/4) + 3*x + 1]; + p_off = y*(3*(lw + lw/4)) + 3*lw + (3*x+1)/4; + pack = pkt->data[p_off]; + lsp = (pack >> ((3*x+1)%4)*2) & 0x3; + g = (msp << 2) + lsp; + // av_log(0, AV_LOG_DEBUG, "g: %04x, %02x, %02x, %02x, %d\n", + // g, msp, lsp, pack, p_off); + + msp = pkt->data[y*3*(lw + lw/4) + 3*x + 2]; + p_off = y*(3*(lw + lw/4)) + 3*lw + (3*x+2)/4; + pack = pkt->data[p_off]; + lsp = (pack >> ((3*x+2)%4)*2) & 0x3; + b = (msp << 2) + lsp; + // av_log(0, AV_LOG_DEBUG, "b: %04x, %02x, %02x, %02x, %d\n\n", + // b, msp, lsp, pack, p_off); + + AV_WL16(&frame->data[2][2*(y*lw + x)], r); + AV_WL16(&frame->data[0][2*(y*lw + x)], g); + AV_WL16(&frame->data[1][2*(y*lw + x)], b); + } + } + return pkt->size; +} + +static int unpack_rg12(AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt) +{ + int lw, msp, pack, lsp, p_off; + uint16_t r,g,b; + + lw = frame->width; + + for(int y = 0; y < frame->height; y++){ + for(int x = 0; x < frame->width; x++){ + msp = pkt->data[y*3*(lw + lw/2) + 3*x]; + p_off = y*(3*(lw + lw/2)) + 3*lw + 3*x/2; + pack = pkt->data[p_off]; + lsp = (pack >> (3*x%2)*4) & 0xf; + r = (msp << 4) + lsp; + // av_log(0, AV_LOG_DEBUG, "r: %04x, %02x, %02x, %02x, %d\n", + // r, msp, lsp, pack, p_off); + + msp = pkt->data[y*3*(lw + lw/2) + 3*x + 1]; + p_off =y*(3*(lw + lw/2)) + 3*lw + (3*x+1)/2; + pack = pkt->data[p_off]; + lsp = (pack >> ((3*x+1)%2)*4) & 0xf; + g = (msp << 4) + lsp; + // av_log(0, AV_LOG_DEBUG, "g: %04x, %02x, %02x, %02x, %d\n", + // g, msp, lsp, pack, p_off); + + msp = pkt->data[y*3*(lw + lw/2) + 3*x + 2]; + p_off = y*(3*(lw + lw/2)) + 3*lw + (3*x+2)/2; + pack = pkt->data[p_off]; + lsp = (pack >> ((3*x+2)%2)*4) & 0xf; + b = (msp << 4) + lsp; + // av_log(0, AV_LOG_DEBUG, "b: %04x, %02x, %02x, %02x, %d\n\n", + // b, msp, lsp, pack, p_off); + + AV_WL16(&frame->data[2][2*(y*lw + x)], r); + AV_WL16(&frame->data[0][2*(y*lw + x)], g); + AV_WL16(&frame->data[1][2*(y*lw + x)], b); + } + } + return pkt->size; +} + + +static int unpack_y210(AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt) +{ + int lw, msp, pack, lsp, p_off; + uint16_t y1, y2, u, v; + + lw = frame->width; + + for(int y = 0; y < frame->height; y++){ + for(int x = 0; x < frame->width; x += 2){ + + p_off = y*(2*(lw + lw/4)) + 2*lw + x/2; + pack = pkt->data[p_off]; + + msp = pkt->data[y*2*(lw + lw/4) + 2*x]; + lsp = pack & 0x3; + u = (msp << 2) + lsp; + // av_log(0, AV_LOG_DEBUG, " u: %04x, %02x, %02x, %02x, %d\n", + // u, msp, lsp, pack, p_off); + + msp = pkt->data[y*2*(lw + lw/4) + 2*x + 1]; + lsp = (pack >> 2) & 0x3; + y1 = (msp << 2) + lsp; + // av_log(0, AV_LOG_DEBUG, "y1: %04x, %02x, %02x, %02x, %d\n", + // y1, msp, lsp, pack, p_off); + + msp = pkt->data[y*2*(lw + lw/4) + 2*x + 2]; + lsp = (pack >> 4) & 0x3; + v = (msp << 2) + lsp; + // av_log(0, AV_LOG_DEBUG, " v: %04x, %02x, %02x, %02x, %d\n", + // v, msp, lsp, pack, p_off); + + msp = pkt->data[y*2*(lw + lw/4) + 2*x + 3]; + lsp = (pack >> 6) & 0x3; + y2 = (msp << 2) + lsp; + // av_log(0, AV_LOG_DEBUG, "y2: %04x, %02x, %02x, %02x, %d\n\n", + // y2, msp, lsp, pack, p_off); + + AV_WL16(&frame->data[0][2*(y*lw + x)], y1); + AV_WL16(&frame->data[0][2*(y*lw + x+1)], y2); + AV_WL16(&frame->data[1][2*(y*lw/2 + x/2)], u); + AV_WL16(&frame->data[2][2*(y*lw/2 + x/2)], v); + } + } + return pkt->size; +} + + +static int unpack_y212(AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt) +{ + int lw, msp, pack, lsp, p_off; + uint16_t y1, y2, u, v; + + lw = frame->width; + + for(int y = 0; y < frame->height; y++){ + for(int x = 0; x < frame->width; x += 2){ + + p_off = y*(2*(lw + lw/2)) + 2*lw + x; + pack = pkt->data[p_off]; + + msp = pkt->data[y*2*(lw + lw/2) + 2*x]; + lsp = pack & 0xf; + u = (msp << 4) + lsp; + // av_log(0, AV_LOG_DEBUG, " u: %04x, %02x, %02x, %02x, %d\n", + // u, msp, lsp, pack, p_off); + + msp = pkt->data[y*2*(lw + lw/2) + 2*x + 1]; + lsp = (pack >> 4) & 0xf; + y1 = (msp << 4) + lsp; + // av_log(0, AV_LOG_DEBUG, "y1: %04x, %02x, %02x, %02x, %d\n", + // y1, msp, lsp, pack, p_off); + + p_off = y*(2*(lw + lw/2)) + 2*lw + x+1; + pack = pkt->data[p_off]; + + msp = pkt->data[y*2*(lw + lw/2) + 2*x + 2]; + lsp = pack & 0xf; + v = (msp << 4) + lsp; + // av_log(0, AV_LOG_DEBUG, " v: %04x, %02x, %02x, %02x, %d\n", + // v, msp, lsp, pack, p_off); + + msp = pkt->data[y*2*(lw + lw/2) + 2*x + 3]; + lsp = (pack >> 4) & 0xf; + y2 = (msp << 4) + lsp; + // av_log(0, AV_LOG_DEBUG, "y2: %04x, %02x, %02x, %02x, %d\n\n", + // y2, msp, lsp, pack, p_off); + + AV_WL16(&frame->data[0][2*(y*lw + x)], y1); + AV_WL16(&frame->data[0][2*(y*lw + x+1)], y2); + AV_WL16(&frame->data[1][2*(y*lw/2 + x/2)], u); + AV_WL16(&frame->data[2][2*(y*lw/2 + x/2)], v); + } + } + return pkt->size; +} + +static int check_pkt_size(AVCodecContext *avctx, AVPacket *avpkt, int bpp) +{ + int needed = ((avctx->width * bpp + 7) / 8) * avctx->height; + if (avpkt->size < needed){ + av_log(avctx, AV_LOG_ERROR, + "Insufficient size of AVPacket data (pkg size: %d needed: %d)\n", avpkt->size, needed); + return AVERROR_INVALIDDATA; + } + return 0; +} + +static int fmt_frame(AVCodecContext *avctx, AVFrame *frame, AVPacket *avpkt, + enum AVPixelFormat pix_fmt, int src_bpp, + int (*frame_handler)(AVCodecContext *avctx, AVFrame *frame, const AVPacket *avpkt)) +{ + int ret; + avctx->pix_fmt = pix_fmt; + + ret = check_pkt_size(avctx, avpkt, src_bpp); + if (ret) + return ret; + + ret = ff_thread_get_buffer(avctx, frame, 0); + if (ret < 0) + return ret; + + return frame_handler(avctx, frame, avpkt); +} + +static int dnxuc_decode_frame(AVCodecContext *avctx, AVFrame *frame, + int *got_frame, AVPacket *avpkt) +{ + char fourcc_buf[5]; + int ret; + + av_fourcc_make_string(fourcc_buf, avctx->codec_tag); + if ((avctx->width % 2) && ((fourcc_buf[0] == 'y' && fourcc_buf[1] == '2') + ||(fourcc_buf[1] == 'y' && fourcc_buf[2] == '2'))){ + av_log(avctx, AV_LOG_ERROR, + "Image width must be a multiple of 2 for YUV 4:2:2 DNxUncompressed!\n"); + return AVERROR_INVALIDDATA; + } + + switch (avctx->codec_tag) { + case MKTAG('r','g','0','8'): + ret = fmt_frame(avctx, frame, avpkt, AV_PIX_FMT_RGB24, 24, pass_though); + break; + case MKTAG('r','g','1','0'): + ret = fmt_frame(avctx, frame, avpkt, AV_PIX_FMT_GBRP10LE, 30, unpack_rg10); + break; + case MKTAG('r','g','1','2'): + ret = fmt_frame(avctx, frame, avpkt, AV_PIX_FMT_GBRP12LE, 36, unpack_rg12); + break; + case MKTAG(' ','r','g','h'): + ret = fmt_frame(avctx, frame, avpkt, AV_PIX_FMT_RGBAF16LE, 48, half_add_alpha); + break; + case MKTAG(' ','r','g','f'): + ret = fmt_frame(avctx, frame, avpkt, AV_PIX_FMT_GBRPF32LE, 96, float2planes); + break; + + case MKTAG('y','2','0','8'): + ret = fmt_frame(avctx, frame, avpkt, AV_PIX_FMT_UYVY422, 16, pass_though); + break; + case MKTAG('y','2','1','0'): + ret = fmt_frame(avctx, frame, avpkt, AV_PIX_FMT_YUV422P10LE, 20, unpack_y210); + break; + case MKTAG('y','2','1','2'): + ret = fmt_frame(avctx, frame, avpkt, AV_PIX_FMT_YUV422P12LE, 24, unpack_y212); + break; + + default: + av_log(avctx, AV_LOG_ERROR, + "Unsupported DNxUncompressed pixel format variant: '%s'\n", + fourcc_buf); + return AVERROR_PATCHWELCOME; + } + + if (ret < 0) { + av_buffer_unref(&frame->buf[0]); + return ret; + } + + *got_frame = 1; + + return avpkt->size; +} + +const FFCodec ff_dnxuc_decoder = { + .p.name = "dnxuc", + CODEC_LONG_NAME("DNxUncompressed (SMPTE RDD 50)"), + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_DNXUC, + FF_CODEC_DECODE_CB(dnxuc_decode_frame), + .p.capabilities = AV_CODEC_CAP_FRAME_THREADS, +}; From patchwork Fri Oct 4 21:07:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Schitter X-Patchwork-Id: 52055 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp670949vqg; Fri, 4 Oct 2024 14:11:49 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXvreWmyvTojJ0lE48joIvz7O2SUzS8jOQfpi22PAMcVImYjXSuAaGhJH1tK4YhJGbQIZ4Efp3jONrIlr0agc58@gmail.com X-Google-Smtp-Source: AGHT+IHlGjkPfin8U6t/utzPO6opEPun7fTVONvuRMozaKetiXp5B7qhlHSQzPxUoVV+aB6FaFNd X-Received: by 2002:a05:6512:1320:b0:535:6480:707d with SMTP id 2adb3069b0e04-539a627c2dfmr2587455e87.19.1728076308588; Fri, 04 Oct 2024 14:11:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728076308; cv=none; d=google.com; s=arc-20240605; b=R4xWNmlQhsoub/xCcUT5tOS0iszseH3e95M6PS2f8lQmLgs1X0+mL3NhwYvcvUuUcv GibrgIgTvTiuzYrrFu+zuuWETPhwz0Kiy+thfqJKwfATfSvObgeKTCSq3JnL6sKwzIwf 5+MHT+1NDqouBjsdKqmipu612o2X/6SJ8OHKNHoxKXx2yuX15elWtS0CU3sBEVldrwzk P/k73yXPp4qZvPJfJ46wHvnHs/T2LWKVnWo+fGMro7p5cCzdl4e/9bEVXxr61AAP36Rj TNhGTHS20woe1ijNfyJwR4wLgIuak6F34L3tuDhuYP2Ab1X6Eg8jKRPKQQBbeu1NsVmv ufGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=5kz4KEVZXGAIajsW0kdNS7XSt2CQDwfQ3TYfYeMEeDM=; fh=SY+A8HDvCKivsvOlugO0byaDvZLxc2A9PIXlqXmaPLE=; b=bEzko93OP1Nou41Eel3GvKjrGxgvyVpW3fPxSti4lwZlxCq3SrlOPQYlWfcNECvuAJ PKQKLZlfKzi/xeZ8k1jWtroqFYIzjEg/2/9MwexXxFuZJcbcMwfkVgPgG5CghTXUhDVp BAM3YxeDYG1BdvDJnLBGAs4RSepNDxxHhmyIq1MO3jSRcUelirYSnRndhjmtivISCE8Q yGRIQwUdwqln5qRei8AISbBt2cnQ3bxEy6nUxh6ZamJC8hVp3XzcvzvUsFTjq/H7WxXT VT0zc0NZYMMAIYERop4lE4Njk5I0RG409No68zv9HdFgMaJDZhWf0iZx1Wt26D/CSMnK RH+Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@mur.at header.s=dkim2 header.b=ESOr4glv; 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=NONE sp=NONE dis=NONE) header.from=mur.at Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2faf9b5ed27si1689161fa.644.2024.10.04.14.11.46; Fri, 04 Oct 2024 14:11:48 -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=@mur.at header.s=dkim2 header.b=ESOr4glv; 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=NONE sp=NONE dis=NONE) header.from=mur.at Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 48A7568DB43; Sat, 5 Oct 2024 00:11:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from efeu.mur.at (efeu.mur.at [89.106.208.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8408068DB00 for ; Sat, 5 Oct 2024 00:10:52 +0300 (EEST) Received: from localhost.localdomain (lan1.raspi.ma39.ffgraz.net [10.12.1.243]) by efeu.mur.at (Postfix) with ESMTPSA id 0F3FF46214; Fri, 4 Oct 2024 23:10:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mur.at; s=dkim2; t=1728076243; bh=cWxO1osY4ltQzqePKp9f39Oe7A6G64noRBHsSlWIJ7M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ESOr4glvZ8xnXbuGWKTpBWl98gcPxEtgKaTs8VvfLo/xh9ZDNJJujM2BpCUUewvz2 08JzMVhk+jhRqcAi8mk+36kOmS4xHU32K9s679PIYAHIi4oCwjadxqwDl4DQ4KRhoG BYdJwaY9mlMVQEx3ch1xzZJ1skaDft/jrcdGe8xAp8+PDr0hbqKal/uHfbaW8SeN8e JdW0iN3Qt23IvkkdSJEfk220pOqzOkEVTkRsdBZ4M7D/MYe/GuOXLB/22OonsqaoOs Feu74H7Gkpv2QYSHz1yhqcwLAR8NckX4iNxAe1en4JE54voAjhHPA98Xv035VP1cxj SC1jO3KeGkT9PsxhXXmYuShuCMMO8vvTrAgceDPthie3nG8fMT+VhDqDYWFGyqfmec BxZQeoRl+EkUX3b1ybj4z+Ys9o9HSUpsJ0cplfFAWCQO05w09U6e/ueC22eNq7wzDr F56JhObDM6mfs9x5V635NtsS6c1Wyw7BI+QjXbOt/6DAGthM4t1 From: Martin Schitter To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 Oct 2024 23:07:34 +0200 Message-ID: <20241004210734.3145612-7-ms+git@mur.at> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241004210734.3145612-2-ms+git@mur.at> References: <20241004210734.3145612-2-ms+git@mur.at> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v10 5/6] doc: DNxUncompressed Changelog and doc entries 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: michael@niedermayer.cc, Martin Schitter Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: XZXbLISMY2Vf --- Changelog | 2 ++ doc/general_contents.texi | 1 + 2 files changed, 3 insertions(+) diff --git a/Changelog b/Changelog index b82b948..41632ba 100644 --- a/Changelog +++ b/Changelog @@ -2,6 +2,8 @@ Entries are sorted chronologically from oldest to youngest within each release, releases are sorted from youngest to oldest. version : +- DNxUncompressed (SMPTE RDD 50) decoder + version 7.1: - Raw Captions with Time (RCWT) closed caption demuxer diff --git a/doc/general_contents.texi b/doc/general_contents.texi index 5980ac6..76e1d34 100644 --- a/doc/general_contents.texi +++ b/doc/general_contents.texi @@ -632,6 +632,7 @@ library: @item raw DFPWM @tab X @tab X @item raw Dirac @tab X @tab X @item raw DNxHD @tab X @tab X +@item raw DNxUncompressed @tab @tab X @item raw DTS @tab X @tab X @item raw DTS-HD @tab @tab X @item raw E-AC-3 @tab X @tab X From patchwork Fri Oct 4 21:07:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Schitter X-Patchwork-Id: 52058 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp677180vqg; Fri, 4 Oct 2024 14:29:05 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWR5gCxgpBgVEvJ/WxulGqaU7rxWdj+oHvHfnTrhM+hYENpJYdgO9gCZtKJMKgr2qv5Px4hvX1gmdqiZQFGycRD@gmail.com X-Google-Smtp-Source: AGHT+IGotPom+2WBVFiUVl909TllEQY5r1PjA0mH2GxR6AxUf93jjQ9SvJJXEx2JPN8Cevcoyz04 X-Received: by 2002:a05:6402:3582:b0:5c5:c4b1:883c with SMTP id 4fb4d7f45d1cf-5c8d2dfd5edmr2412550a12.4.1728077344673; Fri, 04 Oct 2024 14:29:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728077344; cv=none; d=google.com; s=arc-20240605; b=KDcJ8wT/QSotPgSAoamNcBg4L4uOWJzZgZVg3R7rF5Zbm6MkstU45LffipZsfL01Yt qVZQX565rhobHzLrfvX1XiLkpGC2MEtukrKWKbYUQR105kV+VSzr0SAf8nUeui+AMzqy N3o/tq+3lO67tKugE9KuNUe+rBoGzplV3ehCDl7U+0p24yJ+yGSR3pNpdfpQwoK/nhXw 0z4aOX+6K2oF6nfDe49AuQJuAYGITvH0UgD2gf+VxCZKuGFtZ6Eo7zMbG1WUvcRybYgn YR02Jqj6tIYJr1alj76A+LqA/nP99EVEUx5g5lQHAP8jkiD0Yx19eWaoS9lxCcfCjN+O 5hpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=pey2AwJ+DsxmADe7OqPy4+dVP0EbUo6BC8VSyMfbzMk=; fh=SY+A8HDvCKivsvOlugO0byaDvZLxc2A9PIXlqXmaPLE=; b=Bhg6XoUVh3vwYEoAjyXbTKzaa4t/9kAf18nN2lM9RL+g3g7eiaTW0nBS+zbSigaC8p PvGUJCQdULXYHyS4yZvUgdK09OSSrl/kV8IpnSHpAwFWke5Or3zxpLtZh1XYnfRK1l04 oRiK/x4tPPIpnxi8PxCSwixqv6Wk3Xk6ueFJWY9OQs4/3DxxK+Jnbnv7J8hxfF33ssvq isnG4adtyeErbl6LsP0vE0xSbwPhBSKJm1CYJv1V7HAti2E5BUB+SRPRD9okKd3KQF0q hwwx4ckIRLnoS9io/QYwyvdweKuOn0kRVJX8SjMsXaFvbTZIixH1Vu0k9jtqNnQ6EY3h ULug==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@mur.at header.s=dkim2 header.b=lOALgMOK; 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=NONE sp=NONE dis=NONE) header.from=mur.at Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5c8e05a27f6si365607a12.142.2024.10.04.14.29.04; Fri, 04 Oct 2024 14:29:04 -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=@mur.at header.s=dkim2 header.b=lOALgMOK; 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=NONE sp=NONE dis=NONE) header.from=mur.at Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7FD1D68DB6A; Sat, 5 Oct 2024 00:11:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from efeu.mur.at (efeu.mur.at [89.106.208.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 26C6B68DB5D for ; Sat, 5 Oct 2024 00:10:59 +0300 (EEST) Received: from localhost.localdomain (lan1.raspi.ma39.ffgraz.net [10.12.1.243]) by efeu.mur.at (Postfix) with ESMTPSA id 3906446219; Fri, 4 Oct 2024 23:10:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mur.at; s=dkim2; t=1728076243; bh=Rn86jL2r2TdU2N7aIViIEKKnXO5wma1k7Fpc7CAQuMU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lOALgMOKCzKwXU3YgDJi3EEcPLy1rF0LYi1WbApe/mfL6gZEZMS4AcwfBSX8t0OJJ gunoaAeYmah1qtYLejAxLYP6vH9bVzy+cQ8Rls1/DIll4YVwhCJJ4jmLGKu8BLwkQa cze6LCXvmlnNmiVFBkqRuSdcDxaXHJz83ETe3x2MOX+qKhIDw8WufyAPYkzNbbM7dC vdVQwnHtg2NynAfFFHp8HfutMFIupuJgG21zL0iyNL2aOmchayazpi079XxwtnmXwZ fXqCwLvAbDYpja85A8WUPZIfRfSwuQ5h0PnSc2KSIV4xzFfAF5k5hGiTCcx/vX/VUF zYZVnmVMnYcJ0MIvAgHk3wvfe/Ftn2hikGEfWBvmQUHKXPhWVdZLJGw4kuOfLlmgeo nC/NR001XhmTgDEKzyaJ73RUKtw1Ex94elrnxMEGJ1l2R/4GbIzkrezALq8Xr+bRnR xQH9colcvyZ7SUHZcYAHI+EeTOlYYbZTOqyfZlg5jUphcaoyBTj From: Martin Schitter To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 Oct 2024 23:07:35 +0200 Message-ID: <20241004210734.3145612-8-ms+git@mur.at> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241004210734.3145612-2-ms+git@mur.at> References: <20241004210734.3145612-2-ms+git@mur.at> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v10 6/6] tests: Fate sample tests for DNxUncompressed 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: michael@niedermayer.cc, Martin Schitter Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: fLSUd5FV/PGq --- tests/Makefile | 1 + tests/fate/dnxuc.mak | 40 +++++++++++++++++++++++++++++ tests/ref/fate/dnxuc-cb-rgb-10 | 8 ++++++ tests/ref/fate/dnxuc-cb-rgb-12 | 8 ++++++ tests/ref/fate/dnxuc-cb-rgb-8 | 8 ++++++ tests/ref/fate/dnxuc-cb-rgb-float | 8 ++++++ tests/ref/fate/dnxuc-cb-rgb-half | 8 ++++++ tests/ref/fate/dnxuc-cb-yuv422-10 | 8 ++++++ tests/ref/fate/dnxuc-cb-yuv422-12 | 8 ++++++ tests/ref/fate/dnxuc-cb-yuv422-8 | 8 ++++++ tests/ref/fate/dnxuc-ramp-rgb-10 | 8 ++++++ tests/ref/fate/dnxuc-ramp-rgb-12 | 8 ++++++ tests/ref/fate/dnxuc-ramp-rgb-8 | 8 ++++++ tests/ref/fate/dnxuc-ramp-rgb-float | 8 ++++++ tests/ref/fate/dnxuc-ramp-rgb-half | 8 ++++++ tests/ref/fate/dnxuc-ramp-yuv422-10 | 8 ++++++ tests/ref/fate/dnxuc-ramp-yuv422-12 | 8 ++++++ tests/ref/fate/dnxuc-ramp-yuv422-8 | 8 ++++++ 18 files changed, 169 insertions(+) create mode 100644 tests/fate/dnxuc.mak create mode 100644 tests/ref/fate/dnxuc-cb-rgb-10 create mode 100644 tests/ref/fate/dnxuc-cb-rgb-12 create mode 100644 tests/ref/fate/dnxuc-cb-rgb-8 create mode 100644 tests/ref/fate/dnxuc-cb-rgb-float create mode 100644 tests/ref/fate/dnxuc-cb-rgb-half create mode 100644 tests/ref/fate/dnxuc-cb-yuv422-10 create mode 100644 tests/ref/fate/dnxuc-cb-yuv422-12 create mode 100644 tests/ref/fate/dnxuc-cb-yuv422-8 create mode 100644 tests/ref/fate/dnxuc-ramp-rgb-10 create mode 100644 tests/ref/fate/dnxuc-ramp-rgb-12 create mode 100644 tests/ref/fate/dnxuc-ramp-rgb-8 create mode 100644 tests/ref/fate/dnxuc-ramp-rgb-float create mode 100644 tests/ref/fate/dnxuc-ramp-rgb-half create mode 100644 tests/ref/fate/dnxuc-ramp-yuv422-10 create mode 100644 tests/ref/fate/dnxuc-ramp-yuv422-12 create mode 100644 tests/ref/fate/dnxuc-ramp-yuv422-8 diff --git a/tests/Makefile b/tests/Makefile index 9b70145..e073915 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -172,6 +172,7 @@ include $(SRC_PATH)/tests/fate/dca.mak include $(SRC_PATH)/tests/fate/demux.mak include $(SRC_PATH)/tests/fate/dfa.mak include $(SRC_PATH)/tests/fate/dnxhd.mak +include $(SRC_PATH)/tests/fate/dnxuc.mak include $(SRC_PATH)/tests/fate/dpcm.mak include $(SRC_PATH)/tests/fate/dvvideo.mak include $(SRC_PATH)/tests/fate/ea.mak diff --git a/tests/fate/dnxuc.mak b/tests/fate/dnxuc.mak new file mode 100644 index 0000000..80ff0e9 --- /dev/null +++ b/tests/fate/dnxuc.mak @@ -0,0 +1,40 @@ +FATE_DNXUC_CB = fate-dnxuc-cb-rgb-8 \ + fate-dnxuc-cb-rgb-10 \ + fate-dnxuc-cb-rgb-12 \ + fate-dnxuc-cb-rgb-half \ + fate-dnxuc-cb-rgb-float \ + fate-dnxuc-cb-yuv422-8 \ + fate-dnxuc-cb-yuv422-10 \ + fate-dnxuc-cb-yuv422-12 + +FATE_DNXUC_RAMP = fate-dnxuc-ramp-rgb-8 \ + fate-dnxuc-ramp-rgb-10 \ + fate-dnxuc-ramp-rgb-12 \ + fate-dnxuc-ramp-rgb-half \ + fate-dnxuc-ramp-rgb-float \ + fate-dnxuc-ramp-yuv422-8 \ + fate-dnxuc-ramp-yuv422-10 \ + fate-dnxuc-ramp-yuv422-12 + +FATE_DNXUC-$(call FRAMECRC, MXF, DNXUC) += $(FATE_DNXUC_CB) $(FATE_DNXUC_RAMP) + +FATE_SAMPLES_FFMPEG += $(FATE_DNXUC-yes) +fate-dnxuc: $(FATE_DNXUC-yes) + +fate-dnxuc-cb-rgb-8: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/cb_rgb_8.mxf +fate-dnxuc-cb-rgb-10: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/cb_rgb_10.mxf +fate-dnxuc-cb-rgb-12: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/cb_rgb_12.mxf +fate-dnxuc-cb-rgb-half: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/cb_rgb_half.mxf +fate-dnxuc-cb-rgb-float: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/cb_rgb_float.mxf +fate-dnxuc-cb-yuv422-8: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/cb_yuv422_8.mxf +fate-dnxuc-cb-yuv422-10: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/cb_yuv422_10.mxf +fate-dnxuc-cb-yuv422-12: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/cb_yuv422_12.mxf + +fate-dnxuc-ramp-rgb-8: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/ramp_rgb_8.mxf +fate-dnxuc-ramp-rgb-10: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/ramp_rgb_10.mxf +fate-dnxuc-ramp-rgb-12: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/ramp_rgb_12.mxf +fate-dnxuc-ramp-rgb-half: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/ramp_rgb_half.mxf +fate-dnxuc-ramp-rgb-float: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/ramp_rgb_float.mxf +fate-dnxuc-ramp-yuv422-8: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/ramp_yuv422_8.mxf +fate-dnxuc-ramp-yuv422-10: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/ramp_yuv422_10.mxf +fate-dnxuc-ramp-yuv422-12: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/dnxuc/ramp_yuv422_12.mxf diff --git a/tests/ref/fate/dnxuc-cb-rgb-10 b/tests/ref/fate/dnxuc-cb-rgb-10 new file mode 100644 index 0000000..398e0da --- /dev/null +++ b/tests/ref/fate/dnxuc-cb-rgb-10 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 786432, 0x2e402ec2 +0, 1, 1, 1, 786432, 0x2e402ec2 +0, 2, 2, 1, 786432, 0x2e402ec2 diff --git a/tests/ref/fate/dnxuc-cb-rgb-12 b/tests/ref/fate/dnxuc-cb-rgb-12 new file mode 100644 index 0000000..4e3235f --- /dev/null +++ b/tests/ref/fate/dnxuc-cb-rgb-12 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 786432, 0x6fb11356 +0, 1, 1, 1, 786432, 0x6fb11356 +0, 2, 2, 1, 786432, 0x6fb11356 diff --git a/tests/ref/fate/dnxuc-cb-rgb-8 b/tests/ref/fate/dnxuc-cb-rgb-8 new file mode 100644 index 0000000..189babc --- /dev/null +++ b/tests/ref/fate/dnxuc-cb-rgb-8 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 393216, 0xc1f6a4cc +0, 1, 1, 1, 393216, 0xc1f6a4cc +0, 2, 2, 1, 393216, 0xc1f6a4cc diff --git a/tests/ref/fate/dnxuc-cb-rgb-float b/tests/ref/fate/dnxuc-cb-rgb-float new file mode 100644 index 0000000..95ab4e5 --- /dev/null +++ b/tests/ref/fate/dnxuc-cb-rgb-float @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 1572864, 0x88241923 +0, 1, 1, 1, 1572864, 0x88241923 +0, 2, 2, 1, 1572864, 0x88241923 diff --git a/tests/ref/fate/dnxuc-cb-rgb-half b/tests/ref/fate/dnxuc-cb-rgb-half new file mode 100644 index 0000000..b7e9406 --- /dev/null +++ b/tests/ref/fate/dnxuc-cb-rgb-half @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 1048576, 0xfc459149 +0, 1, 1, 1, 1048576, 0xfc459149 +0, 2, 2, 1, 1048576, 0xfc459149 diff --git a/tests/ref/fate/dnxuc-cb-yuv422-10 b/tests/ref/fate/dnxuc-cb-yuv422-10 new file mode 100644 index 0000000..6e7c537 --- /dev/null +++ b/tests/ref/fate/dnxuc-cb-yuv422-10 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 524288, 0xad829843 +0, 1, 1, 1, 524288, 0xad829843 +0, 2, 2, 1, 524288, 0xad829843 diff --git a/tests/ref/fate/dnxuc-cb-yuv422-12 b/tests/ref/fate/dnxuc-cb-yuv422-12 new file mode 100644 index 0000000..01e5976 --- /dev/null +++ b/tests/ref/fate/dnxuc-cb-yuv422-12 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 524288, 0x70277284 +0, 1, 1, 1, 524288, 0x70277284 +0, 2, 2, 1, 524288, 0x70277284 diff --git a/tests/ref/fate/dnxuc-cb-yuv422-8 b/tests/ref/fate/dnxuc-cb-yuv422-8 new file mode 100644 index 0000000..1e4bb3e --- /dev/null +++ b/tests/ref/fate/dnxuc-cb-yuv422-8 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 262144, 0x12299f3f +0, 1, 1, 1, 262144, 0x12299f3f +0, 2, 2, 1, 262144, 0x12299f3f diff --git a/tests/ref/fate/dnxuc-ramp-rgb-10 b/tests/ref/fate/dnxuc-ramp-rgb-10 new file mode 100644 index 0000000..99a2eb9 --- /dev/null +++ b/tests/ref/fate/dnxuc-ramp-rgb-10 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 786432, 0xe4d06700 +0, 1, 1, 1, 786432, 0xe4d06700 +0, 2, 2, 1, 786432, 0xe4d06700 diff --git a/tests/ref/fate/dnxuc-ramp-rgb-12 b/tests/ref/fate/dnxuc-ramp-rgb-12 new file mode 100644 index 0000000..19eb687 --- /dev/null +++ b/tests/ref/fate/dnxuc-ramp-rgb-12 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 786432, 0xb8c802a4 +0, 1, 1, 1, 786432, 0xb8c802a4 +0, 2, 2, 1, 786432, 0xb8c802a4 diff --git a/tests/ref/fate/dnxuc-ramp-rgb-8 b/tests/ref/fate/dnxuc-ramp-rgb-8 new file mode 100644 index 0000000..2c1caae --- /dev/null +++ b/tests/ref/fate/dnxuc-ramp-rgb-8 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 393216, 0xd1f001f2 +0, 1, 1, 1, 393216, 0xd1f001f2 +0, 2, 2, 1, 393216, 0xd1f001f2 diff --git a/tests/ref/fate/dnxuc-ramp-rgb-float b/tests/ref/fate/dnxuc-ramp-rgb-float new file mode 100644 index 0000000..c35172c --- /dev/null +++ b/tests/ref/fate/dnxuc-ramp-rgb-float @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 1572864, 0xda4a5914 +0, 1, 1, 1, 1572864, 0xda4a5914 +0, 2, 2, 1, 1572864, 0xda4a5914 diff --git a/tests/ref/fate/dnxuc-ramp-rgb-half b/tests/ref/fate/dnxuc-ramp-rgb-half new file mode 100644 index 0000000..eee882a --- /dev/null +++ b/tests/ref/fate/dnxuc-ramp-rgb-half @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 1048576, 0x0dda0807 +0, 1, 1, 1, 1048576, 0x0dda0807 +0, 2, 2, 1, 1048576, 0x0dda0807 diff --git a/tests/ref/fate/dnxuc-ramp-yuv422-10 b/tests/ref/fate/dnxuc-ramp-yuv422-10 new file mode 100644 index 0000000..ef158a5 --- /dev/null +++ b/tests/ref/fate/dnxuc-ramp-yuv422-10 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 524288, 0xb86e482d +0, 1, 1, 1, 524288, 0xb86e482d +0, 2, 2, 1, 524288, 0xb86e482d diff --git a/tests/ref/fate/dnxuc-ramp-yuv422-12 b/tests/ref/fate/dnxuc-ramp-yuv422-12 new file mode 100644 index 0000000..4596dc8 --- /dev/null +++ b/tests/ref/fate/dnxuc-ramp-yuv422-12 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 524288, 0x9bbd5677 +0, 1, 1, 1, 524288, 0x9bbd5677 +0, 2, 2, 1, 524288, 0x9bbd5677 diff --git a/tests/ref/fate/dnxuc-ramp-yuv422-8 b/tests/ref/fate/dnxuc-ramp-yuv422-8 new file mode 100644 index 0000000..bb6fd38 --- /dev/null +++ b/tests/ref/fate/dnxuc-ramp-yuv422-8 @@ -0,0 +1,8 @@ +#tb 0: 1/24 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 512x256 +#sar 0: 1/1 +0, 0, 0, 1, 262144, 0x386e0fa6 +0, 1, 1, 1, 262144, 0x386e0fa6 +0, 2, 2, 1, 262144, 0x386e0fa6