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 1F74046C9F for ; Fri, 5 Apr 2024 12:43:25 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4C01B68D1D0; Fri, 5 Apr 2024 15:42:36 +0300 (EEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2016.outbound.protection.outlook.com [40.92.66.16]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 228E668D188 for ; Fri, 5 Apr 2024 15:42:29 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=djFxGPX1H7G4AHd4NTQHU3sY0EaMFDcsRS24BP8dhWCQ1awVx7jbD1IkIASxYFXVX571z4r290EmSEVDEpl+isgPi3Jov6QdNL2s0tc8yr981EtKsHPcesrLlh1mp00xXJnT5BIabpI9gp7C2rsh8eeN+/mf/kPH+5QqhbCwcMClpb8h6zLaHrVkvgrK+2fuF3rssTd0Up29W0L6rV7HCTMioWX9wB81e9ceIcMIGor0y7uOQYfyV6z5VxIfLyzeqEmgSgOUZbeHY9VKbZJ8FNY/OW3lpad1PCiYdZ01NqNXDSMJyZrNrwpCp0PW9auOCsd09fu6qtta4z8hE4ScAg== 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=ZI5pl8FYsWWoOyYGfoXuLmxhM8qWuNME98A5Vul4688=; b=LceEpM4qWfiux+YQ+LBxcejXRqPmdek6+xgHOQWef6Br5E96nabiRJrEg/WlT6QJc/oRDoEghWUcngRtApFgF/E3Khw0ryXG/J0pQ6PmZ8vjNNrrGnfYP9UtbZIHhrQ4IwwKPF7eHGbAILxuasXJA+Y4zFmDHUke1pxDpATNen/1RLRPZSJBXHK/aCnpIXsy269/XUsFxDdutcd2Qag81BapdwVDA7g9zM+L2v3iuJ69FM8e4AwuA9YzWqrjvIYG4JNgKSiScDrW+d7IlVa5UNqkgONGavDtqNsrTVpYoNu6Zf2kBlPD4dVJDnJuoKQgEuT5gTCi9M08+IDEwqAylQ== 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=ZI5pl8FYsWWoOyYGfoXuLmxhM8qWuNME98A5Vul4688=; b=YDVBWdn9dwRwZ547ykfYGyFLf+keVcyZGcowZF3W1Ltf+pqr694PpNspEi7YoWbcyS7FeCmRKtf/QuHFZ7wIyfDPjsLLgZgHdgpKu83QEWadVbuK/eASEMMC+LPwP+x1Wl2cHhuoKdRpfoiarJwHxRcDcvUn+B8Et++7JJNXhjTcX7zzT0niNbCr1Y1K/ATnenR9oyJQUYDEHGT3GdGgkAA1wfuelbtears4gNLxkIqe9WyQfAU2P3ZW+QkrUpFAAhkV1GaKmOWk0ElEB8U7Z6cYLHHRp3mURwOotdYzIt+FGKPfHxTzN/ISYJvXa6HAEM1qypw/BZBUoUUQnocNnw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by PR3P250MB0002.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:14d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.53; Fri, 5 Apr 2024 12:42:27 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.042; Fri, 5 Apr 2024 12:42:27 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 5 Apr 2024 14:41:35 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [4iKVknsJ8UN1oc6TLA1AToCNx10x6pjjZ9/98BQARBc=] X-ClientProxiedBy: ZR2P278CA0074.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::8) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240405124138.2343725-11-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|PR3P250MB0002:EE_ X-MS-Office365-Filtering-Correlation-Id: 53e493f4-6924-48dc-9ab4-08dc556dd99e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: of3dJhicM/vKECXK4/Fup38i4HauTQP5eQdAXjd9NlPAwrKKn04cy3UKNv0m1zh+vmFY3Az8WsWjn1MFmrx/3GHOsRR1Z+PXMFpB9poWSfV6TynE5kLOubzXlVcKtF1HBK9KWxEkMJ9x2PeZOqqyA8Lj+DfT7z7zyTnNkyL0nCdFG6uH2ObhX1QARSQzquiRSXehUs/ev70o+fgmqlgmJBDZ9xpGV3hVoQlRmzu+X8PkXZLZLKhIq16vhP5U1wZskfqsK1xFlMw3X0jsNCI/iN4jWDUcq7t671RMImlLYEeYgi19Enua7LV0PchWuINw+VnFc0+1rGinMltAamWQXvapUaTiD++26r//SqkprZSE7dji5aE/SAFv2wcVCkGQ+AdDAVmRAMeu0+Ncwquf4OUdT8hMmVQknQazVY4k897Cx7/KyBmCqPYbMk2FNFjgBCPOeDQWeYDeyUkHjsPIpEzGQN/WSCYM/1f5MiqsEL+aGM9hCYwtq1vGJ7TtYdhD8JGPi39zGbCrEkv2ip7/98XKN/IXnUvm/n3hUsCqtFsVvkNhc6ord3wwyyuv35tuiuVuYliR82nmHF4+v79gmVObgP5FdUyjNFk6Zpiy5hmHiw/l88R93FJKm3fXAm2J X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2TFpcSoa3kVd90L6uBpMB+YMXZflwBm6oKMUfyqrp0A8ZEfdgAf2Vd4GTxCy?= =?us-ascii?Q?nbwynGMoxyUToMi0fZA8B+Xfx4r4vOhDt+vW97zHssct8gdqGbaRh58IeXHp?= =?us-ascii?Q?01oeEtVziR+SJFOuNayMaQH8Cz69QNNbO5n321MfFdDejrVIwLj2zX1Ks8BM?= =?us-ascii?Q?B9RyKNchxFb60UY9axkG7QAZ3ElMMjTDTVtcJlDkZm2rSnGJtxIaPKJdaTAU?= =?us-ascii?Q?J4POmvqJjO8ZYoGCJzbdX05kyeaWQNErvM1+wTuA2gf6507wTurgTz8f4JdT?= =?us-ascii?Q?eS4Mt2LTfCOVWvVGqyW+xBMUDshgpNkGhJVzqKR68dwK+AsB3Sx1YYyZt91/?= =?us-ascii?Q?ZUIncJRkvrtyVH9Ijhj+shSVscuViVwMaaq5WDiOlyGJy32RPqPxL0Vt/MIN?= =?us-ascii?Q?BxEsiRmpJUbj0KkMj0CaOOmiPcT5XbEN4GIZePg1aFY6ptp1OiOm2yWhRBbh?= =?us-ascii?Q?ACFfQ82TRhe7AVz4ryazS7GU5SavoRQnKo0gE2G2/961SNON7zz4Lzr9nrPH?= =?us-ascii?Q?TQ85Yu7MEtErbf/cYyiewlJ3MMA6JHG2dHnHnMYom5i2eGxHzI37FQFWNfGA?= =?us-ascii?Q?zbUZ73MSozcP2yrHuaGr6vvU1hia7MnjeJXDs6AHikhbirdsWiDvjYLasWAb?= =?us-ascii?Q?7WOLOXK8+mJPkuK9RRrtKtxzj0K4hF7lFWqJ9/t3O0PPgc9ZS+aRWXG6So1A?= =?us-ascii?Q?XpuMpWfueHhbHFgP5aTwJbm3FMF3d03C+WIDuPe7mBvEwfIUmCNukl5frZQu?= =?us-ascii?Q?oB/wYoVzAZHvJYdX7grVsa40OtH1sylS2xjIc5Gw5pexRQcojXomqFeHgRFb?= =?us-ascii?Q?jCmwrz+0VIGbdfx41hWpfU6mTgO331xJI5Tf6cRedXe5eEzZmb6TyB4FU2KF?= =?us-ascii?Q?Q+yXPMHr2QrCUQCESJzqapA26kw9JjGcoKBiqMgAVVOcldDj0EzQ8XVXXvoC?= =?us-ascii?Q?OaQYCVZT8AZ8ZF3gIgfmTNNS75uGTt50Hu4lRhK+a7su6fJhnuRRVF2/GHcL?= =?us-ascii?Q?9eg7ryQM5AdWEGfTihso8IOUjQtgdKnnZZQWrGyA578l/gh13goCaspmlrPM?= =?us-ascii?Q?zT4/gfSPwbgAFhaf8hIv0PDbDWOm4LtYfPqQ23ODp0wrT48A48K5Abxpqz96?= =?us-ascii?Q?KQhwt0bQulQ16lnCDnEAXV30Oz3fF8YZq1LVXyNZd0sqCcX+ldZ2MKmpnhNA?= =?us-ascii?Q?ZJhPeSJkldiX+kNyy8StRkKd3AZpi6OcAPxexI93pxNjG9oyE2wmXgYBVMAj?= =?us-ascii?Q?GjtIYr0flHplumPVI2ldiK5CbPHEPozuZKMFLwBoVg=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 53e493f4-6924-48dc-9ab4-08dc556dd99e X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Apr 2024 12:42:27.6452 (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: PR3P250MB0002 Subject: [FFmpeg-devel] [PATCH 12/15] avcodec/mpegvideo_dec: Move getting Picture slot into alloc_picture() 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: Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_dec.c | 63 ++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 37 deletions(-) diff --git a/libavcodec/mpegvideo_dec.c b/libavcodec/mpegvideo_dec.c index b6ef4e5582..d337a6565b 100644 --- a/libavcodec/mpegvideo_dec.c +++ b/libavcodec/mpegvideo_dec.c @@ -235,12 +235,20 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) return err; } -static int alloc_picture(MpegEncContext *s, Picture *pic) +static int alloc_picture(MpegEncContext *s, Picture **picp, int reference) { AVCodecContext *avctx = s->avctx; + int idx = ff_find_unused_picture(s->avctx, s->picture, 0); + Picture *pic; int ret; + if (idx < 0) + return idx; + + pic = &s->picture[idx]; + pic->tf.f = pic->f; + pic->reference = reference; /* WM Image / Screen codecs allocate internal buffers with different * dimensions / colorspaces; ignore user-defined callbacks for these. */ @@ -248,7 +256,7 @@ static int alloc_picture(MpegEncContext *s, Picture *pic) avctx->codec_id != AV_CODEC_ID_VC1IMAGE && avctx->codec_id != AV_CODEC_ID_MSS2) { ret = ff_thread_get_ext_buffer(avctx, &pic->tf, - pic->reference ? AV_GET_BUFFER_FLAG_REF : 0); + reference ? AV_GET_BUFFER_FLAG_REF : 0); } else { pic->f->width = avctx->width; pic->f->height = avctx->height; @@ -262,9 +270,14 @@ static int alloc_picture(MpegEncContext *s, Picture *pic) if (ret < 0) goto fail; - return ff_alloc_picture(s->avctx, pic, &s->me, &s->sc, 0, s->out_format, - s->mb_stride, s->mb_width, s->mb_height, s->b8_stride, - &s->linesize, &s->uvlinesize); + ret = ff_alloc_picture(s->avctx, pic, &s->me, &s->sc, 0, s->out_format, + s->mb_stride, s->mb_width, s->mb_height, s->b8_stride, + &s->linesize, &s->uvlinesize); + if (ret < 0) + goto fail; + *picp = pic; + + return 0; fail: ff_mpeg_unref_picture(pic); return ret; @@ -272,27 +285,16 @@ fail: static int av_cold alloc_dummy_frame(MpegEncContext *s, Picture **picp) { - int idx = ff_find_unused_picture(s->avctx, s->picture, 0); Picture *pic; - int ret; - - if (idx < 0) - return idx; - - pic = &s->picture[idx]; - - pic->reference = 3; - pic->f->pict_type = AV_PICTURE_TYPE_P; - - ret = alloc_picture(s, pic); + int ret = alloc_picture(s, picp, 1); if (ret < 0) return ret; + pic = *picp; + ff_thread_report_progress(&pic->tf, INT_MAX, 0); ff_thread_report_progress(&pic->tf, INT_MAX, 1); - *picp = pic; - return 0; } @@ -320,8 +322,7 @@ static void color_frame(AVFrame *frame, int luma) */ int ff_mpv_frame_start(MpegEncContext *s, AVCodecContext *avctx) { - Picture *pic; - int idx, ret; + int ret; s->mb_skipped = 0; @@ -351,23 +352,11 @@ int ff_mpv_frame_start(MpegEncContext *s, AVCodecContext *avctx) ff_mpeg_unref_picture(&s->last_picture); ff_mpeg_unref_picture(&s->next_picture); - idx = ff_find_unused_picture(s->avctx, s->picture, 0); - if (idx < 0) { - av_log(s->avctx, AV_LOG_ERROR, "no frame buffer available\n"); - return idx; - } - pic = &s->picture[idx]; - - pic->reference = 0; - if (!s->droppable) { - if (s->pict_type != AV_PICTURE_TYPE_B) - pic->reference = 3; - } - - if (alloc_picture(s, pic) < 0) - return -1; + ret = alloc_picture(s, &s->current_picture_ptr, + s->pict_type != AV_PICTURE_TYPE_B && !s->droppable); + if (ret < 0) + return ret; - s->current_picture_ptr = pic; s->current_picture_ptr->f->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST * !!s->top_field_first; s->current_picture_ptr->f->flags |= AV_FRAME_FLAG_INTERLACED * (!s->progressive_frame && !s->progressive_sequence); -- 2.40.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".