handle h261 video streams over rtp

parent 4903ec72
...@@ -936,14 +936,32 @@ static void StreamRead( void *p_private, unsigned int i_size, struct timeval pts ...@@ -936,14 +936,32 @@ static void StreamRead( void *p_private, unsigned int i_size, struct timeval pts
i_size, i_size,
pts.tv_sec * 1000000LL + pts.tv_usec ); pts.tv_sec * 1000000LL + pts.tv_usec );
#endif #endif
if( tk->fmt.i_codec == VLC_FOURCC('h','2','6','1') )
{
i_size += 4;
}
if( i_size > 65536 ) if( i_size > 65536 )
{ {
msg_Warn( p_demux, "buffer overflow" ); msg_Warn( p_demux, "buffer overflow" );
} }
/* FIXME could i_size be > buffer size ? */ /* FIXME could i_size be > buffer size ? */
p_block = block_New( p_demux, i_size ); p_block = block_New( p_demux, i_size );
if( tk->fmt.i_codec == VLC_FOURCC('h','2','6','1') )
memcpy( p_block->p_buffer, tk->buffer, i_size ); {
H261VideoRTPSource *h261Source = (H261VideoRTPSource*)tk->rtpSource;
uint32_t header = h261Source->lastSpecialHeader();
memcpy( p_block->p_buffer, &header, 4 );
memcpy( p_block->p_buffer + 4, tk->buffer, i_size );
}
else
{
memcpy( p_block->p_buffer, tk->buffer, i_size );
}
if( tk->rtpSource->curPacketMarkerBit() )
{
p_block->i_flags |= BLOCK_FLAG_HEADER;
}
//p_block->i_rate = p_input->stream.control.i_rate; //p_block->i_rate = p_input->stream.control.i_rate;
if( i_pts != tk->i_pts && !tk->b_muxed ) if( i_pts != tk->i_pts && !tk->b_muxed )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment