pthread: flush all threads on flush, not just the first one
avcodec_flush_buffers() must release all internally held references according to its documentation, for which all the threads need to be flushed. CC:libav-stable@libav.org Bug-Id: vlc/9665
This commit is contained in:
		
				
					committed by
					
						
						Sean McGovern
					
				
			
			
				
	
			
			
			
						parent
						
							b701e26a4e
						
					
				
				
					commit
					2eb15cdeef
				
			@@ -885,8 +885,6 @@ void ff_thread_flush(AVCodecContext *avctx)
 | 
			
		||||
    if (fctx->prev_thread) {
 | 
			
		||||
        if (fctx->prev_thread != &fctx->threads[0])
 | 
			
		||||
            update_context_from_thread(fctx->threads[0].avctx, fctx->prev_thread->avctx, 0);
 | 
			
		||||
        if (avctx->codec->flush)
 | 
			
		||||
            avctx->codec->flush(fctx->threads[0].avctx);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fctx->next_decoding = fctx->next_finished = 0;
 | 
			
		||||
@@ -898,6 +896,9 @@ void ff_thread_flush(AVCodecContext *avctx)
 | 
			
		||||
        p->got_frame = 0;
 | 
			
		||||
 | 
			
		||||
        release_delayed_buffers(p);
 | 
			
		||||
 | 
			
		||||
        if (avctx->codec->flush)
 | 
			
		||||
            avctx->codec->flush(p->avctx);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user