mirror of
https://github.com/mpv-player/mpv
synced 2025-01-16 03:51:48 +00:00
added :interleaving2, a better method to determine which stream whouls be flushed
at every iteration of the loop (based on the lowest percentage of buffer used - same algo as libavformat) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22947 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
77a15dd6d3
commit
745c0b9c38
@ -83,6 +83,7 @@ static int conf_abuf_size = 0;
|
||||
static int conf_vbuf_size = 0;
|
||||
static int conf_drop = 0;
|
||||
static int conf_telecine = 0;
|
||||
static int conf_interleaving2 = 0;
|
||||
static float conf_telecine_src = 0;
|
||||
static float conf_telecine_dest = 0;
|
||||
|
||||
@ -204,6 +205,7 @@ m_option_t mpegopts_conf[] = {
|
||||
{"drop", &conf_drop, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, 1, NULL},
|
||||
{"tsaf", &conf_ts_allframes, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, 1, NULL},
|
||||
{"telecine", &conf_telecine, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, PULLDOWN32, NULL},
|
||||
{"interleaving2", &conf_interleaving2, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, 1, NULL},
|
||||
{"film2pal", &conf_telecine, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, TELECINE_FILM2PAL, NULL},
|
||||
{"tele_src", &(conf_telecine_src), CONF_TYPE_FLOAT, M_OPT_GLOBAL, 0, 0, NULL},
|
||||
{"tele_dest", &(conf_telecine_dest), CONF_TYPE_FLOAT, M_OPT_GLOBAL, 0, 0, NULL},
|
||||
@ -1286,8 +1288,10 @@ static inline int find_best_stream(muxer_t *muxer)
|
||||
muxer_priv_t *priv = muxer->priv;
|
||||
muxer_headers_t *spriv;
|
||||
pack_stats_t p;
|
||||
unsigned int perc, sperc;
|
||||
|
||||
ndts = -1;
|
||||
perc = -1;
|
||||
|
||||
//THIS RULE MUST ALWAYS apply: dts <= SCR + 0.7 seconds
|
||||
for(i = 0; i < muxer->avih.dwStreams; i++)
|
||||
@ -1307,6 +1311,16 @@ static inline int find_best_stream(muxer_t *muxer)
|
||||
dts = spriv->framebuf[0].dts;
|
||||
ndts = i;
|
||||
}
|
||||
|
||||
if(conf_interleaving2)
|
||||
{
|
||||
sperc = (spriv->track_bufsize * 1024) / spriv->max_buffer_size;
|
||||
if(sperc < perc)
|
||||
{
|
||||
ndts = i;
|
||||
perc = sperc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ndts;
|
||||
|
Loading…
Reference in New Issue
Block a user