From c7497caf98de1d25cf789996e196d82c820774f9 Mon Sep 17 00:00:00 2001 From: Chris Pearce Date: Sat, 3 Oct 2009 17:08:12 +1300 Subject: [PATCH] Bug 519155 - reset oggz seek on failure. r=doublec --- content/media/test/Makefile.in | 1 + content/media/test/chain.ogv | Bin 0 -> 45463 bytes content/media/test/manifest.js | 1 + media/liboggz/README_MOZILLA | 2 + media/liboggz/bug519155.patch | 73 ++++++++++++++++++++++++++ media/liboggz/src/liboggz/oggz_seek.c | 15 +++++- media/liboggz/update.sh | 1 + 7 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 content/media/test/chain.ogv create mode 100644 media/liboggz/bug519155.patch diff --git a/content/media/test/Makefile.in b/content/media/test/Makefile.in index ff3b39717f8..d4ca0628bf1 100644 --- a/content/media/test/Makefile.in +++ b/content/media/test/Makefile.in @@ -132,6 +132,7 @@ _TEST_FILES += \ bug504843.ogv \ bug506094.ogv \ bug516323.ogv \ + chain.ogv \ dirac.ogg \ seek.ogv \ short-video.ogv \ diff --git a/content/media/test/chain.ogv b/content/media/test/chain.ogv new file mode 100644 index 0000000000000000000000000000000000000000..3e684b64a55494dc77763ffef360f0f306802c2a GIT binary patch literal 45463 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 nhy38JZhoffset = offset_at; + + #ifdef DEBUG + printf ("reset to %" PRI_OGGZ_OFF_T "d\n", offset_at); + #endif + +- if (unit != -1) reader->current_unit = unit; ++ reader->current_unit = unit; + + return offset_at; + } + + static long + oggz_reset (OGGZ * oggz, oggz_off_t offset, ogg_int64_t unit, int whence) + { + oggz_reset_streams (oggz); +@@ -800,38 +800,49 @@ oggz_bounded_seek_set (OGGZ * oggz, + static ogg_int64_t + oggz_seek_end (OGGZ * oggz, ogg_int64_t unit_offset) + { + oggz_off_t offset_orig, offset_at, offset_end; + ogg_int64_t granulepos; + ogg_int64_t unit_end; + long serialno; + ogg_page * og; ++ OggzReader * reader = &oggz->x.reader; + + og = &oggz->current_page; + + offset_orig = oggz->offset; + + offset_at = oggz_seek_raw (oggz, 0, SEEK_END); + if (offset_at == -1) return -1; + + offset_end = oggz_get_prev_start_page (oggz, og, &granulepos, &serialno); + + if (offset_end < 0) { + oggz_reset (oggz, offset_orig, -1, SEEK_SET); + return -1; + } + + unit_end = oggz_get_unit (oggz, serialno, granulepos); +- ++ + #ifdef DEBUG + printf ("*** oggz_seek_end: found packet (%lld) at @%" PRI_OGGZ_OFF_T "d [%lld]\n", + unit_end, offset_end, granulepos); + #endif + ++ if (unit_end == -1) { ++ /* Failed to get time at the end, reset and fail. */ ++ oggz_reset (oggz, offset_orig, -1, SEEK_SET); ++ return -1; ++ } ++ ++ reader->current_unit = unit_end; ++ if (unit_offset == 0) { ++ return unit_end; ++ } + return oggz_bounded_seek_set (oggz, unit_end + unit_offset, 0, -1, 0); + } + + off_t + oggz_seek (OGGZ * oggz, oggz_off_t offset, int whence) + { + OggzReader * reader; + ogg_int64_t units = -1; diff --git a/media/liboggz/src/liboggz/oggz_seek.c b/media/liboggz/src/liboggz/oggz_seek.c index 5c39d4603c0..bb90a1f8550 100644 --- a/media/liboggz/src/liboggz/oggz_seek.c +++ b/media/liboggz/src/liboggz/oggz_seek.c @@ -159,7 +159,7 @@ oggz_reset_seek (OGGZ * oggz, oggz_off_t offset, ogg_int64_t unit, int whence) printf ("reset to %" PRI_OGGZ_OFF_T "d\n", offset_at); #endif - if (unit != -1) reader->current_unit = unit; + reader->current_unit = unit; return offset_at; } @@ -805,6 +805,7 @@ oggz_seek_end (OGGZ * oggz, ogg_int64_t unit_offset) ogg_int64_t unit_end; long serialno; ogg_page * og; + OggzReader * reader = &oggz->x.reader; og = &oggz->current_page; @@ -821,12 +822,22 @@ oggz_seek_end (OGGZ * oggz, ogg_int64_t unit_offset) } unit_end = oggz_get_unit (oggz, serialno, granulepos); - + #ifdef DEBUG printf ("*** oggz_seek_end: found packet (%lld) at @%" PRI_OGGZ_OFF_T "d [%lld]\n", unit_end, offset_end, granulepos); #endif + if (unit_end == -1) { + /* Failed to get time at the end, reset and fail. */ + oggz_reset (oggz, offset_orig, -1, SEEK_SET); + return -1; + } + + reader->current_unit = unit_end; + if (unit_offset == 0) { + return unit_end; + } return oggz_bounded_seek_set (oggz, unit_end + unit_offset, 0, -1, 0); } diff --git a/media/liboggz/update.sh b/media/liboggz/update.sh index aec3478b222..499cdcae231 100644 --- a/media/liboggz/update.sh +++ b/media/liboggz/update.sh @@ -59,3 +59,4 @@ patch -p3