- pes_packet_t *p_pes_next;
- data_packet_t *p_data;
- ssize_t i_buffer;
-
- p_sout_buffer =
- sout_BufferNew( p_pack->p_sout_input->p_sout, i_size );
- if( !p_sout_buffer )
- {
- p_pack->p_fifo->b_error = 1;
- return;
- }
- /* TODO: memcpy of the pes packet */
- for( i_buffer = 0, p_data = p_pes->p_first;
- p_data != NULL && i_buffer < i_size;
- p_data = p_data->p_next)
- {
- ssize_t i_copy;
-
- i_copy = __MIN( p_data->p_payload_end - p_data->p_payload_start,
- i_size - i_buffer );
- if( i_copy > 0 )
- {
- p_pack->p_fifo->p_vlc->pf_memcpy( p_sout_buffer->p_buffer + i_buffer,
- p_data->p_payload_start,
- i_copy );
- }
- i_buffer += i_copy;
- }
- p_sout_buffer->i_length = 0;
- p_sout_buffer->i_dts = p_pes->i_pts - p_pack->i_pts_start;
- p_sout_buffer->i_pts = p_pes->i_pts - p_pack->i_pts_start;
- p_sout_buffer->i_bitrate = 0;
-
- input_ShowPES( p_pack->p_fifo, &p_pes_next );
- if( p_pes_next )
- {
- p_sout_buffer->i_length = p_pes_next->i_pts - p_pes->i_pts;
- }
- sout_InputSendBuffer( p_pack->p_sout_input,
- p_sout_buffer );