Mercurial > libavformat.hg
changeset 2347:5c32dd0eafc6 libavformat
fix header_checksum
author | michael |
---|---|
date | Thu, 09 Aug 2007 21:20:17 +0000 |
parents | cbcd840cf971 |
children | b995891375b2 |
files | nutenc.c |
diffstat | 1 files changed, 6 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/nutenc.c Thu Aug 09 21:14:00 2007 +0000 +++ b/nutenc.c Thu Aug 09 21:20:17 2007 +0000 @@ -191,13 +191,14 @@ #endif //FIXME remove calculate_checksum -static void put_packet(NUTContext *nut, ByteIOContext *bc, ByteIOContext *dyn_bc, int calculate_checksum){ +static void put_packet(NUTContext *nut, ByteIOContext *bc, ByteIOContext *dyn_bc, int calculate_checksum, uint64_t startcode){ uint8_t *dyn_buf=NULL; int dyn_size= url_close_dyn_buf(dyn_bc, &dyn_buf); int forw_ptr= dyn_size + 4*calculate_checksum; if(forw_ptr > 4096) - init_checksum(bc, av_crc04C11DB7_update, 0); //FIXME this is supposed to include the start code + init_checksum(bc, av_crc04C11DB7_update, 0); + put_be64(bc, startcode); put_v(bc, forw_ptr); if(forw_ptr > 4096) put_le32(bc, get_checksum(bc)); @@ -315,18 +316,16 @@ ByteIOContext dyn_bc; int i; - put_be64(bc, MAIN_STARTCODE); url_open_dyn_buf(&dyn_bc); write_mainheader(nut, &dyn_bc); - put_packet(nut, bc, &dyn_bc, 1); + put_packet(nut, bc, &dyn_bc, 1, MAIN_STARTCODE); for (i=0; i < nut->avf->nb_streams; i++){ AVCodecContext *codec = nut->avf->streams[i]->codec; - put_be64(bc, STREAM_STARTCODE); url_open_dyn_buf(&dyn_bc); write_streamheader(nut, &dyn_bc, codec, i); - put_packet(nut, bc, &dyn_bc, 1); + put_packet(nut, bc, &dyn_bc, 1, STREAM_STARTCODE); } } @@ -416,11 +415,10 @@ ff_nut_reset_ts(nut, *nus->time_base, pkt->dts); nut->last_syncpoint_pos= url_ftell(bc); - put_be64(bc, SYNCPOINT_STARTCODE); url_open_dyn_buf(&dyn_bc); put_t(nut, nus, &dyn_bc, pkt->dts); put_v(&dyn_bc, 0); //FIXME back_ptr_div16 - put_packet(nut, bc, &dyn_bc, 1); + put_packet(nut, bc, &dyn_bc, 1, SYNCPOINT_STARTCODE); } assert(nus->last_pts != AV_NOPTS_VALUE);