From 5875e2016a0437b2127be00f0c95060b95aab668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Sat, 15 Aug 2009 20:38:40 +0100 Subject: [PATCH] qtdemux: add qt_atom_parser_get_offset() and optimise _peek_sub() --- gst/qtdemux/qtatomparser.h | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/gst/qtdemux/qtatomparser.h b/gst/qtdemux/qtatomparser.h index 44f40c2a7e..dbd6b8205a 100644 --- a/gst/qtdemux/qtatomparser.h +++ b/gst/qtdemux/qtatomparser.h @@ -104,10 +104,10 @@ qt_atom_parser_peek_sub (QtAtomParser * parser, guint offset, guint size, { *sub = *parser; - if (G_UNLIKELY (!gst_byte_reader_skip (sub, offset))) + if (G_UNLIKELY (!qt_atom_parser_skip (sub, offset))) return FALSE; - return (gst_byte_reader_get_remaining (sub) >= size); + return (qt_atom_parser_get_remaining (sub) >= size); } static inline gboolean @@ -122,4 +122,30 @@ qt_atom_parser_skipn_and_get_uint32 (QtAtomParser * parser, return TRUE; } +/* off_size must be either 4 or 8 */ +static inline gboolean +qt_atom_parser_get_offset (QtAtomParser * parser, guint off_size, guint64 * val) +{ + if (G_UNLIKELY (qt_atom_parser_get_remaining (parser) < off_size)) + return FALSE; + + if (off_size == sizeof (guint64)) { + *val = qt_atom_parser_get_uint64_unchecked (parser); + } else { + *val = qt_atom_parser_get_uint32_unchecked (parser); + } + return TRUE; +} + +/* off_size must be either 4 or 8 */ +static inline guint64 +qt_atom_parser_get_offset_unchecked (QtAtomParser * parser, guint off_size) +{ + if (off_size == sizeof (guint64)) { + return qt_atom_parser_get_uint64_unchecked (parser); + } else { + return qt_atom_parser_get_uint32_unchecked (parser); + } +} + #endif /* QT_ATOM_PARSER_H */