diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2009-01-29 02:57:09 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2009-01-29 02:57:09 +0000 |
commit | 34b3fd9f619b35f2583ca2ac97ee3d73cbe2b9ba (patch) | |
tree | d7317dc5c7a525ae0d028a2d9c3e687b41fa564f | |
parent | bf1cddf3e890944e0108913b4271e403c094375c (diff) |
MPEGPlayer: If valid start AND end timestamps for a stream are not found then neither are considered to be valid which marks the stream as invalid. Also, we do program streams, not transport streams-- use correct terminology in MPEG parser.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19875 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/plugins/mpegplayer/mpeg_parser.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/apps/plugins/mpegplayer/mpeg_parser.c b/apps/plugins/mpegplayer/mpeg_parser.c index 42c388b375..30793e0350 100644 --- a/apps/plugins/mpegplayer/mpeg_parser.c +++ b/apps/plugins/mpegplayer/mpeg_parser.c @@ -332,8 +332,10 @@ static void init_times(struct stream *str) } } - /* End must be greater than start */ - if (str->start_pts >= str->end_pts) + /* End must be greater than start. If the start PTS is found, the end PTS + * must be valid too. If the start PTS was invalid, then the end will never + * be scanned above. */ + if (str->start_pts >= str->end_pts || str->end_pts == INVALID_TIMESTAMP) { str->start_pts = INVALID_TIMESTAMP; str->end_pts = INVALID_TIMESTAMP; @@ -1116,8 +1118,8 @@ int parser_init_stream(void) if (parse_demux(&video_str, STREAM_PM_RANDOM_ACCESS) == STREAM_OK) { - /* Found a video packet - assume transport stream */ - str_parser.format = STREAM_FMT_MPEG_TS; + /* Found a video packet - assume program stream */ + str_parser.format = STREAM_FMT_MPEG_PS; str_parser.next_data = parse_demux; } else @@ -1133,7 +1135,7 @@ int parser_init_stream(void) return STREAM_UNSUPPORTED; } - if (str_parser.format == STREAM_FMT_MPEG_TS) + if (str_parser.format == STREAM_FMT_MPEG_PS) { /* Initalize start_pts and end_pts with the length (in 45kHz units) of * the movie. INVALID_TIMESTAMP if the time could not be determined */ |