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 6872E4A731 for ; Sun, 5 May 2024 16:37:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9B16C68D59B; Sun, 5 May 2024 19:37:46 +0300 (EEST) Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E2F3C68CDAC for ; Sun, 5 May 2024 19:37:39 +0300 (EEST) Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a599af16934so257072366b.1 for ; Sun, 05 May 2024 09:37:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714927059; x=1715531859; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=nalY5o2WrAW2j2lxbuFlI5hmQk4rSCUQUQpGE38JN84=; b=UEO+A5hGgthY3if0sjHtDKUVBwO3oFNdGvsvAqsMJJ5Iuok8tYe5cgc6Rh4qso+YML qWej7mwe8td0Ui8DpKvpf1XYIzqV+PuC30EUNd7pOUnmhJh/vW4pUs9T+CsjxlBgYjHe VbuZ+1gogJ65+i+ur3cXjkmdI5MFl83js4Wc1kTHVav9p1mKqH4rSUMLUIdAswEHwsdp eHeSOFUJd5rhoKHflTRMefyAgn7mGAg0s6XJYDx69MevbHLjGeVbf4k5AvUCdww8cVBb 5D9cIehh8djmTwGMuRAw1Ny3YTs5ICKPZnqpKsIFa85DGUTFbx1oHI44K4o/KJqI4/Tl 7aIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714927059; x=1715531859; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=nalY5o2WrAW2j2lxbuFlI5hmQk4rSCUQUQpGE38JN84=; b=ZW07uZ6MqVpUQwuKAZMx0vvBHNyQd+Xb1VVh+EFg1w/GY7PlRuCKtDeZn91BYnus+T 9y1RWRkRHMzigwTM0zZRcAz+E4uGj7Rsxz2UVjvEVXBy6BwUAgCCujxHd5WXDvSVefxS f0ZCQkBwE2bIfXU2XTWxPear9TCj6VNSxbXk/1GWk8qE4HHsC49VznbHn4k6IodntNZL xGBkMIB5jq0m5BbBAmQYldPKSNWPRRRxZJk5h3Vhmd5anTh3825+Nf5i057EVmu2lz17 I5yZPePgRRFc1KACLVPQcjQJSj5OSyHhxOVG/OEKHijmi00Gj38HBv9P7PBVBKmBSL11 U4HA== X-Gm-Message-State: AOJu0YywtC7/F8dejKXiKDP7iUAhb5/36gOTHhM9w+GSqpy84MEuwoCI pGm7wYdbMEUB61KhBHJEED3P73qY1HTYfVOEgkoR5ZzQxEiqPxO/+eXz3g== X-Google-Smtp-Source: AGHT+IEKy4evm7dLS5Gpz2Semcyh1NagI83z5fusHNULMnT7gPypixucNW4OMK6khYO/Hh5UPO7/Ew== X-Received: by 2002:a17:906:16cf:b0:a59:c3d0:5502 with SMTP id t15-20020a17090616cf00b00a59c3d05502mr1262450ejd.17.1714927058845; Sun, 05 May 2024 09:37:38 -0700 (PDT) Received: from mitsuki.. (ip-78-45-35-87.bb.vodafone.cz. [78.45.35.87]) by smtp.gmail.com with ESMTPSA id ld13-20020a170906f94d00b00a59cf137227sm121763ejb.89.2024.05.05.09.37.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 May 2024 09:37:38 -0700 (PDT) From: David Rosca To: ffmpeg-devel@ffmpeg.org Date: Sun, 5 May 2024 18:36:41 +0200 Message-ID: <20240505163656.765900-3-nowrep@gmail.com> X-Mailer: git-send-email 2.45.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavc/vaapi_h264: Don't try to merge fields in DPB for non-field pics 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: David Rosca 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: This path can be hit when there are missing references while decoding progressive stream and would completely break the DPB contents. --- libavcodec/vaapi_h264.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c index b47531ce1c..ca0076f57a 100644 --- a/libavcodec/vaapi_h264.c +++ b/libavcodec/vaapi_h264.c @@ -98,22 +98,24 @@ static int dpb_add(DPB *dpb, const H264Picture *pic) if (dpb->size >= dpb->max_size) return -1; - for (i = 0; i < dpb->size; i++) { - VAPictureH264 * const va_pic = &dpb->va_pics[i]; - if (va_pic->picture_id == ff_vaapi_get_surface_id(pic->f)) { - VAPictureH264 temp_va_pic; - fill_vaapi_pic(&temp_va_pic, pic, 0); - - if ((temp_va_pic.flags ^ va_pic->flags) & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD)) { - va_pic->flags |= temp_va_pic.flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD); - /* Merge second field */ - if (temp_va_pic.flags & VA_PICTURE_H264_TOP_FIELD) { - va_pic->TopFieldOrderCnt = temp_va_pic.TopFieldOrderCnt; - } else { - va_pic->BottomFieldOrderCnt = temp_va_pic.BottomFieldOrderCnt; + if (pic->field_picture) { + for (i = 0; i < dpb->size; i++) { + VAPictureH264 * const va_pic = &dpb->va_pics[i]; + if (va_pic->picture_id == ff_vaapi_get_surface_id(pic->f)) { + VAPictureH264 temp_va_pic; + fill_vaapi_pic(&temp_va_pic, pic, 0); + + if ((temp_va_pic.flags ^ va_pic->flags) & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD)) { + va_pic->flags |= temp_va_pic.flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD); + /* Merge second field */ + if (temp_va_pic.flags & VA_PICTURE_H264_TOP_FIELD) { + va_pic->TopFieldOrderCnt = temp_va_pic.TopFieldOrderCnt; + } else { + va_pic->BottomFieldOrderCnt = temp_va_pic.BottomFieldOrderCnt; + } } + return 0; } - return 0; } } -- 2.45.0 _______________________________________________ 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".