summaryrefslogtreecommitdiff
path: root/apps/plugins/mpegplayer
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2008-01-27 00:06:36 +0000
committerMichael Sevakis <jethead71@rockbox.org>2008-01-27 00:06:36 +0000
commit9ef02a5fec2fe6cfc2765e3cb0b197be09726cd8 (patch)
tree865700f4688f5ca2f1677310ce8c7c423603b57e /apps/plugins/mpegplayer
parentccd8f6cd84ad208d4fbd26b9be2ad5002624de6a (diff)
downloadrockbox-9ef02a5fec2fe6cfc2765e3cb0b197be09726cd8.zip
rockbox-9ef02a5fec2fe6cfc2765e3cb0b197be09726cd8.tar.gz
rockbox-9ef02a5fec2fe6cfc2765e3cb0b197be09726cd8.tar.bz2
rockbox-9ef02a5fec2fe6cfc2765e3cb0b197be09726cd8.tar.xz
mpegplayer: End of data would not be detected correctly if mpeg parser was in a sync state.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16174 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/mpegplayer')
-rw-r--r--apps/plugins/mpegplayer/mpeg_parser.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/apps/plugins/mpegplayer/mpeg_parser.c b/apps/plugins/mpegplayer/mpeg_parser.c
index 167f07d..345aa73 100644
--- a/apps/plugins/mpegplayer/mpeg_parser.c
+++ b/apps/plugins/mpegplayer/mpeg_parser.c
@@ -679,13 +679,22 @@ static int parse_demux(struct stream *str, enum stream_parse_mode type)
{
case STREAM_PM_STREAMING:
/* Has the end been reached already? */
- if (str->state == SSTATE_END)
+ switch (str->state)
+ {
+ case SSTATE_PARSE: /* Expected case first if no jumptable */
+ /* Are we at the end of file? */
+ if (str->hdr.win_left < disk_buf.filesize)
+ break;
+ str_end_of_stream(str);
return STREAM_DATA_END;
- /* Are we at the end of file? */
- if (str->hdr.win_left >= disk_buf.filesize)
- {
+ case SSTATE_SYNC:
+ /* Is sync at the end of file? */
+ if (str->hdr.win_right < disk_buf.filesize)
+ break;
str_end_of_stream(str);
+ /* Fall-through */
+ case SSTATE_END:
return STREAM_DATA_END;
}