static int put_packetheader(NUTContext *nut, ByteIOContext *bc, int max_size, int calculate_checksum)
{
put_flush_packet(bc);
- nut->packet_start[2]+= nut->written_packet_size;
- assert(url_ftell(bc) - 8 == nut->packet_start[2]);
+ nut->packet_start[2]= url_ftell(bc) - 8;
nut->written_packet_size = max_size;
if(calculate_checksum)
return 0;
}
+/**
+ *
+ * must not be called more then once per packet
+ */
static int update_packetheader(NUTContext *nut, ByteIOContext *bc, int additional_size, int calculate_checksum){
int64_t start= nut->packet_start[2];
int64_t cur= url_ftell(bc);
- int size= cur - start + additional_size;
+ int size= cur - start - get_length(nut->written_packet_size)/7 - 8;
if(calculate_checksum)
size += 4;
case INDEX_STARTCODE:
get_packetheader(nut, bc, 0);
assert(nut->packet_start[2] == pos);
- url_fseek(bc, nut->written_packet_size + nut->packet_start[2], SEEK_SET);
+ url_fseek(bc, nut->written_packet_size, SEEK_CUR);
break;
case INFO_STARTCODE:
if(decode_info_header(nut)<0)
case INFO_STARTCODE:
get_packetheader(nut, bc, 0);
assert(nut->packet_start[2]==pos);
- url_fseek(bc, nut->written_packet_size + pos, SEEK_SET);
+ url_fseek(bc, nut->written_packet_size, SEEK_CUR);
break;
case KEYFRAME_STARTCODE:
frame_type=2;
55d26d5f682f75fa57a5c126056c4c31 *./data/b-libav.mov
369865 ./data/b-libav.mov
./data/b-libav.mov CRC=48f5a90d
-7c1a4d31acaaeaf172f59367e927f72c *./data/b-libav.nut
+b66c53a5283f1a28637a617512ba0805 *./data/b-libav.nut
332358 ./data/b-libav.nut
./data/b-libav.nut CRC=ccab3a27
b466c970d54eb254ad0f954b08535634 *./data/b-libav.dv