summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarth64 <[email protected]>2024-10-07 18:05:01 -0500
committerMarth64 <[email protected]>2024-11-16 14:40:51 -0600
commita2c57e27d6bb7b849b4e84612bb99dc514f6bc96 (patch)
tree4c040a6a123bffa3960dec12aec15592380fdafc
parent60434b483c54aa683a3249a158c8610d5db2fe4a (diff)
avformat/dvdvideodec: open subdemuxer after initializing IFO headers
It is wasteful to open the subdemuxer if an error occurs while initializing streams or reading IFO headers. Signed-off-by: Marth64 <[email protected]>
-rw-r--r--libavformat/dvdvideodec.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/libavformat/dvdvideodec.c b/libavformat/dvdvideodec.c
index 9983d34ec9..72565ee125 100644
--- a/libavformat/dvdvideodec.c
+++ b/libavformat/dvdvideodec.c
@@ -1565,9 +1565,9 @@ static int dvdvideo_read_header(AVFormatContext *s)
if ((ret = dvdvideo_ifo_open(s)) < 0 ||
(c->opt_preindex && (ret = dvdvideo_chapters_setup_preindex(s)) < 0) ||
(ret = dvdvideo_menu_open(s, &c->play_state)) < 0 ||
- (ret = dvdvideo_subdemux_open(s)) < 0 ||
(ret = dvdvideo_video_stream_setup(s)) < 0 ||
- (ret = dvdvideo_audio_stream_add_all(s)) < 0)
+ (ret = dvdvideo_audio_stream_add_all(s)) < 0 ||
+ (ret = dvdvideo_subdemux_open(s)) < 0)
return ret;
return 0;
@@ -1599,16 +1599,14 @@ static int dvdvideo_read_header(AVFormatContext *s)
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 ||
- (ret = dvdvideo_subdemux_open(s)) < 0 ||
- (ret = dvdvideo_video_stream_setup(s)) < 0 ||
- (ret = dvdvideo_audio_stream_add_all(s)) < 0 ||
- (ret = dvdvideo_subp_stream_add_all(s)) < 0)
+ if ((ret = dvdvideo_play_open(s, &c->play_state)) < 0 ||
+ (!c->opt_pgc && !c->opt_preindex && (ret = dvdvideo_chapters_setup_simple(s)) < 0) ||
+ (ret = dvdvideo_video_stream_setup(s)) < 0 ||
+ (ret = dvdvideo_audio_stream_add_all(s)) < 0 ||
+ (ret = dvdvideo_subp_stream_add_all(s)) < 0 ||
+ (ret = dvdvideo_subdemux_open(s)) < 0)
return ret;
- if (!c->opt_pgc && !c->opt_preindex)
- return dvdvideo_chapters_setup_simple(s);
-
return 0;
}