@ -299,13 +299,12 @@ static void put_s(AVIOContext *bc, int64_t val)
ff_put_v ( bc , 2 * FFABS ( val ) - ( val > 0 ) ) ;
}
//FIXME remove calculate_checksum
static void put_packet ( NUTContext * nut , AVIOContext * bc , AVIOContext * dyn_bc ,
int calculate_checksum , uint64_t startcode )
uint64_t startcode )
{
uint8_t * dyn_buf = NULL ;
int dyn_size = avio_close_dyn_buf ( dyn_bc , & dyn_buf ) ;
int forw_ptr = dyn_size + 4 * calculate_checksum ;
int forw_ptr = dyn_size + 4 ;
if ( forw_ptr > 4096 )
ffio_init_checksum ( bc , ff_crc04C11DB7_update , 0 ) ;
@ -314,11 +313,9 @@ static void put_packet(NUTContext *nut, AVIOContext *bc, AVIOContext *dyn_bc,
if ( forw_ptr > 4096 )
avio_wl32 ( bc , ffio_get_checksum ( bc ) ) ;
if ( calculate_checksum )
ffio_init_checksum ( bc , ff_crc04C11DB7_update , 0 ) ;
ffio_init_checksum ( bc , ff_crc04C11DB7_update , 0 ) ;
avio_write ( bc , dyn_buf , dyn_size ) ;
if ( calculate_checksum )
avio_wl32 ( bc , ffio_get_checksum ( bc ) ) ;
avio_wl32 ( bc , ffio_get_checksum ( bc ) ) ;
av_free ( dyn_buf ) ;
}
@ -630,7 +627,7 @@ static int write_headers(AVFormatContext *avctx, AVIOContext *bc)
if ( ret < 0 )
return ret ;
write_mainheader ( nut , dyn_bc ) ;
put_packet ( nut , bc , dyn_bc , 1 , MAIN_STARTCODE ) ;
put_packet ( nut , bc , dyn_bc , MAIN_STARTCODE ) ;
for ( i = 0 ; i < nut - > avf - > nb_streams ; i + + ) {
ret = avio_open_dyn_buf ( & dyn_bc ) ;
@ -641,14 +638,14 @@ static int write_headers(AVFormatContext *avctx, AVIOContext *bc)
ffio_free_dyn_buf ( & dyn_bc ) ;
return ret ;
}
put_packet ( nut , bc , dyn_bc , 1 , STREAM_STARTCODE ) ;
put_packet ( nut , bc , dyn_bc , STREAM_STARTCODE ) ;
}
ret = avio_open_dyn_buf ( & dyn_bc ) ;
if ( ret < 0 )
return ret ;
write_globalinfo ( nut , dyn_bc ) ;
put_packet ( nut , bc , dyn_bc , 1 , INFO_STARTCODE ) ;
put_packet ( nut , bc , dyn_bc , INFO_STARTCODE ) ;
for ( i = 0 ; i < nut - > avf - > nb_streams ; i + + ) {
ret = avio_open_dyn_buf ( & dyn_bc ) ;
@ -656,7 +653,7 @@ static int write_headers(AVFormatContext *avctx, AVIOContext *bc)
return ret ;
ret = write_streaminfo ( nut , dyn_bc , i ) ;
if ( ret > 0 )
put_packet ( nut , bc , dyn_bc , 1 , INFO_STARTCODE ) ;
put_packet ( nut , bc , dyn_bc , INFO_STARTCODE ) ;
else {
ffio_free_dyn_buf ( & dyn_bc ) ;
if ( ret < 0 )
@ -673,7 +670,7 @@ static int write_headers(AVFormatContext *avctx, AVIOContext *bc)
ffio_free_dyn_buf ( & dyn_bc ) ;
return ret ;
}
put_packet ( nut , bc , dyn_bc , 1 , INFO_STARTCODE ) ;
put_packet ( nut , bc , dyn_bc , INFO_STARTCODE ) ;
}
nut - > last_syncpoint_pos = INT_MIN ;
@ -1022,7 +1019,7 @@ static int nut_write_packet(AVFormatContext *s, AVPacket *pkt)
put_tt ( nut , nus - > time_base , dyn_bc ,
av_rescale_q ( av_gettime ( ) , AV_TIME_BASE_Q , * nus - > time_base ) ) ;
}
put_packet ( nut , bc , dyn_bc , 1 , SYNCPOINT_STARTCODE ) ;
put_packet ( nut , bc , dyn_bc , SYNCPOINT_STARTCODE ) ;
if ( nut - > write_index ) {
if ( ( ret = ff_nut_add_sp ( nut , nut - > last_syncpoint_pos , 0 /*unused*/ , pkt - > dts ) ) < 0 )
@ -1175,7 +1172,7 @@ static int nut_write_trailer(AVFormatContext *s)
if ( ret > = 0 ) {
av_assert1 ( nut - > write_index ) ; // sp_count should be 0 if no index is going to be written
write_index ( nut , dyn_bc ) ;
put_packet ( nut , bc , dyn_bc , 1 , INDEX_STARTCODE ) ;
put_packet ( nut , bc , dyn_bc , INDEX_STARTCODE ) ;
}
return 0 ;