# HG changeset patch # User michael # Date 1186695313 0 # Node ID b995891375b2373c9c5728f5aea3572151d54262 # Parent 5c32dd0eafc6f532053cab2ac5917e588fe4c47f fix forw_ptr crc check not really beautiful but i did not find a nice solution note, untested diff -r 5c32dd0eafc6 -r b995891375b2 nutdec.c --- a/nutdec.c Thu Aug 09 21:20:17 2007 +0000 +++ b/nutdec.c Thu Aug 09 21:35:13 2007 +0000 @@ -98,12 +98,15 @@ #define get_vb(bc) get_vb_trace(bc, __FILE__, __PRETTY_FUNCTION__, __LINE__) #endif -static int get_packetheader(NUTContext *nut, ByteIOContext *bc, int calculate_checksum) +static int get_packetheader(NUTContext *nut, ByteIOContext *bc, int calculate_checksum, uint64_t startcode) { int64_t size; // start= url_ftell(bc) - 8; - init_checksum(bc, av_crc04C11DB7_update, 0); + startcode= be2me_64(startcode); + startcode= av_crc04C11DB7_update(0, &startcode, 8); + + init_checksum(bc, av_crc04C11DB7_update, startcode); size= get_v(bc); if(size > 4096) get_be32(bc); @@ -194,7 +197,7 @@ unsigned int stream_count; int i, j, tmp_stream, tmp_mul, tmp_pts, tmp_size, count, tmp_res; - end= get_packetheader(nut, bc, 1); + end= get_packetheader(nut, bc, 1, MAIN_STARTCODE); end += url_ftell(bc); GET_V(tmp , tmp >=2 && tmp <= 3) @@ -282,7 +285,7 @@ uint64_t tmp, end; AVStream *st; - end= get_packetheader(nut, bc, 1); + end= get_packetheader(nut, bc, 1, STREAM_STARTCODE); end += url_ftell(bc); GET_V(stream_id, tmp < s->nb_streams && !nut->stream[tmp].time_base); @@ -369,7 +372,7 @@ int64_t value, end; char name[256], str_value[1024], type_str[256], *type= type_str; - end= get_packetheader(nut, bc, 1); + end= get_packetheader(nut, bc, 1, INFO_STARTCODE); end += url_ftell(bc); GET_V(stream_id_plus1, tmp <= s->nb_streams) @@ -445,7 +448,7 @@ nut->last_syncpoint_pos= url_ftell(bc)-8; - end= get_packetheader(nut, bc, 1); + end= get_packetheader(nut, bc, 1, SYNCPOINT_STARTCODE); end += url_ftell(bc); tmp= get_v(bc); @@ -482,7 +485,7 @@ return -1; } - end= get_packetheader(nut, bc, 1); + end= get_packetheader(nut, bc, 1, INDEX_STARTCODE); end += url_ftell(bc); get_v(bc); //max_pts @@ -737,7 +740,7 @@ case MAIN_STARTCODE: case STREAM_STARTCODE: case INDEX_STARTCODE: - skip= get_packetheader(nut, bc, 0); + skip= get_packetheader(nut, bc, 0, tmp); url_fseek(bc, skip, SEEK_CUR); break; case INFO_STARTCODE: