Commit feeb6cc0 authored by Jean-Marc Dressler's avatar Jean-Marc Dressler

Le video parser compile mais n'est pas termine, n'est-ce pas stef ? ;)
parent d5300df1
......@@ -133,24 +133,6 @@ void vpar_DecodeMacroblock( video_fifo_t * p_fifo, macroblock_t * p_mb )
*****************************************************************************/
void vpar_ReleaseMacroblock( video_fifo_t * p_fifo, macroblock_t * p_mb )
{
/* Unlink referenced pictures */
if( p_mb->p_forw_top != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_forw_top );
}
if( p_mb->p_backw_top != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_backw_top );
}
if( p_mb->p_forw_bot != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_forw_bot );
}
if( p_mb->p_backw_bot != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_backw_bot );
}
/* Unlink picture buffer */
vlc_mutex_lock( &p_mb->p_picture->lock_deccount );
p_mb->p_picture->i_deccount--;
......@@ -161,7 +143,17 @@ void vpar_ReleaseMacroblock( video_fifo_t * p_fifo, macroblock_t * p_mb )
/* Warn Synchro for its records. */
vpar_SynchroEnd( p_fifo->p_vpar );
}
/* Unlink referenced pictures */
if( p_mb->p_forward != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_forward );
}
if( p_mb->p_backward != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_backward );
}
}
vlc_mutex_unlock( & p_mb->p_picture->lock_deccount );
/* Release the macroblock_t structure */
......@@ -177,24 +169,6 @@ void vpar_ReleaseMacroblock( video_fifo_t * p_fifo, macroblock_t * p_mb )
*****************************************************************************/
void vpar_DestroyMacroblock( video_fifo_t * p_fifo, macroblock_t * p_mb )
{
/* Unlink referenced pictures */
if( p_mb->p_forw_top != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_forw_top );
}
if( p_mb->p_backw_top != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_backw_top );
}
if( p_mb->p_forw_bot != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_forw_bot );
}
if( p_mb->p_backw_bot != NULL )
{
vout_UnlinkPicture( p_fifo->p_vpar->p_vout, p_mb->p_backw_bot );
}
/* Release the macroblock_t structure */
#define P_buffer p_fifo->p_vpar->vbuffer
vlc_mutex_lock( &P_buffer.lock );
......
......@@ -652,10 +652,10 @@ static void PictureHeader( vpar_thread_t * p_vpar )
{
/* This is a new frame. Get a structure from the video_output. */
P_picture = vout_CreatePicture( p_vpar->p_vout,
SPLITTED_YUV_PICTURE,
99+p_vpar->sequence.i_chroma_format, /*???*/
p_vpar->sequence.i_width,
p_vpar->sequence.i_height,
p_vpar->sequence.i_chroma_format );
p_vpar->sequence.i_width*sizeof(yuv_data_t) );
/* Initialize values. */
P_picture->date = vpar_SynchroDecode( p_vpar,
......@@ -710,7 +710,18 @@ static void PictureHeader( vpar_thread_t * p_vpar )
/* Decode slice data. */
SliceHeader( p_vpar, &i_mb_address, i_mb_base, i_dummy & 255 );
}
/* Link referenced pictures for the decoder
* They are unlinked in vpar_ReleaseMacroblock() & vpar_DestroyMacroblock() */
if( p_vpar->sequence.p_forward != NULL )
{
vout_LinkPicture( p_vpar->p_vout, p_vpar->sequence.p_forward );
}
if( p_vpar->sequence.p_backward != NULL )
{
vout_LinkPicture( p_vpar->p_vout, p_vpar->sequence.p_backward );
}
if( p_vpar->picture.b_error )
{
/* Trash picture. */
......@@ -722,13 +733,23 @@ static void PictureHeader( vpar_thread_t * p_vpar )
ReferenceReplace( p_vpar, p_vpar->picture.i_coding_type, NULL );
vout_DestroyPicture( p_vpar->p_vout, P_picture );
/* Unlink referenced pictures */
if( p_vpar->sequence.p_forward != NULL )
{
vout_UnlinkPicture( p_vpar->p_vout, p_vpar->sequence.p_forward );
}
if( p_vpar->sequence.p_backward != NULL )
{
vout_UnlinkPicture( p_vpar->p_vout, p_vpar->sequence.p_backward );
}
/* Prepare context for the next picture. */
P_picture = NULL;
}
else if( p_vpar->picture.i_current_structure == FRAME_STRUCTURE )
{
/* Frame completely parsed. */
P_picture.i_deccount = p_vpar->sequence.i_mb_size;
P_picture->i_deccount = p_vpar->sequence.i_mb_size;
for( i_mb = 0; i_mb < p_vpar->sequence.i_mb_size; i_mb++ )
{
vpar_DecodeMacroblock( &p_vpar->vfifo, p_vpar->picture.pp_mb[i_mb] );
......
......@@ -86,6 +86,7 @@ static __inline__ int vpar_MotionCode( vpar_thread_t * p_vpar )
if( (i_code -= 12) < 0 )
{
p_vpar->picture.b_error = 1;
intf_DbgMsg( "vpar debug: Invalid motion_vector code\n" );
return 0;
}
......
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