From patchwork Mon Sep 23 05:19:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marth64 X-Patchwork-Id: 51719 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:d154:0:b0:48e:c0f8:d0de with SMTP id bt20csp2243880vqb; Sun, 22 Sep 2024 22:20:38 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX45ceBWS1+uAYnwzu911nlDkw7OdAf7EiM3rot9Dlp8GN+edJDZN/0nUkKProc9M+zWjpWFgGODSLGCIUNN0IK@gmail.com X-Google-Smtp-Source: AGHT+IEKIdZVoRrap+wd89pQPOPig8VEsgCB5+Jy8Hw7pB5q+VRyfQ7ma/vWE9AcWqqDCd39hkJq X-Received: by 2002:a05:6402:35d3:b0:5c5:b903:7d52 with SMTP id 4fb4d7f45d1cf-5c5b9037e30mr5837071a12.5.1727068838029; Sun, 22 Sep 2024 22:20:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727068838; cv=none; d=google.com; s=arc-20240605; b=Mt8NS+V/vue582Jbr86SnwhB3pAgpOpw5JH6HTSe4rkiW2B0s2J2YHKnSKE5XJtyVe xYndxGDUtRQf13bgap+ibvDsHN5PAXCU0u79/oMgiKEFeozJEwaHZ2zxt14Y5JWUrkrG TsSUhOVnohbhR7S9hyHlI6cjyaFjf9Ar9qE5C6fFrErh2WTXquLYJWMVvIf6QuYKeyIc Aubnx6qr1f15BTKMvjriFq8Cg5jsZ1FoWBIgeYeE4piGybHU/0tfX+dc8Z1zterfwzQ2 CGULkeIbv967pkB/vxOHqUh+jZdl6vZ4p6XUDcyH5/DYU7dbWkUUkEF+u3LhVFlvXgMS tlyA== 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=PWyi+4jdZoaaasIF5w1y5hPcOi10vFBot5Nd2082xqw=; fh=PlWMzmI9LD2qGS7ipLrQl8z0iaQTLQLHzoGuXcBzpCg=; b=FpOQ4ogmzNMomBoGy7yOz0zZ2cXReq+XztVbIk06qoVp1V4u14zaFdPB4Zs0RFWazc 1yMK/Lq24gMYiYAIdZKu0d/SicUoWCXpUIhPpEi+oos7I8+Pf2CoDOnT5poPwMOmcmK/ ZFUr+Zz0By6OyYKHD+qmPdoI9qZd+SyQqOBiQiinuud450dedqHPaeLYV2w8JufyPtHU wBmEGHYXC/S593HAPaN1+Y7S6wknw85nRA7yVUTSIxp7wV6kfSAEjsrTa9qxMDDwAaxn 6/UslgEXWatFSgM1Dr1rwBVNZ2aUP0tBnkbgeNstLW7nXQIvpHh8BADMMeBMSazjdhDu 4DVg==; 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=P09UBGS3; 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; dara=fail header.i=@gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5c459be605esi6399655a12.135.2024.09.22.22.20.37; Sun, 22 Sep 2024 22:20:38 -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=@proxyid.net header.s=google header.b=P09UBGS3; 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; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 62F7A68DA7A; Mon, 23 Sep 2024 08:20:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f225.google.com (mail-oi1-f225.google.com [209.85.167.225]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 33F3568D942 for ; Mon, 23 Sep 2024 08:19:50 +0300 (EEST) Received: by mail-oi1-f225.google.com with SMTP id 5614622812f47-3e03d17365bso2419995b6e.1 for ; Sun, 22 Sep 2024 22:19:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proxyid.net; s=google; t=1727068789; x=1727673589; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zDyjzyjNVd7q+OW0s58cT8Q1kbuIEe4FcBIHNrLT4m0=; b=P09UBGS3zJAFuBUP9lieGTUVBoqolzDkg+QXF8jhUxabY01mUqW9X6E8p/uNc68oeN X8pSejCBOIDgcSF++jHEcuSMuNumUDDu95W+pNwlNde8E7mBJqT5BU03OnmFAouxGthN 0ZsRdAe5jaiUuMfPi/q/CMaNtf1b6zSz+o8ZYwm9lQVzDftiLHPtJA7ZO73fq7RKcjVz 6V82t/kR5h7QHQ++/HOg91iIf3ozT+jc8yMyAtunsqd3CATKOm5DPZY/KIL5ZbZtaH7y XqD+vzmicVw2AVcQWEbqyKEsjlA0SXa5srHSVuAFff9JujJY8HCXq5ok5qIuQ0crKoCJ qwTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727068789; x=1727673589; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zDyjzyjNVd7q+OW0s58cT8Q1kbuIEe4FcBIHNrLT4m0=; b=oKJ7JVUiPdlA3D9mMg2kwEYix+U5/6zytvr2EaAInb2Mk49pjikNQ3t/S3I7jPc3oM /7IjnKdil609Wp6IC4llrLrdek6J1zedX0+BK4we/5NlfUBExZr/6Dd7lFNuZadvB+kY maXESe2xJJtjBKkMn0QnS1+b0EFllOgyy64ieASTsQD21d43tXoXRrttCnnxQCbX6Cmh 65S++HiCsOEI6agYSNl38psJh3lY5nTGGM02GUj+J1UYu+mmk1sNpkm5ZHLhti1N852o ynfRtZZEgRB1ovm7oJYnnM99L/ioQ1irEsAY+NkaRN/R0eiNKcdRLTJy2F3vq2d1MHLq Zutw== X-Gm-Message-State: AOJu0YxpXXYqbpjHm6EKEEv0u+SyvWkmC5mVogjxDGDkLcPbZDcFmLAY kcDEKJDdzUm/xNVkCCMc3J2nflltjcAegEdvVimCyo5ZfFx5rLmODM/dwxLBlepahK0DxDTTe4R 7EBzwlw7IoHWCYSWDO5kvbdquTvuFV3VKGhWzgMe5 X-Received: by 2002:a05:6808:1b8f:b0:3e2:66ea:d5ef with SMTP id 5614622812f47-3e27290b1demr6790165b6e.5.1727068788843; Sun, 22 Sep 2024 22:19:48 -0700 (PDT) Received: from localhost.localdomain (c-69-245-177-215.hsd1.il.comcast.net. [69.245.177.215]) by smtp-relay.gmail.com with ESMTPS id 006d021491bc7-5e3bc69661csm202010eaf.20.2024.09.22.22.19.48 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 22 Sep 2024 22:19:48 -0700 (PDT) X-Relaying-Domain: proxyid.net From: Marth64 To: ffmpeg-devel@ffmpeg.org Date: Mon, 23 Sep 2024 00:19:34 -0500 Message-Id: <20240923051941.54124-5-marth64@proxyid.net> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20240923051941.54124-1-marth64@proxyid.net> References: <20240923051941.54124-1-marth64@proxyid.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 04/11] avformat/dvdvideodec: remove "auto" value for -pg option, default to 1 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: 4rzQpLjXl/N6 The default "auto" mode is effectively useless; the reasonable default use case is to use the first PG (segment) of the selected PGC for both menus and standard titles. Just default the value to 1, since the option is irrelevant unless -pgc is also set. Note that this should not break users using this advanced option. The "auto" mode errored and asked for a PG number regardless for non-menus, and for menus the mode simply defaulted to 1. Signed-off-by: Marth64 --- doc/demuxers.texi | 3 +-- libavformat/dvdvideodec.c | 31 +++++++++---------------------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/doc/demuxers.texi b/doc/demuxers.texi index 04293c4813..74b68778bd 100644 --- a/doc/demuxers.texi +++ b/doc/demuxers.texi @@ -397,8 +397,7 @@ Default is 0, automatically resolve from value of @option{title}. The entry PG to start playback, in conjunction with @option{pgc}. Alternative to setting @option{title}. Chapter markers are not supported at this time. -Default is 0, automatically resolve from value of @option{title}, or -start from the beginning (PG 1) of the menu. +Default is 1, the first PG of the PGC. @item preindex @var{bool} Enable this to have accurate chapter (PTT) markers and duration measurement, diff --git a/libavformat/dvdvideodec.c b/libavformat/dvdvideodec.c index 18c356c132..bed7c38ff6 100644 --- a/libavformat/dvdvideodec.c +++ b/libavformat/dvdvideodec.c @@ -537,7 +537,7 @@ static int dvdvideo_play_open(AVFormatContext *s, DVDVideoPlaybackState *state) goto end_dvdnav_error; } - if (c->opt_pgc > 0 && c->opt_pg > 0) { + if (c->opt_pgc > 0) { if (dvdnav_program_play(state->dvdnav, c->opt_title, c->opt_pgc, c->opt_pg) != DVDNAV_STATUS_OK) { av_log(s, AV_LOG_ERROR, "Unable to start playback at title %d, PGC %d, PG %d\n", c->opt_title, c->opt_pgc, c->opt_pg); @@ -1541,13 +1541,6 @@ static int dvdvideo_read_header(AVFormatContext *s) c->opt_menu_lu = 1; } - if (!c->opt_pg) { - av_log(s, AV_LOG_INFO, "Defaulting to menu PG #1. " - "This is not always desirable, validation suggested.\n"); - - c->opt_pg = 1; - } - if ((ret = dvdvideo_ifo_open(s)) < 0 || (ret = dvdvideo_menu_open(s, &c->play_state)) < 0 || (ret = dvdvideo_subdemux_open(s)) < 0 || @@ -1558,7 +1551,13 @@ static int dvdvideo_read_header(AVFormatContext *s) return 0; } - if (c->opt_chapter_end != 0 && c->opt_chapter_start > c->opt_chapter_end) { + if (c->opt_pgc && (c->opt_chapter_start > 1 || c->opt_chapter_end > 0 || c->opt_preindex)) { + av_log(s, AV_LOG_ERROR, "PGC extraction not compatible with chapter or preindex options\n"); + + return AVERROR(EINVAL); + } + + if (!c->opt_pgc && (c->opt_chapter_end != 0 && c->opt_chapter_start > c->opt_chapter_end)) { av_log(s, AV_LOG_ERROR, "Chapter (PTT) range [%d, %d] is invalid\n", c->opt_chapter_start, c->opt_chapter_end); @@ -1572,18 +1571,6 @@ static int dvdvideo_read_header(AVFormatContext *s) c->opt_title = 1; } - if (c->opt_pgc) { - if (c->opt_pg == 0) { - av_log(s, AV_LOG_ERROR, "Invalid coordinates. If -pgc is set, -pg must be set too.\n"); - - 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); - } - } - if ((ret = dvdvideo_ifo_open(s)) < 0) return ret; @@ -1761,7 +1748,7 @@ static const AVOption dvdvideo_options[] = { {"menu", "demux menu domain", OFFSET(opt_menu), AV_OPT_TYPE_BOOL, { .i64=0 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, {"menu_lu", "menu language unit (0=auto)", OFFSET(opt_menu_lu), AV_OPT_TYPE_INT, { .i64=0 }, 0, 99, AV_OPT_FLAG_DECODING_PARAM }, {"menu_vts", "menu VTS (0=VMG main menu)", OFFSET(opt_menu_vts), AV_OPT_TYPE_INT, { .i64=0 }, 0, 99, AV_OPT_FLAG_DECODING_PARAM }, - {"pg", "entry PG number (0=auto)", OFFSET(opt_pg), AV_OPT_TYPE_INT, { .i64=0 }, 0, 255, AV_OPT_FLAG_DECODING_PARAM }, + {"pg", "entry PG number (when paired with PGC number)", OFFSET(opt_pg), AV_OPT_TYPE_INT, { .i64=1 }, 1, 255, AV_OPT_FLAG_DECODING_PARAM }, {"pgc", "entry PGC number (0=auto)", OFFSET(opt_pgc), AV_OPT_TYPE_INT, { .i64=0 }, 0, 999, AV_OPT_FLAG_DECODING_PARAM }, {"preindex", "enable for accurate chapter markers, slow (2-pass read)", OFFSET(opt_preindex), AV_OPT_TYPE_BOOL, { .i64=0 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM }, {"region", "playback region number (0=free)", OFFSET(opt_region), AV_OPT_TYPE_INT, { .i64=0 }, 0, 8, AV_OPT_FLAG_DECODING_PARAM },