[FFmpeg-devel] [PATCH] avformat/dvdvideodec: remove `if ((ret = ...) < 0)` pattern
Marth64
marth64 at proxyid.net
Tue Mar 26 22:17:49 EET 2024
Recent advice plus my own experience agree that this pattern
is error-prone. Instead, set `ret` in its own line and do
the error validation after. Also, explicitly return 0 on success
in dvdvideo_chapters_setup_preindex()
Signed-off-by: Marth64 <marth64 at proxyid.net>
---
libavformat/dvdvideodec.c | 132 +++++++++++++++++++++++++-------------
1 file changed, 86 insertions(+), 46 deletions(-)
diff --git a/libavformat/dvdvideodec.c b/libavformat/dvdvideodec.c
index c94e7f7fe6..000f9c5c9b 100644
--- a/libavformat/dvdvideodec.c
+++ b/libavformat/dvdvideodec.c
@@ -900,7 +900,7 @@ static int dvdvideo_chapters_setup_preindex(AVFormatContext *s)
{
DVDVideoDemuxContext *c = s->priv_data;
- int ret = 0, interrupt = 0;
+ int ret, interrupt = 0;
int nb_chapters = 0, last_ptt = c->opt_chapter_start;
uint64_t cur_chapter_offset = 0, cur_chapter_duration = 0;
DVDVideoPlaybackState state = {0};
@@ -909,9 +909,10 @@ static int dvdvideo_chapters_setup_preindex(AVFormatContext *s)
int nav_event;
if (c->opt_chapter_start == c->opt_chapter_end)
- return ret;
+ return 0;
- if ((ret = dvdvideo_play_open(s, &state)) < 0)
+ ret = dvdvideo_play_open(s, &state);
+ if (ret < 0)
return ret;
if (state.pgc->nr_of_programs == 1)
@@ -1058,7 +1059,7 @@ static int dvdvideo_video_stream_setup(AVFormatContext *s)
{
DVDVideoDemuxContext *c = s->priv_data;
- int ret = 0;
+ int ret;
DVDVideoVTSVideoStreamEntry entry = {0};
video_attr_t video_attr;
@@ -1068,14 +1069,11 @@ static int dvdvideo_video_stream_setup(AVFormatContext *s)
else
video_attr = c->vts_ifo->vtsi_mat->vts_video_attr;
- if ((ret = dvdvideo_video_stream_analyze(s, video_attr, &entry)) < 0 ||
- (ret = dvdvideo_video_stream_add(s, &entry, AVSTREAM_PARSE_HEADERS)) < 0) {
-
- av_log(s, AV_LOG_ERROR, "Unable to add video stream\n");
+ ret = dvdvideo_video_stream_analyze(s, video_attr, &entry);
+ if (ret < 0)
return ret;
- }
- return 0;
+ return dvdvideo_video_stream_add(s, &entry, AVSTREAM_PARSE_HEADERS);
}
static int dvdvideo_audio_stream_analyze(AVFormatContext *s, audio_attr_t audio_attr,
@@ -1219,7 +1217,7 @@ static int dvdvideo_audio_stream_add_all(AVFormatContext *s)
{
DVDVideoDemuxContext *c = s->priv_data;
- int ret = 0;
+ int ret;
int nb_streams;
if (c->opt_menu)
@@ -1241,8 +1239,9 @@ static int dvdvideo_audio_stream_add_all(AVFormatContext *s)
if (!(c->play_state.pgc->audio_control[i] & 0x8000))
continue;
- if ((ret = dvdvideo_audio_stream_analyze(s, audio_attr, c->play_state.pgc->audio_control[i],
- &entry)) < 0)
+ ret = dvdvideo_audio_stream_analyze(s, audio_attr, c->play_state.pgc->audio_control[i],
+ &entry);
+ if (ret < 0)
goto break_error;
/* IFO structures can declare duplicate entries for the same startcode */
@@ -1250,7 +1249,8 @@ static int dvdvideo_audio_stream_add_all(AVFormatContext *s)
if (s->streams[j]->id == entry.startcode)
continue;
- if ((ret = dvdvideo_audio_stream_add(s, &entry, AVSTREAM_PARSE_HEADERS)) < 0)
+ ret = dvdvideo_audio_stream_add(s, &entry, AVSTREAM_PARSE_HEADERS);
+ if (ret < 0)
goto break_error;
continue;
@@ -1302,7 +1302,8 @@ static int dvdvideo_subp_stream_add(AVFormatContext *s, DVDVideoPGCSubtitleStrea
st->codecpar->codec_type = AVMEDIA_TYPE_SUBTITLE;
st->codecpar->codec_id = AV_CODEC_ID_DVD_SUBTITLE;
- if ((ret = ff_dvdclut_palette_extradata_cat(entry->clut, FF_DVDCLUT_CLUT_SIZE, st->codecpar)) < 0)
+ ret = ff_dvdclut_palette_extradata_cat(entry->clut, FF_DVDCLUT_CLUT_SIZE, st->codecpar);
+ if (ret < 0)
return ret;
if (entry->lang_iso)
@@ -1326,12 +1327,13 @@ static int dvdvideo_subp_stream_add_internal(AVFormatContext *s, uint32_t offset
subp_attr_t subp_attr,
enum DVDVideoSubpictureViewport viewport)
{
- int ret = 0;
+ int ret;
DVDVideoPGCSubtitleStreamEntry entry = {0};
entry.viewport = viewport;
- if ((ret = dvdvideo_subp_stream_analyze(s, offset, subp_attr, &entry)) < 0)
+ ret = dvdvideo_subp_stream_analyze(s, offset, subp_attr, &entry);
+ if (ret < 0)
goto end_error;
/* IFO structures can declare duplicate entries for the same startcode */
@@ -1339,7 +1341,8 @@ static int dvdvideo_subp_stream_add_internal(AVFormatContext *s, uint32_t offset
if (s->streams[i]->id == entry.startcode)
return 0;
- if ((ret = dvdvideo_subp_stream_add(s, &entry, AVSTREAM_PARSE_HEADERS)) < 0)
+ ret = dvdvideo_subp_stream_add(s, &entry, AVSTREAM_PARSE_HEADERS);
+ if (ret < 0)
goto end_error;
return 0;
@@ -1363,7 +1366,7 @@ static int dvdvideo_subp_stream_add_all(AVFormatContext *s)
for (int i = 0; i < nb_streams; i++) {
- int ret = 0;
+ int ret;
uint32_t subp_control;
subp_attr_t subp_attr;
video_attr_t video_attr;
@@ -1387,29 +1390,35 @@ static int dvdvideo_subp_stream_add_all(AVFormatContext *s)
/* 4:3 */
if (!video_attr.display_aspect_ratio) {
- if ((ret = dvdvideo_subp_stream_add_internal(s, subp_control >> 24, subp_attr,
- DVDVIDEO_SUBP_VIEWPORT_FULLSCREEN)) < 0)
+ ret = dvdvideo_subp_stream_add_internal(s, subp_control >> 24, subp_attr,
+ DVDVIDEO_SUBP_VIEWPORT_FULLSCREEN);
+ if (ret < 0)
return ret;
continue;
}
/* 16:9 */
- if (( ret = dvdvideo_subp_stream_add_internal(s, subp_control >> 16, subp_attr,
- DVDVIDEO_SUBP_VIEWPORT_WIDESCREEN)) < 0)
+ ret = dvdvideo_subp_stream_add_internal(s, subp_control >> 16, subp_attr,
+ DVDVIDEO_SUBP_VIEWPORT_WIDESCREEN);
+ if (ret < 0)
return ret;
/* 16:9 letterbox */
- if (video_attr.permitted_df == 2 || video_attr.permitted_df == 0)
- if ((ret = dvdvideo_subp_stream_add_internal(s, subp_control >> 8, subp_attr,
- DVDVIDEO_SUBP_VIEWPORT_LETTERBOX)) < 0)
+ if (video_attr.permitted_df == 2 || video_attr.permitted_df == 0) {
+ ret = dvdvideo_subp_stream_add_internal(s, subp_control >> 8, subp_attr,
+ DVDVIDEO_SUBP_VIEWPORT_LETTERBOX);
+ if (ret < 0)
return ret;
+ }
/* 16:9 pan-and-scan */
- if (video_attr.permitted_df == 1 || video_attr.permitted_df == 0)
- if ((ret = dvdvideo_subp_stream_add_internal(s, subp_control, subp_attr,
- DVDVIDEO_SUBP_VIEWPORT_PANSCAN)) < 0)
+ if (video_attr.permitted_df == 1 || video_attr.permitted_df == 0) {
+ ret = dvdvideo_subp_stream_add_internal(s, subp_control, subp_attr,
+ DVDVIDEO_SUBP_VIEWPORT_PANSCAN);
+ if (ret < 0)
return ret;
+ }
}
return 0;
@@ -1433,7 +1442,7 @@ static int dvdvideo_subdemux_read_data(void *opaque, uint8_t *buf, int buf_size)
AVFormatContext *s = opaque;
DVDVideoDemuxContext *c = s->priv_data;
- int ret = 0;
+ int ret;
int nav_event;
if (c->play_end)
@@ -1471,7 +1480,7 @@ static int dvdvideo_subdemux_open(AVFormatContext *s)
{
DVDVideoDemuxContext *c = s->priv_data;
extern const FFInputFormat ff_mpegps_demuxer;
- int ret = 0;
+ int ret;
if (!(c->mpeg_buf = av_mallocz(DVDVIDEO_BLOCK_SIZE)))
return AVERROR(ENOMEM);
@@ -1483,7 +1492,8 @@ static int dvdvideo_subdemux_open(AVFormatContext *s)
if (!(c->mpeg_ctx = avformat_alloc_context()))
return AVERROR(ENOMEM);
- if ((ret = ff_copy_whiteblacklists(c->mpeg_ctx, s)) < 0) {
+ ret = ff_copy_whiteblacklists(c->mpeg_ctx, s);
+ if (ret < 0) {
avformat_free_context(c->mpeg_ctx);
c->mpeg_ctx = NULL;
@@ -1506,7 +1516,7 @@ static int dvdvideo_read_header(AVFormatContext *s)
{
DVDVideoDemuxContext *c = s->priv_data;
- int ret = 0;
+ int ret;
if (c->opt_menu) {
if (c->opt_region ||
@@ -1539,12 +1549,25 @@ static int dvdvideo_read_header(AVFormatContext *s)
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 ||
- (ret = dvdvideo_video_stream_setup(s)) < 0 ||
- (ret = dvdvideo_audio_stream_add_all(s)) < 0)
- return ret;
+ ret = dvdvideo_ifo_open(s);
+ if (ret < 0)
+ return ret;
+
+ ret = dvdvideo_menu_open(s, &c->play_state);
+ if (ret < 0)
+ return ret;
+
+ ret = dvdvideo_subdemux_open(s);
+ if (ret < 0)
+ return ret;
+
+ ret = dvdvideo_video_stream_setup(s);
+ if (ret < 0)
+ return ret;
+
+ ret = dvdvideo_audio_stream_add_all(s);
+ if (ret < 0)
+ return ret;
return 0;
}
@@ -1568,17 +1591,34 @@ static int dvdvideo_read_header(AVFormatContext *s)
}
}
- if ((ret = dvdvideo_ifo_open(s)) < 0)
+ ret = dvdvideo_ifo_open(s);
+ if (ret < 0)
return ret;
- if (!c->opt_pgc && c->opt_preindex && (ret = dvdvideo_chapters_setup_preindex(s)) < 0)
+ if (!c->opt_pgc && c->opt_preindex) {
+ ret = dvdvideo_chapters_setup_preindex(s);
+ if (ret < 0)
+ return ret;
+ }
+
+ ret = dvdvideo_play_open(s, &c->play_state);
+ if (ret < 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)
+ ret = dvdvideo_subdemux_open(s);
+ if (ret < 0)
+ return ret;
+
+ ret = dvdvideo_video_stream_setup(s);
+ if (ret < 0)
+ return ret;
+
+ ret = dvdvideo_audio_stream_add_all(s);
+ if (ret < 0)
+ return ret;
+
+ ret = dvdvideo_subp_stream_add_all(s);
+ if (ret < 0)
return ret;
if (!c->opt_pgc && !c->opt_preindex)
--
2.34.1
More information about the ffmpeg-devel
mailing list