1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00

avformat/dvdvideodec: Don't add chapter markers for empty/dummy PTTs

Some discs (usually same ones with padding cells), also have empty
padding PTTs / chapters to accompany them. This results, for example,
in an extra chapter marker that starts and ends at 0 (no duration).

Don't add these empty chapter markers.

Signed-off-by: Marth64 <marth64@proxyid.net>
This commit is contained in:
Marth64 2024-07-02 00:41:39 -05:00 committed by Stefano Sabatini
parent 9af348bd1a
commit eb07a593d3

View File

@ -875,6 +875,9 @@ static int dvdvideo_chapters_setup_simple(AVFormatContext *s)
for (int i = chapter_start - 1; i < chapter_end; i++) { for (int i = chapter_start - 1; i < chapter_end; i++) {
uint64_t time_effective = c->play_state.pgc_pg_times_est[i] - c->play_state.nav_pts; uint64_t time_effective = c->play_state.pgc_pg_times_est[i] - c->play_state.nav_pts;
if (time_effective - time_prev == 0)
continue;
if (chapter_start != chapter_end && if (chapter_start != chapter_end &&
!avpriv_new_chapter(s, i, DVDVIDEO_TIME_BASE_Q, time_prev, time_effective, NULL)) { !avpriv_new_chapter(s, i, DVDVIDEO_TIME_BASE_Q, time_prev, time_effective, NULL)) {
@ -935,13 +938,16 @@ static int dvdvideo_chapters_setup_preindex(AVFormatContext *s)
continue; continue;
} }
if (!avpriv_new_chapter(s, nb_chapters, DVDVIDEO_TIME_BASE_Q, cur_chapter_offset, if (cur_chapter_duration > 0) {
cur_chapter_offset + cur_chapter_duration, NULL)) { if (!avpriv_new_chapter(s, nb_chapters, DVDVIDEO_TIME_BASE_Q, cur_chapter_offset,
ret = AVERROR(ENOMEM); cur_chapter_offset + cur_chapter_duration, NULL)) {
goto end_close; ret = AVERROR(ENOMEM);
goto end_close;
}
nb_chapters++;
} }
nb_chapters++;
cur_chapter_offset += cur_chapter_duration; cur_chapter_offset += cur_chapter_duration;
cur_chapter_duration = state.vobu_duration; cur_chapter_duration = state.vobu_duration;
last_ptt = state.ptt; last_ptt = state.ptt;