diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2008-01-27 00:06:36 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2008-01-27 00:06:36 +0000 |
| commit | 9ef02a5fec2fe6cfc2765e3cb0b197be09726cd8 (patch) | |
| tree | 865700f4688f5ca2f1677310ce8c7c423603b57e /apps/plugins/mpegplayer | |
| parent | ccd8f6cd84ad208d4fbd26b9be2ad5002624de6a (diff) | |
| download | rockbox-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.c | 17 |
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; } |