From patchwork Sun Mar 3 02:29:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marth64 X-Patchwork-Id: 46715 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp2118578pzb; Sat, 2 Mar 2024 18:29:52 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCWMYYoC01OXgx5H8cvp9pzvVqDFBTQH3WDHxKpMeXTQEACXRIh8ubjTycCsRPIqVwFA1Je03i39I4TpcBOicCMPdG6zQUZMOHWsPg== X-Google-Smtp-Source: AGHT+IF4nKVh9apVQzPah61HL8teX41fLJ7tX0cOp7T3+Lo2j8aVS9M1ppLjRAphtQnXDK6wCD6m X-Received: by 2002:a17:906:5295:b0:a43:b50d:1074 with SMTP id c21-20020a170906529500b00a43b50d1074mr4392731ejm.23.1709432991654; Sat, 02 Mar 2024 18:29:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1709432991; cv=none; d=google.com; s=arc-20160816; b=UczVsyQ7nPcwKXdJjcG32XEJORhEGWGAuKxIF9UJzOVlk53eeyQXk1ZOAbhXb76OuV cBWDvE+IOnqChcdqcCRac2jQWL8glRyoAHmVa8GBS9LTeJ7Bady0TLYjk3XT5rX0kQyd VriPo5/YerJLm4k2xYqbhiTpQdjqTl7RL5qLsKvNwIoXa9LF3+QGsseaQ+tc4DPlScwq vypwrSBqFJgz2nYK5OBqf+ve7RpC5fB4OZAYYrQKLYxfGHEadXkk3mWIN2rc4zPw21qj RgTGK2dLXUQEVU87nq0uhKa8ahIkifC/ghsvSlTPRrFk8nVBNlU2ef0CfAp3eU7O0dJf ysIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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:message-id:date:to:from :dkim-signature:delivered-to; bh=5xqESTKflqhI2Mrbn+Zmn+3BsFl6NzDjIykrTOCEOUQ=; fh=PlWMzmI9LD2qGS7ipLrQl8z0iaQTLQLHzoGuXcBzpCg=; b=Zfav4ID1v4OdWtxUq9IczgJbKFr9QybatUkhCvOxZVlwzbVabsWnVhMbRH2Zi72ovp Cq1lb3GYytoAIf83qiDZ1xwDaqMFcE843hHcbscJlG/OSqizHKW7i8zTQwZLZSv2M/pn IvtNQMyb9oByCJzxffXk4SiR41imJP+mmO1MQ+S6SbN3t68T5XVEff7WNFf3/1Z0xmcx Q1D+xgtkS0nP2WqhuGS0TL6e9CcOAoxHYnMCkIA/HMs0A/AIKL4ExERpn3a9mQvZGS1N amL5CfzN+YjjgAs/ICbI+m38/9Z2sG67GunzcfXR5DAiNoAYV/Z4SZx47RS/mQZ+va1X cm9w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@proxyid.net header.s=google header.b=KyPTj8yA; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gl12-20020a170906e0cc00b00a440fb646b3si2793977ejb.791.2024.03.02.18.29.51; Sat, 02 Mar 2024 18:29:51 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@proxyid.net header.s=google header.b=KyPTj8yA; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E88D468D33B; Sun, 3 Mar 2024 04:29:47 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f227.google.com (mail-oi1-f227.google.com [209.85.167.227]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B77D668BE9D for ; Sun, 3 Mar 2024 04:29:41 +0200 (EET) Received: by mail-oi1-f227.google.com with SMTP id 5614622812f47-3c1c913508fso2358495b6e.3 for ; Sat, 02 Mar 2024 18:29:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proxyid.net; s=google; t=1709432980; x=1710037780; 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=GZ/y/CHqHSfpfMHeUO5W5Oay+4LrDjaai3+/TbLFpj0=; b=KyPTj8yALa1RozD6ionbQz0XadXDJSKPqWUbtuekqIdtHe/OH8VeKrBT0LtW6F1O0Z ojz+J6A8QJXZNK/PyUFbLfk0IZwZIx2knKnGIWOA9bDLTCEcQs2kLx5LatcYBvFtYCRX Ieox9VSkUK9YxF5RTsPMJmkCpBBqyrwY7ea3ud4TrHYVkVgGeALiJzSIm2NptEm5JTpf uRvrUceqll+563WjYizw7THonazdpssFzNg/LOt/Vacdks+bxYtd+ok3KClh0/jQ91AI l4336VkHFjDT/aG5dM5CombKnZCXCpXb9bMavZ/N6GcAJ8E+FVT5kNP4tZYFF9rwN8Oi OaSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709432980; x=1710037780; 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=GZ/y/CHqHSfpfMHeUO5W5Oay+4LrDjaai3+/TbLFpj0=; b=GbjoX8i82OFRUgvW4ueM/fSlNZtF6Iw3D3DI5UVBn1Y77S8ZBt0cm1JRvU30J0RZF5 8oyiL1oJWGf3PPSgBQmIW4nbUsnJnAQ9PLaBXolFI0ZeZvy5bRU44/ZLjdkZAi0Us99R 2EePaV8ZXq9mC1WInr0z1liJngm4YM9lrQee16soW7q0/YPLRpRzG1BLnS0e3UzflqsZ 9DPXD+FwojQNaZxF345WOl1kUebEMfzXBSrteFa4n2A4JMPCe8jUk2bObpAhRScpVlNo UnpziQwd/nwhCEnbfo1sxoi0zZuUVrajaWNMp4Z8LpZSeU8U1luDi1/KkABFXh9yYzmj 172Q== X-Gm-Message-State: AOJu0Yyv+WUteqZ9rMqhdwCpED8D5Y2tj9Td81FGcGLEK6iR3iG6GGn/ XQT2KTUb/Lr/Ps6Ix+FUc6sLu0YGsaZKNdtu9CFyURUD0B31O3VoaVt5gEXTmr9RVGN7QgPCEFG A/b1nyGSCbj+5G49+HIiHOUVSHs/QYd4lVAVDUHmN X-Received: by 2002:a05:6808:3c8b:b0:3c0:2bf5:7c11 with SMTP id gs11-20020a0568083c8b00b003c02bf57c11mr9559311oib.17.1709432980031; Sat, 02 Mar 2024 18:29:40 -0800 (PST) Received: from wsx-cc1-001.. (c-76-141-249-38.hsd1.il.comcast.net. [76.141.249.38]) by smtp-relay.gmail.com with ESMTPS id z15-20020a17090ad78f00b0029b30e13f40sm110192pju.12.2024.03.02.18.29.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Mar 2024 18:29:40 -0800 (PST) X-Relaying-Domain: proxyid.net From: Marth64 To: ffmpeg-devel@ffmpeg.org Date: Sat, 2 Mar 2024 20:29:13 -0600 Message-Id: <20240303022912.2105313-1-marth64@proxyid.net> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/dvdvideodec: fix -pgc and -pg options 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: Marth64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: VwWo7Oa16MTF In merged DVD patch, -pgc and -pg options were broken. While these are rather advanced options, they are the only means to get content for some strangely authored discs. Signed-off-by: Marth64 --- libavformat/dvdvideodec.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/libavformat/dvdvideodec.c b/libavformat/dvdvideodec.c index 3355010356..d53aef07ff 100644 --- a/libavformat/dvdvideodec.c +++ b/libavformat/dvdvideodec.c @@ -508,11 +508,12 @@ static int dvdvideo_play_next_ps_block(AVFormatContext *s, DVDVideoPlaybackState state->celln, e_cell->cellN, is_cell_promising); if (!state->in_ps && !state->in_pgc) { - if (cur_title == c->opt_title && - cur_ptt == c->opt_chapter_start && - cur_pgcn == state->pgcn && - cur_pgn == state->entry_pgn && + if (cur_title == c->opt_title && + (c->opt_pgc || cur_ptt == c->opt_chapter_start) && + cur_pgcn == state->pgcn && + cur_pgn == state->entry_pgn && is_cell_promising) { + state->in_pgc = 1; } @@ -1266,19 +1267,21 @@ static int dvdvideo_read_header(AVFormatContext *s) } if (c->opt_pgc) { - if (c->opt_pg == 0) + if (c->opt_pg == 0) { av_log(s, AV_LOG_ERROR, "Invalid coordinates. If -pgc is set, -pg must be set too.\n"); - else if (c->opt_chapter_start > 1 || c->opt_chapter_end > 0 || c->opt_preindex) + + return AVERROR(EINVAL); + } else if (c->opt_chapter_start > 1 || c->opt_chapter_end > 0 || c->opt_preindex) { av_log(s, AV_LOG_ERROR, "-pgc is not compatible with the -preindex or " "-chapter_start/-chapter_end options\n"); - - return AVERROR(EINVAL); + return AVERROR(EINVAL); + } } if ((ret = dvdvideo_ifo_open(s)) < 0) return ret; - if (c->opt_preindex && (ret = dvdvideo_chapters_setup_preindex(s)) < 0) + if (!c->opt_pgc && c->opt_preindex && (ret = dvdvideo_chapters_setup_preindex(s)) < 0) return ret; if ((ret = dvdvideo_play_open(s, &c->play_state)) < 0 || @@ -1288,7 +1291,7 @@ static int dvdvideo_read_header(AVFormatContext *s) (ret = dvdvideo_subp_stream_add_all(s)) < 0) return ret; - if (!c->opt_preindex) + if (!c->opt_pgc && !c->opt_preindex) return dvdvideo_chapters_setup_simple(s); return ret;