# HG changeset patch # User michael # Date 1186750757 0 # Node ID 1860d5b4be2ec81e1817fba2a3a9faa5d216ef71 # Parent ed9b81f7431760c18587a759b7047bd079e6591c header repetition diff -r ed9b81f74317 -r 1860d5b4be2e nut.h --- a/nut.h Fri Aug 10 11:52:28 2007 +0000 +++ b/nut.h Fri Aug 10 12:59:17 2007 +0000 @@ -88,6 +88,7 @@ unsigned int max_distance; unsigned int time_base_count; int64_t last_syncpoint_pos; + int header_count; AVRational *time_base; struct AVTreeNode *syncpoints; } NUTContext; diff -r ed9b81f74317 -r 1860d5b4be2e nutenc.c --- a/nutenc.c Fri Aug 10 11:52:28 2007 +0000 +++ b/nutenc.c Fri Aug 10 12:59:17 2007 +0000 @@ -365,6 +365,9 @@ url_open_dyn_buf(&dyn_bc); write_globalinfo(nut, &dyn_bc); put_packet(nut, bc, &dyn_bc, 1, INFO_STARTCODE); + + nut->last_syncpoint_pos= INT_MIN; + nut->header_count++; } static int write_header(AVFormatContext *s){ @@ -416,7 +419,7 @@ put_flush_packet(bc); - //FIXME header repeation, index + //FIXME index return 0; } @@ -445,6 +448,9 @@ int key_frame = !!(pkt->flags & PKT_FLAG_KEY); int store_sp=0; + if(1LL<<(20+3*nut->header_count) <= url_ftell(bc)) + write_headers(nut, bc); + if(key_frame && !!(nus->last_flags & FLAG_KEY)) store_sp= 1; @@ -563,7 +569,8 @@ NUTContext *nut= s->priv_data; ByteIOContext *bc= &s->pb; - write_headers(nut, bc); + while(nut->header_count<3) + write_headers(nut, bc); put_flush_packet(bc); return 0;