[NUT] (ods15): r96 - in /trunk/libnut: demuxer.c priv.h

Author: ods15 Date: Sat Mar 11 19:16:18 2006 New Revision: 96 Log: sync to spec, unlimited stuffing not allowed when in "raw" (not tmp buffer) mode Modified: trunk/libnut/demuxer.c trunk/libnut/priv.h Modified: trunk/libnut/demuxer.c ============================================================================== --- trunk/libnut/demuxer.c (original) +++ trunk/libnut/demuxer.c Sat Mar 11 19:16:18 2006 @@ -120,15 +120,23 @@ static int get_v(input_buffer_t * bc, uint64_t * val) { int i, len; *val = 0; + do { len = ready_read_buf(bc, 16); - for (i = 0; i < len; i++) { - uint8_t tmp= *(bc->buf_ptr++); - *val = (*val << 7) | (tmp & 0x7F); - if (!(tmp & 0x80)) return 0; - } + for (i = 0; i < len; i++) if (*bc->buf_ptr++ != 0x80) break; + + if (i == len) { if (len >= 16 && !bc->is_mem) return -ERR_VLC_TOO_LONG; } + else { bc->buf_ptr--; break; } } while (len >= 16); - return buf_eof(bc); + + len = ready_read_buf(bc, 16); + for (i = 0; i < len; i++) { + uint8_t tmp= *(bc->buf_ptr++); + *val = (*val << 7) | (tmp & 0x7F); + if (!(tmp & 0x80)) return 0; + } + if (len >= 16) return -ERR_VLC_TOO_LONG; + else return buf_eof(bc); } static int get_s(input_buffer_t * bc, int64_t * val) { Modified: trunk/libnut/priv.h ============================================================================== --- trunk/libnut/priv.h (original) +++ trunk/libnut/priv.h Sat Mar 11 19:16:18 2006 @@ -35,17 +35,18 @@ enum errors { ERR_GENERAL_ERROR = 1, - ERR_BAD_VERSION = 2, - ERR_NOT_FRAME_NOT_N = 3, - ERR_BAD_CHECKSUM = 4, - ERR_MAX_DISTANCE = 5, - ERR_NO_HEADERS = 6, - ERR_NOT_SEEKABLE = 7, - ERR_OUT_OF_ORDER = 8, - ERR_MAX_PTS_DISTANCE = 9, - ERR_BAD_STREAM_ORDER = 11, - ERR_NOSTREAM_STARTCODE = 12, - ERR_BAD_EOF = 13, + ERR_BAD_VERSION, + ERR_NOT_FRAME_NOT_N, + ERR_BAD_CHECKSUM, + ERR_MAX_DISTANCE, + ERR_NO_HEADERS, + ERR_NOT_SEEKABLE, + ERR_OUT_OF_ORDER, + ERR_MAX_PTS_DISTANCE, + ERR_VLC_TOO_LONG, + ERR_BAD_STREAM_ORDER, + ERR_NOSTREAM_STARTCODE, + ERR_BAD_EOF, }; typedef struct {
participants (1)
-
syncmail@mplayerhq.hu