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