summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/mpegplayer/mpeg_parser.c12
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 */