Mercurial > libavformat.hg
changeset 2359:1860d5b4be2e libavformat
header repetition
author | michael |
---|---|
date | Fri, 10 Aug 2007 12:59:17 +0000 |
parents | ed9b81f74317 |
children | b2eeaa4df665 |
files | nut.h nutenc.c |
diffstat | 2 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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;