From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 3AE3A46A59 for ; Wed, 2 Aug 2023 12:54:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A983768C62C; Wed, 2 Aug 2023 15:53:58 +0300 (EEST) Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2052.outbound.protection.outlook.com [40.92.58.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2EE1B68C628 for ; Wed, 2 Aug 2023 15:53:52 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NvindkZMkPXYsE04+3EAEIooMXozojbeQ1/jYeP43xxYiS6ZRcdPEMDJ+1RmuKdd5EK8W388jsdg/DgK4J8WJRkPNDZgwguvsdyXmLMWizYruWKCTPWexFwf8xTwgFrC0Zw5JRYpMCo6hhJ/z0EBUY+pfdkkVrf81n8He/oN1VwlC9gu0nbKfdgKdq5mHT9X6GFhQDJXbx1DCLuQLtve7H1fP4KXaBTzZqIs5QKGOwws8qyRIhsh2fAJWksbIv4WM/xyyKbD5pesIg90K9fvB1dXbjkHi44xCERWfHgS8lO+9TA81QZ6n5CHkdOJldq70OgvPpmEEc6OOMNzDrlgaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Kt6fPBwb+UAUS+3Y6DcPhrWqwErKMJflqQTp5C0nMtg=; b=NkOtTnCZUsSSP72ZmE8D+IZZoDM/iSNiVE46zzdCXqrTbOlw5MqDyq2gs99/Id1hmhWNTopdn8sqThvI4Clp9jF7+d5QzLsH2QI6Om33FO9rMLMQHlAMEA0zCiGrSl1froG1DtB9heaTkbH8BQU1DugLeVsZ/iBcKb8YHBr9dNU3iqRpsT/cHBrVwCSb8RioER7poPYqh2W8EHUgGipEagdVnVQGzsrs6SC6DjNKnS1sODmyRIJlaTSr3I1nBIiJK/yOMOd5GEPAElWe8t3ES48HorA/p8Gph/zRmSEZQjdSvzzDJbu2DwJ79gm/xdajgYlxJP/4/jGylwF6eOlMDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Kt6fPBwb+UAUS+3Y6DcPhrWqwErKMJflqQTp5C0nMtg=; b=GRstBVKxWrRReMyN2zwk2fywUZkxqa9ioEm/kAjifgBlS4zj6XO3G8dTt7z2rLXr4j0qg8+7tGhqQABarGauZJBvVVa/F0oPa3n7LXDEBIxnMwQi7aryw9Epts62DDTqK4QEXenVtxuF7D3NnFC49LoJ93RlVUYGDw0v2qbWOtgn/IuZ95SeFS84aZCUX+Xor5XvCN6c9MVUc2BftPoeujWQiREc9MdjxvoS+mvx5kTSlztuLdvXHr6RveYDf8GSTzatZ1q1MrxOxuLP4a+d7Nfl2v3gWLnBenDG5lj7TbDaeZsJB3pmt6vY70NAa9uR6sawQelsGldBoyi1u+N4bA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0037.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 12:53:50 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 12:53:50 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Aug 2023 14:54:48 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [lOj4ueIRevXdzzWZBcKjib4GLMAvjEWkRonz5VY8wDI=] X-ClientProxiedBy: ZR2P278CA0056.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::8) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230802125450.439724-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0037:EE_ X-MS-Office365-Filtering-Correlation-Id: c117ede0-1433-4986-e7b1-08db93578487 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmrpbvZQFz99JXWGN3jXDJ2P6TLZZS3ohLgdLF7y+3nS9fChMYYL6BnS7Da845lxhDt4AETYJXedOfnlnQmx06osG8g29jjwMv3y15jkF+NDgYN1rln7xWEDzEPsBhHL+ixbj8WtDlUBfsc2RbGCuTnNd5twWpbRGXvCn55FQAj2LRh7loy7Y+k9omDIzc9L61/bbeGOrL0D5LEwxDt4ZGSgOxbiajapP7W9pbHpdrOFabP+4I6zj+Q9BhzTn66tHfzVDtKDxmeEEYNWaKa7r7SGMcBcUFVYnz48uE3I9wwN8Rc/r9BmtdioBOxc4Rm0eLChExalwmACHnWSQwafly2PpbQcFvKl9yZ8VVbaoAnfhpXQE7d/F6ShbJmyJGOClnoxFzLF2B9yPGRdeYdhizRnDIQUZocZjtOm08KLtquSWi31ZtWyuxoT9ocV4sQaNOFpJmlrOJOZD+xi0Lwhm2qFhQxiiLUoRGdslmvZRgpmTsIZxj88fBOqrMGxZ28WWnZ5eCi/afzFzcwFWFqiGos9meD6/ssCD6IjxXOLbg2ZronvARBCH0Bs3teWXxc4MCrMaUMIzoZexXyQ0yJ8MSVwwxXDRS8bTT/fnoGQy5E5SUkZeftBinMXgzzuwx2VGf8msupysHo6nwQ1/TeLwLlVsVGuJdPNyZBYH+wlJPxSk5zxYsvkZ4KF3pb4Ed2uAIVfs6zeQSEZscIpMC/t49cerFSNrKnbGotxchztpXAVDHVjQpY45IHZ6J/ch1b3Ppo= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RFbgDdEFGzmWmhaPOkFEsJB7oqrRnFr7QiA4dtkHmoan9J3sDqrp/f/km2h6yAaZ33dz1SLC3QnzAD32abFymGnV0y9DLgXyrNNPWTw6PdeZKi8hn9XkofDkKKQknlGbfbkjSGbFnXeV46UZoraShiVuzvHjcNW7ku1TQQhZ/wuRb6iWUYoHNbvVvFfOlAhAQCnj11ZXEMco3beDw5xPaK4nMtfRMEJKYKP6Hlv+UEmxs9ESlV0uOUByTUT4aRy5BiioNfRkxi//rOmBXNFTEyereU/5GqQ+eM+IGJdHoHAV0KmQaq1irlari8PxHo1Z1HEYllFHtk0Un41uZH5SV/ZEOyFrnJ1UG5jWJBgbF6hA26ygMFf0RcpMp+XPyg35znnf0cnLU5lAmLvVUlt8M3HDjM2a2spLQdiVBSnPJMFzWuK8LfolZg6SZc8P+dnoRV4zlTCzIEEOdIR9HC7dL9plBqrx3aap3hE0guh78a3tBXMnWw3xtr4KlRk38ue6EePpvRV7ezOwFoyJgHkE/HqdFKPSsfumsCmyD/tBrT2d+1st3PzGbc/11c7tUfrEUZ0sFWELFIuaXz8WpsZKmBKHIy02quGkWJmZetUVsBLQT4RSHLZ8IPZZdLfyLjbO X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Iupsj6H6jz9KhUexLDRIDiBOxgbbccb0utzomTxQuUQT/FFj+lRnpIEKXJUw?= =?us-ascii?Q?hFjlRfanR5sv5VRDGfAH/kC5JSw/GbqmLj9zHgimwvP+cTOv/ju0lPt0rfzr?= =?us-ascii?Q?9Xt+ymZzm1phqmcsjX73ga4+vBRrrQ+H9oUTsS7JxHHJ/kzIPC4FMNaB3iLJ?= =?us-ascii?Q?2lqy474m1yoNEGiC2pYLS300JVTFwhYUPuI+rf5nBmTg/uGvE1TazzlMhzby?= =?us-ascii?Q?dqMOTtKZVuzFIasEYSmtzrIU0rdkx73jkykhdIRp4/lNtRJySvD1C1nr81cb?= =?us-ascii?Q?i+J4V8i+sGURk5yaQ4XlVCoi4FM0H1JAaegMX/RfcF2mX7qDeHJh27tidHM2?= =?us-ascii?Q?MuuTZ9kJzwI7YH9+iGjBYgHg/8sM4gDnMps+O3xeXOV2KOCqdG8rN0VWn40k?= =?us-ascii?Q?E8S1Gjb2DWfqZslBUWmFnnnjFDdjedIY3e/9I6Q+B43TiCV9oFdjbrODQjeT?= =?us-ascii?Q?+OVci4BakCdlbW3JmVXSmzXyZjaAIzT4CJ4hB/nHxE6JBAUG6IGKpQGAFaiK?= =?us-ascii?Q?69rblmQOXPbgyy2JP6bDq2lxZ1HpF6iHTTJuvYxMO9A5K1J7+jQCP85HMr36?= =?us-ascii?Q?t35xazsdBuu0qjydPPd4H8xtM/b+t+VzqlzPXz+2TyEGu1SIKGbhHPujMlO4?= =?us-ascii?Q?0F4R8y5oeltTnDFCWEoVSewK36IiPm2EZ6qKI1nlYwUsi3Q9e/iEzucLT/cD?= =?us-ascii?Q?KNwz7+Qa2QtsZDYqZNikQsp3DJZXU4lQccSwjgZUV8gNBhbupsf9ru/HUUU3?= =?us-ascii?Q?0yQqJQI3N8nlKwynwEXWlm4Zx6CGjglIU1WtIqrRfLHR/ri6uCklt/lANOW5?= =?us-ascii?Q?0hB8xzJ7487bIZtZXScwD/tle4jTnrnKM5159QAZnTkPcP/w6iNI3sSeRYsy?= =?us-ascii?Q?7+faD0gV1CWb7IyJ9GXPczqZ86jU+7t5ji4ndF+dxWZ97aKJYLqAfWiPuM/D?= =?us-ascii?Q?h257nFpzKGZ8MrwNbOmiHzIWyfeb9zyGGxsvgutycTUZkR4dx60C/DXeCuRp?= =?us-ascii?Q?+fNogEJBSmX9RJgKLQZlbNhFh5yuSVwkK0Hr6PQzCqGRIRycKX7t9Ka1Hjof?= =?us-ascii?Q?n2/rDjBKMnBLHrIz5UvTm+YeBCkgEVjzF2s2Sx8OQRs61CrUJSGkYwmhDYcF?= =?us-ascii?Q?p95iSyCeV5w+7FjDpNPbsN2JGVkeg6wRhbTt9OcWE5MQ0nPpf9CGzhZsXM1J?= =?us-ascii?Q?g49J3NQItBVNdy3aD8G71jkMK6Q+1Nz2Bj+VTxUqVfvJVT2wRMcekwZkPkvB?= =?us-ascii?Q?8kRP/fGxOMsQU8VKnZAg?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c117ede0-1433-4986-e7b1-08db93578487 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2023 12:53:50.0577 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8P250MB0037 Subject: [FFmpeg-devel] [PATCH 17/19] avcodec/utils: Move ff_color_frame() to its only user 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: Andreas Rheinhardt Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Namely h264_slice.c. Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_slice.c | 34 +++++++++++++++++++++++++++++----- libavcodec/internal.h | 2 -- libavcodec/utils.c | 28 ---------------------------- 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 27fbd8d953..6cd7bb8fe7 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -28,15 +28,11 @@ #include "config_components.h" #include "libavutil/avassert.h" -#include "libavutil/display.h" -#include "libavutil/film_grain_params.h" #include "libavutil/pixdesc.h" #include "libavutil/timecode.h" -#include "internal.h" #include "decode.h" #include "cabac.h" #include "cabac_functions.h" -#include "decode.h" #include "error_resilience.h" #include "avcodec.h" #include "h264.h" @@ -299,6 +295,34 @@ static void copy_picture_range(H264Picture **to, H264Picture **from, int count, } } +static void color_frame(AVFrame *frame, const int c[4]) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); + + av_assert0(desc->flags & AV_PIX_FMT_FLAG_PLANAR); + + for (int p = 0; p < desc->nb_components; p++) { + uint8_t *dst = frame->data[p]; + int is_chroma = p == 1 || p == 2; + int bytes = is_chroma ? AV_CEIL_RSHIFT(frame->width, desc->log2_chroma_w) : frame->width; + int height = is_chroma ? AV_CEIL_RSHIFT(frame->height, desc->log2_chroma_h) : frame->height; + if (desc->comp[0].depth >= 9) { + ((uint16_t*)dst)[0] = c[p]; + av_memcpy_backptr(dst + 2, 2, bytes - 2); + dst += frame->linesize[p]; + for (int y = 1; y < height; y++) { + memcpy(dst, frame->data[p], 2*bytes); + dst += frame->linesize[p]; + } + } else { + for (int y = 0; y < height; y++) { + memset(dst, c[p], bytes); + dst += frame->linesize[p]; + } + } + } +} + static int h264_slice_header_init(H264Context *h); int ff_h264_update_thread_context(AVCodecContext *dst, @@ -1547,7 +1571,7 @@ static int h264_field_start(H264Context *h, const H264SliceContext *sl, if (h->short_ref[0]->field_picture) ff_thread_report_progress(&h->short_ref[0]->tf, INT_MAX, 1); } else if (!h->frame_recovered && !h->avctx->hwaccel) - ff_color_frame(h->short_ref[0]->f, c); + color_frame(h->short_ref[0]->f, c); h->short_ref[0]->frame_num = h->poc.prev_frame_num; } } diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 480b18b447..7de6c577fe 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -157,8 +157,6 @@ int ff_match_2uint16(const uint16_t (*tab)[2], int size, int a, int b); unsigned int ff_toupper4(unsigned int x); -void ff_color_frame(AVFrame *frame, const int color[4]); - /** * 2^(x) for integer x * @return correctly rounded float diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 672eb15d98..da652d4db1 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -406,34 +406,6 @@ int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, return ret; } -void ff_color_frame(AVFrame *frame, const int c[4]) -{ - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); - int p, y; - - av_assert0(desc->flags & AV_PIX_FMT_FLAG_PLANAR); - - for (p = 0; pnb_components; p++) { - uint8_t *dst = frame->data[p]; - int is_chroma = p == 1 || p == 2; - int bytes = is_chroma ? AV_CEIL_RSHIFT(frame->width, desc->log2_chroma_w) : frame->width; - int height = is_chroma ? AV_CEIL_RSHIFT(frame->height, desc->log2_chroma_h) : frame->height; - if (desc->comp[0].depth >= 9) { - ((uint16_t*)dst)[0] = c[p]; - av_memcpy_backptr(dst + 2, 2, bytes - 2); - dst += frame->linesize[p]; - for (y = 1; y < height; y++) { - memcpy(dst, frame->data[p], 2*bytes); - dst += frame->linesize[p]; - } - } else { - for (y = 0; y < height; y++) { - memset(dst, c[p], bytes); - dst += frame->linesize[p]; - } - } - } -} int avpriv_codec_get_cap_skip_frame_fill_param(const AVCodec *codec){ return !!(ffcodec(codec)->caps_internal & FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM); -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".