From cf49edcd645674ee51fdfbecc70b1690ca456633 Mon Sep 17 00:00:00 2001 From: Christophe Massiot Date: Wed, 19 Jan 2000 17:39:09 +0000 Subject: [PATCH] support de vout_DatePicture(). --- include/vpar_synchro.h | 3 ++- src/video_parser/vpar_headers.c | 14 +++++++++++--- src/video_parser/vpar_synchro.c | 7 ++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/include/vpar_synchro.h b/include/vpar_synchro.h index 4645d065c8..96c346171b 100644 --- a/include/vpar_synchro.h +++ b/include/vpar_synchro.h @@ -51,4 +51,5 @@ void vpar_SynchroTrash( struct vpar_thread_s * p_vpar, int i_coding_type, int i_structure ); void vpar_SynchroDecode( struct vpar_thread_s * p_vpar, int i_coding_type, int i_structure ); -mtime_t vpar_SynchroEnd( struct vpar_thread_s * p_vpar ); +void vpar_SynchroEnd( struct vpar_thread_s * p_vpar ); +mtime_t vpar_SynchroDate( struct vpar_thread_s * p_vpar ); diff --git a/src/video_parser/vpar_headers.c b/src/video_parser/vpar_headers.c index 097dd66511..45af35e841 100644 --- a/src/video_parser/vpar_headers.c +++ b/src/video_parser/vpar_headers.c @@ -181,6 +181,11 @@ static void __inline__ ReferenceUpdate( vpar_thread_t * p_vpar, { 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_DatePicture( p_vpar->p_vout, p_vpar->sequence.p_backward, + vpar_SynchroDate( p_vpar ) ); + } p_vpar->sequence.p_forward = p_vpar->sequence.p_backward; p_vpar->sequence.p_backward = p_newref; if( p_newref != NULL ) @@ -678,9 +683,12 @@ static void PictureHeader( vpar_thread_t * p_vpar ) /* Initialize values. */ vpar_SynchroDecode( p_vpar, p_vpar->picture.i_coding_type, i_structure ); - /* kludge to be removed once vpar_SynchroEnd is called properly */ - P_picture->date = mdate() + 700000; - + if( p_vpar->picture.i_coding_type == B_CODING_TYPE ) + { + /* Put date immediately. */ + vout_DatePicture( p_vpar->p_vout, P_picture, + vpar_SynchroDate( p_vpar ) ); + } P_picture->i_aspect_ratio = p_vpar->sequence.i_aspect_ratio; P_picture->i_matrix_coefficients = p_vpar->sequence.i_matrix_coefficients; p_vpar->picture.i_l_stride = ( p_vpar->sequence.i_width diff --git a/src/video_parser/vpar_synchro.c b/src/video_parser/vpar_synchro.c index 24490d023e..46a0ea34ff 100644 --- a/src/video_parser/vpar_synchro.c +++ b/src/video_parser/vpar_synchro.c @@ -177,9 +177,14 @@ void vpar_SynchroDecode( vpar_thread_t * p_vpar, int i_coding_type, /***************************************************************************** * vpar_SynchroEnd : Called when the image is totally decoded *****************************************************************************/ -mtime_t vpar_SynchroEnd( vpar_thread_t * p_vpar ) +void vpar_SynchroEnd( vpar_thread_t * p_vpar ) { +// return mdate() + 700000; +} + +mtime_t vpar_SynchroDate( vpar_thread_t * p_vpar ) +{ return mdate() + 700000; }