Skip to content

Commit fb1317c

Browse files
committed
transcode: simplify locking in encoder thread
1 parent 23b2d36 commit fb1317c

File tree

1 file changed

+7
-22
lines changed
  • modules/stream_out/transcode

1 file changed

+7
-22
lines changed

modules/stream_out/transcode/video.c

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -74,50 +74,35 @@ static void* EncoderThread( void *obj )
7474
int canc = vlc_savecancel ();
7575
block_t *p_block = NULL;
7676

77+
vlc_mutex_lock( &p_sys->lock_out );
78+
7779
for( ;; )
7880
{
79-
80-
vlc_mutex_lock( &p_sys->lock_out );
8181
while( !p_sys->b_abort &&
8282
(p_pic = picture_fifo_Pop( p_sys->pp_pics )) == NULL )
8383
vlc_cond_wait( &p_sys->cond, &p_sys->lock_out );
8484

85-
if( p_sys->b_abort && !p_pic )
86-
{
87-
vlc_mutex_unlock( &p_sys->lock_out );
88-
break;
89-
}
90-
vlc_mutex_unlock( &p_sys->lock_out );
91-
9285
if( p_pic )
9386
{
87+
/* release lock while encoding */
88+
vlc_mutex_unlock( &p_sys->lock_out );
9489
p_block = id->p_encoder->pf_encode_video( id->p_encoder, p_pic );
95-
90+
picture_Release( p_pic );
9691
vlc_mutex_lock( &p_sys->lock_out );
97-
block_ChainAppend( &p_sys->p_buffers, p_block );
9892

99-
vlc_mutex_unlock( &p_sys->lock_out );
100-
picture_Release( p_pic );
93+
block_ChainAppend( &p_sys->p_buffers, p_block );
10194
}
10295

103-
vlc_mutex_lock( &p_sys->lock_out );
10496
if( p_sys->b_abort )
105-
{
106-
vlc_mutex_unlock( &p_sys->lock_out );
10797
break;
108-
}
109-
vlc_mutex_unlock( &p_sys->lock_out );
11098
}
11199

112100
/*Encode what we have in the buffer on closing*/
113-
vlc_mutex_lock( &p_sys->lock_out );
114101
while( (p_pic = picture_fifo_Pop( p_sys->pp_pics )) != NULL )
115102
{
116103
p_block = id->p_encoder->pf_encode_video( id->p_encoder, p_pic );
117-
118-
block_ChainAppend( &p_sys->p_buffers, p_block );
119-
120104
picture_Release( p_pic );
105+
block_ChainAppend( &p_sys->p_buffers, p_block );
121106
}
122107

123108
/*Now flush encoder*/

0 commit comments

Comments
 (0)