Mercurial > mplayer.hg
comparison libmpdemux/muxer_mpeg.c @ 22881:2d01760be338
removed init_apts and init_vpts; added :adelay in addition to :vdelay
author | nicodvb |
---|---|
date | Sun, 01 Apr 2007 21:27:47 +0000 |
parents | 910cdc3f2afb |
children | 94183c81ec0c |
comparison
equal
deleted
inserted
replaced
22880:8b0cfdc71759 | 22881:2d01760be338 |
---|---|
76 static float conf_vframerate = 0; | 76 static float conf_vframerate = 0; |
77 static uint32_t conf_vwidth = 0, conf_vheight = 0, conf_panscan_width = 0, conf_panscan_height = 0; | 77 static uint32_t conf_vwidth = 0, conf_vheight = 0, conf_panscan_width = 0, conf_panscan_height = 0; |
78 static uint32_t conf_vbitrate = 0; | 78 static uint32_t conf_vbitrate = 0; |
79 static int conf_init_vpts = 200, conf_init_apts = 200; | 79 static int conf_init_vpts = 200, conf_init_apts = 200; |
80 static int conf_ts_allframes = 0; | 80 static int conf_ts_allframes = 0; |
81 static int conf_init_adelay = 0; | 81 static int conf_init_adelay = 0, conf_init_vdelay = 0; |
82 static int conf_abuf_size = 0; | 82 static int conf_abuf_size = 0; |
83 static int conf_vbuf_size = 0; | 83 static int conf_vbuf_size = 0; |
84 static int conf_drop = 0; | 84 static int conf_drop = 0; |
85 static int conf_telecine = 0; | 85 static int conf_telecine = 0; |
86 static float conf_telecine_src = 0; | 86 static float conf_telecine_src = 0; |
195 {"vwidth", &(conf_vwidth), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 4095, NULL}, | 195 {"vwidth", &(conf_vwidth), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 4095, NULL}, |
196 {"vheight", &(conf_vheight), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 4095, NULL}, | 196 {"vheight", &(conf_vheight), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 4095, NULL}, |
197 {"vpswidth", &(conf_panscan_width), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 16383, NULL}, | 197 {"vpswidth", &(conf_panscan_width), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 16383, NULL}, |
198 {"vpsheight", &(conf_panscan_height), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 16383, NULL}, | 198 {"vpsheight", &(conf_panscan_height), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 16383, NULL}, |
199 {"vbitrate", &(conf_vbitrate), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 104857599, NULL}, | 199 {"vbitrate", &(conf_vbitrate), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 104857599, NULL}, |
200 {"init_vpts", &(conf_init_vpts), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 100, 700, NULL}, //2*frametime at 60fps | 200 {"vdelay", &conf_init_vdelay, CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 0, 32760, NULL}, |
201 {"init_apts", &(conf_init_apts), CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 100, 700, NULL}, | 201 {"adelay", &conf_init_adelay, CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 0, 32760, NULL}, |
202 {"vdelay", &conf_init_adelay, CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 1, 32760, NULL}, | |
203 {"vbuf_size", &conf_vbuf_size, CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 40, 1194, NULL}, | 202 {"vbuf_size", &conf_vbuf_size, CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 40, 1194, NULL}, |
204 {"abuf_size", &conf_abuf_size, CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 4, 64, NULL}, | 203 {"abuf_size", &conf_abuf_size, CONF_TYPE_INT, M_OPT_GLOBAL|M_OPT_RANGE, 4, 64, NULL}, |
205 {"drop", &conf_drop, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, 1, NULL}, | 204 {"drop", &conf_drop, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, 1, NULL}, |
206 {"tsaf", &conf_ts_allframes, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, 1, NULL}, | 205 {"tsaf", &conf_ts_allframes, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, 1, NULL}, |
207 {"telecine", &conf_telecine, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, PULLDOWN32, NULL}, | 206 {"telecine", &conf_telecine, CONF_TYPE_FLAG, M_OPT_GLOBAL, 0, PULLDOWN32, NULL}, |
392 s->muxer=muxer; | 391 s->muxer=muxer; |
393 | 392 |
394 if (type == MUXER_TYPE_VIDEO) { | 393 if (type == MUXER_TYPE_VIDEO) { |
395 spriv->type = 1; | 394 spriv->type = 1; |
396 spriv->last_pts = conf_init_vpts * 90 * 300; | 395 spriv->last_pts = conf_init_vpts * 90 * 300; |
396 if(conf_init_vdelay) { | |
397 spriv->last_dts += conf_init_vdelay * 90 * 300; | |
398 spriv->last_pts += conf_init_vdelay * 90 * 300; | |
399 } | |
397 spriv->id = 0xe0 + muxer->num_videos; | 400 spriv->id = 0xe0 + muxer->num_videos; |
398 s->ckid = be2me_32 (0x100 + spriv->id); | 401 s->ckid = be2me_32 (0x100 + spriv->id); |
399 if(priv->is_genmpeg1 || priv->is_genmpeg2) { | 402 if(priv->is_genmpeg1 || priv->is_genmpeg2) { |
400 int v = (conf_vbuf_size ? conf_vbuf_size*1024 : | 403 int v = (conf_vbuf_size ? conf_vbuf_size*1024 : |
401 (s->h.dwSuggestedBufferSize ? s->h.dwSuggestedBufferSize : 46*1024)); | 404 (s->h.dwSuggestedBufferSize ? s->h.dwSuggestedBufferSize : 46*1024)); |
426 mp_msg (MSGT_MUXER, MSGL_DBG2, "Added video stream %d, ckid=%X\n", muxer->num_videos, s->ckid); | 429 mp_msg (MSGT_MUXER, MSGL_DBG2, "Added video stream %d, ckid=%X\n", muxer->num_videos, s->ckid); |
427 } else { // MUXER_TYPE_AUDIO | 430 } else { // MUXER_TYPE_AUDIO |
428 spriv->type = 0; | 431 spriv->type = 0; |
429 spriv->drop_delayed_frames = conf_drop; | 432 spriv->drop_delayed_frames = conf_drop; |
430 spriv->last_pts = conf_init_apts * 90 * 300; | 433 spriv->last_pts = conf_init_apts * 90 * 300; |
431 if(conf_init_adelay < 0 && ! spriv->drop_delayed_frames) | 434 if(conf_init_adelay && ! spriv->drop_delayed_frames) |
432 spriv->last_pts += (-conf_init_adelay) * 90 * 300; | 435 spriv->last_pts += conf_init_adelay * 90 * 300; |
433 spriv->pts = spriv->last_pts; | 436 spriv->pts = spriv->last_pts; |
434 spriv->id = 0xc0 + muxer->num_audios; | 437 spriv->id = 0xc0 + muxer->num_audios; |
435 s->ckid = be2me_32 (0x100 + spriv->id); | 438 s->ckid = be2me_32 (0x100 + spriv->id); |
436 if(priv->is_genmpeg1 || priv->is_genmpeg2) { | 439 if(priv->is_genmpeg1 || priv->is_genmpeg2) { |
437 int a1 = (conf_abuf_size ? conf_abuf_size*1024 : | 440 int a1 = (conf_abuf_size ? conf_abuf_size*1024 : |
2643 priv->has_video = priv->has_audio = 0; | 2646 priv->has_video = priv->has_audio = 0; |
2644 | 2647 |
2645 muxer->sysrate = priv->muxrate; // initial muxrate = constrained stream parameter | 2648 muxer->sysrate = priv->muxrate; // initial muxrate = constrained stream parameter |
2646 priv->scr = muxer->file_end = 0; | 2649 priv->scr = muxer->file_end = 0; |
2647 | 2650 |
2651 if(conf_init_vdelay && conf_drop) | |
2652 { | |
2653 mp_msg(MSGT_MUXER, MSGL_ERR, "\nmuxer_mpg, :drop and :vdelay used together are not supported, exiting\n"); | |
2654 return 0; | |
2655 } | |
2648 if(conf_init_adelay) | 2656 if(conf_init_adelay) |
2649 priv->init_adelay = - (double) conf_init_adelay / (double) 1000.0; | 2657 priv->init_adelay = - (double) conf_init_adelay / (double) 1000.0; |
2650 | 2658 |
2651 priv->drop = conf_drop; | 2659 priv->drop = conf_drop; |
2652 | 2660 |