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 ) ...@@ -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 ) 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 */ /* Unlink picture buffer */
vlc_mutex_lock( &p_mb->p_picture->lock_deccount ); vlc_mutex_lock( &p_mb->p_picture->lock_deccount );
p_mb->p_picture->i_deccount--; p_mb->p_picture->i_deccount--;
...@@ -161,7 +143,17 @@ void vpar_ReleaseMacroblock( video_fifo_t * p_fifo, macroblock_t * p_mb ) ...@@ -161,7 +143,17 @@ void vpar_ReleaseMacroblock( video_fifo_t * p_fifo, macroblock_t * p_mb )
/* Warn Synchro for its records. */ /* Warn Synchro for its records. */
vpar_SynchroEnd( p_fifo->p_vpar ); 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 ); vlc_mutex_unlock( & p_mb->p_picture->lock_deccount );
/* Release the macroblock_t structure */ /* Release the macroblock_t structure */
...@@ -177,24 +169,6 @@ void vpar_ReleaseMacroblock( video_fifo_t * p_fifo, macroblock_t * p_mb ) ...@@ -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 ) 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 */ /* Release the macroblock_t structure */
#define P_buffer p_fifo->p_vpar->vbuffer #define P_buffer p_fifo->p_vpar->vbuffer
vlc_mutex_lock( &P_buffer.lock ); vlc_mutex_lock( &P_buffer.lock );
......
...@@ -652,10 +652,10 @@ static void PictureHeader( vpar_thread_t * p_vpar ) ...@@ -652,10 +652,10 @@ static void PictureHeader( vpar_thread_t * p_vpar )
{ {
/* This is a new frame. Get a structure from the video_output. */ /* This is a new frame. Get a structure from the video_output. */
P_picture = vout_CreatePicture( p_vpar->p_vout, 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_width,
p_vpar->sequence.i_height, p_vpar->sequence.i_height,
p_vpar->sequence.i_chroma_format ); p_vpar->sequence.i_width*sizeof(yuv_data_t) );
/* Initialize values. */ /* Initialize values. */
P_picture->date = vpar_SynchroDecode( p_vpar, P_picture->date = vpar_SynchroDecode( p_vpar,
...@@ -710,7 +710,18 @@ static void PictureHeader( vpar_thread_t * p_vpar ) ...@@ -710,7 +710,18 @@ static void PictureHeader( vpar_thread_t * p_vpar )
/* Decode slice data. */ /* Decode slice data. */
SliceHeader( p_vpar, &i_mb_address, i_mb_base, i_dummy & 255 ); 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 ) if( p_vpar->picture.b_error )
{ {
/* Trash picture. */ /* Trash picture. */
...@@ -722,13 +733,23 @@ static void PictureHeader( vpar_thread_t * p_vpar ) ...@@ -722,13 +733,23 @@ static void PictureHeader( vpar_thread_t * p_vpar )
ReferenceReplace( p_vpar, p_vpar->picture.i_coding_type, NULL ); ReferenceReplace( p_vpar, p_vpar->picture.i_coding_type, NULL );
vout_DestroyPicture( p_vpar->p_vout, P_picture ); 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. */ /* Prepare context for the next picture. */
P_picture = NULL; P_picture = NULL;
} }
else if( p_vpar->picture.i_current_structure == FRAME_STRUCTURE ) else if( p_vpar->picture.i_current_structure == FRAME_STRUCTURE )
{ {
/* Frame completely parsed. */ /* 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++ ) 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] ); 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 ) ...@@ -86,6 +86,7 @@ static __inline__ int vpar_MotionCode( vpar_thread_t * p_vpar )
if( (i_code -= 12) < 0 ) if( (i_code -= 12) < 0 )
{ {
p_vpar->picture.b_error = 1;
intf_DbgMsg( "vpar debug: Invalid motion_vector code\n" ); intf_DbgMsg( "vpar debug: Invalid motion_vector code\n" );
return 0; 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