mirror of
https://github.com/mpv-player/mpv
synced 2025-04-11 04:01:31 +00:00
Add a giant hack to the x264 encoder module to ensure all delayed frames are
written on FLUSH_FRAMES, this is necessary since using multiple threads adds an additional delay beyond the B-frame delay. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29480 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
d4419a7869
commit
a04ec2484b
@ -218,9 +218,11 @@ static int config(struct vf_instance_s* vf, int width, int height, int d_width,
|
|||||||
static int control(struct vf_instance_s* vf, int request, void *data)
|
static int control(struct vf_instance_s* vf, int request, void *data)
|
||||||
{
|
{
|
||||||
h264_module_t *mod=(h264_module_t*)vf->priv;
|
h264_module_t *mod=(h264_module_t*)vf->priv;
|
||||||
|
int count = 256; // giant HACK, x264_encoder_encode may incorrectly return 0
|
||||||
|
// when threads > 1 and delayed frames pending
|
||||||
switch(request){
|
switch(request){
|
||||||
case VFCTRL_FLUSH_FRAMES:
|
case VFCTRL_FLUSH_FRAMES:
|
||||||
if(param.i_bframe)
|
while(encode_frame(vf, NULL) == 0 && --count);
|
||||||
while(encode_frame(vf, NULL) > 0);
|
while(encode_frame(vf, NULL) > 0);
|
||||||
return CONTROL_TRUE;
|
return CONTROL_TRUE;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user