@ -196,7 +196,7 @@ static int rtmp_packet_read_one_chunk(URLContext *h, RTMPPacket *p,
hdr > > = 6 ; // header size indicator
if ( hdr = = RTMP_PS_ONEBYTE ) {
ts_field = prev_pkt [ channel_id ] . ts_delta ;
ts_field = prev_pkt [ channel_id ] . ts_field ;
} else {
if ( ffurl_read_complete ( h , buf , 3 ) ! = 3 )
return AVERROR ( EIO ) ;
@ -235,7 +235,7 @@ static int rtmp_packet_read_one_chunk(URLContext *h, RTMPPacket *p,
return ret ;
p - > read = written ;
p - > offset = 0 ;
prev_pkt [ channel_id ] . ts_delta = ts_field ;
prev_pkt [ channel_id ] . ts_field = ts_field ;
prev_pkt [ channel_id ] . timestamp = timestamp ;
} else {
// previous packet in this channel hasn't completed reading
@ -244,7 +244,7 @@ static int rtmp_packet_read_one_chunk(URLContext *h, RTMPPacket *p,
p - > size = prev - > size ;
p - > channel_id = prev - > channel_id ;
p - > type = prev - > type ;
p - > ts_delta = prev - > ts_delta ;
p - > ts_field = prev - > ts_field ;
p - > extra = prev - > extra ;
p - > offset = prev - > offset ;
p - > read = prev - > read + written ;
@ -323,16 +323,16 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
timestamp - = prev_pkt [ pkt - > channel_id ] . timestamp ;
}
if ( timestamp > = 0xFFFFFF ) {
pkt - > ts_delta = 0xFFFFFF ;
pkt - > ts_field = 0xFFFFFF ;
} else {
pkt - > ts_delta = timestamp ;
pkt - > ts_field = timestamp ;
}
if ( use_delta ) {
if ( pkt - > type = = prev_pkt [ pkt - > channel_id ] . type & &
pkt - > size = = prev_pkt [ pkt - > channel_id ] . size ) {
mode = RTMP_PS_FOURBYTES ;
if ( pkt - > ts_delta = = prev_pkt [ pkt - > channel_id ] . ts_delta )
if ( pkt - > ts_field = = prev_pkt [ pkt - > channel_id ] . ts_field )
mode = RTMP_PS_ONEBYTE ;
} else {
mode = RTMP_PS_EIGHTBYTES ;
@ -349,7 +349,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
bytestream_put_le16 ( & p , pkt - > channel_id - 64 ) ;
}
if ( mode ! = RTMP_PS_ONEBYTE ) {
bytestream_put_be24 ( & p , pkt - > ts_delta ) ;
bytestream_put_be24 ( & p , pkt - > ts_field ) ;
if ( mode ! = RTMP_PS_FOURBYTES ) {
bytestream_put_be24 ( & p , pkt - > size ) ;
bytestream_put_byte ( & p , pkt - > type ) ;
@ -357,14 +357,14 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
bytestream_put_le32 ( & p , pkt - > extra ) ;
}
}
if ( pkt - > ts_delta = = 0xFFFFFF )
if ( pkt - > ts_field = = 0xFFFFFF )
bytestream_put_be32 ( & p , timestamp ) ;
// save history
prev_pkt [ pkt - > channel_id ] . channel_id = pkt - > channel_id ;
prev_pkt [ pkt - > channel_id ] . type = pkt - > type ;
prev_pkt [ pkt - > channel_id ] . size = pkt - > size ;
prev_pkt [ pkt - > channel_id ] . timestamp = pkt - > timestamp ;
prev_pkt [ pkt - > channel_id ] . ts_delta = pkt - > ts_delta ;
prev_pkt [ pkt - > channel_id ] . ts_field = pkt - > ts_field ;
prev_pkt [ pkt - > channel_id ] . extra = pkt - > extra ;
if ( ( ret = ffurl_write ( h , pkt_hdr , p - pkt_hdr ) ) < 0 )
@ -398,7 +398,7 @@ int ff_rtmp_packet_create(RTMPPacket *pkt, int channel_id, RTMPPacketType type,
pkt - > type = type ;
pkt - > timestamp = timestamp ;
pkt - > extra = 0 ;
pkt - > ts_delta = 0 ;
pkt - > ts_field = 0 ;
return 0 ;
}