100% cosmetics: reformatted with tabs and symmetric braces and removed useless braces and trailing tabs

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24930 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
nicodvb 2007-11-02 11:43:03 +00:00
parent ab990585e5
commit ddf7776199
1 changed files with 332 additions and 327 deletions

View File

@ -726,7 +726,7 @@ static int write_mpeg_pes_header(muxer_headers_t *h, uint8_t *pes_id, uint8_t *b
if(mux_type == MUX_MPEG2)
{
{
if(h->buffer_size > 0)
{
buff[len] = 0x1e; //std flag
@ -2227,9 +2227,7 @@ static void fix_parameters(muxer_stream_t *stream)
spriv->max_buffer_size = 16*1024;
}
else if(stream->wf->wFormatTag == AUDIO_AAC1 || stream->wf->wFormatTag == AUDIO_AAC2)
{
priv->use_psm = 1;
}
else if(stream->wf->wFormatTag == AUDIO_MP2 || stream->wf->wFormatTag == AUDIO_MP3)
spriv->is_ready = 0;
}
@ -2239,14 +2237,14 @@ static void fix_parameters(muxer_stream_t *stream)
spriv->max_buffer_size = conf_vbuf_size*1024;
else
{
if(priv->is_dvd)
spriv->max_buffer_size = 232*1024;
else if(priv->is_xsvcd)
spriv->max_buffer_size = 230*1024;
else if(priv->is_xvcd)
spriv->max_buffer_size = 46*1024;
else
spriv->max_buffer_size = 232*1024; //no profile => unconstrained :) FIXME!!!
if(priv->is_dvd)
spriv->max_buffer_size = 232*1024;
else if(priv->is_xsvcd)
spriv->max_buffer_size = 230*1024;
else if(priv->is_xvcd)
spriv->max_buffer_size = 46*1024;
else
spriv->max_buffer_size = 232*1024; //no profile => unconstrained :) FIXME!!!
}
if(is_mpeg4(stream->bih->biCompression))
@ -2257,110 +2255,115 @@ static void fix_parameters(muxer_stream_t *stream)
}
static void mpegfile_write_chunk(muxer_stream_t *s,size_t len,unsigned int flags, double dts_arg, double pts_arg){
size_t sz = 0;
uint64_t tmp;
muxer_t *muxer = s->muxer;
muxer_priv_t *priv = (muxer_priv_t *)muxer->priv;
muxer_headers_t *spriv = (muxer_headers_t*) s->priv;
float fps;
uint32_t stream_format, nf;
static void mpegfile_write_chunk(muxer_stream_t *s,size_t len,unsigned int flags, double dts_arg, double pts_arg)
{
size_t sz = 0;
uint64_t tmp;
muxer_t *muxer = s->muxer;
muxer_priv_t *priv = (muxer_priv_t *)muxer->priv;
muxer_headers_t *spriv = (muxer_headers_t*) s->priv;
float fps;
uint32_t stream_format, nf;
if(s->buffer == NULL)
return;
if(len == -1)
return;
if(s->buffer == NULL || len == -1)
return;
if (s->type == MUXER_TYPE_VIDEO) { // try to recognize frame type...
fps = (float) s->h.dwRate/ (float) s->h.dwScale;
spriv->type = 1;
stream_format = s->bih->biCompression;
if(! spriv->vframes)
{
spriv->last_dts = spriv->last_pts - (uint64_t)(27000000.0f/fps);
mp_msg(MSGT_MUXER, MSGL_INFO,"INITV: %.3lf, %.3lf, fps: %.3f\r\n", (double) spriv->last_pts/27000000.0f, (double) spriv->last_dts/27000000.0f, fps);
}
if(is_mpeg1(stream_format) || is_mpeg2(stream_format))
{
spriv->is_mpeg12 = 1;
spriv->is_ready = 1;
if(len)
sz = parse_mpeg12_video(s, priv, spriv, fps, len);
else {
tmp = (uint64_t) (27000000.0f / fps);
spriv->last_pts += tmp;
spriv->last_dts += tmp;
}
}
else if(is_mpeg4(stream_format))
{
spriv->is_mpeg12 = 0;
spriv->telecine = 0;
if(spriv->size == 0)
priv->use_psm = 1;
if(len)
sz = parse_mpeg4_video(s, priv, spriv, fps, len);
else {
tmp = (uint64_t) (27000000.0f / fps);
spriv->last_pts += tmp;
spriv->last_dts += tmp;
}
}
mp_msg(MSGT_MUXER, MSGL_DBG2,"mpegfile_write_chunk, Video codec=%x, len=%u, mpeg12 returned %u\n", stream_format, (uint32_t) len, (uint32_t) sz);
} else { // MUXER_TYPE_AUDIO
double fake_timer;
spriv->type = 0;
stream_format = s->wf->wFormatTag;
if(s->b_buffer_size - s->b_buffer_len < len)
{
if(s->b_buffer_len > SIZE_MAX - len)
if (s->type == MUXER_TYPE_VIDEO)
{ // try to recognize frame type...
fps = (float) s->h.dwRate/ (float) s->h.dwScale;
spriv->type = 1;
stream_format = s->bih->biCompression;
if(! spriv->vframes)
{
mp_msg(MSGT_MUXER, MSGL_FATAL, "\nFATAL! couldn't realloc, integer overflow\n");
return;
spriv->last_dts = spriv->last_pts - (uint64_t)(27000000.0f/fps);
mp_msg(MSGT_MUXER, MSGL_INFO,"INITV: %.3lf, %.3lf, fps: %.3f\r\n", (double) spriv->last_pts/27000000.0f, (double) spriv->last_dts/27000000.0f, fps);
}
s->b_buffer = realloc(s->b_buffer, len + s->b_buffer_len);
if(s->b_buffer == NULL)
if(is_mpeg1(stream_format) || is_mpeg2(stream_format))
{
mp_msg(MSGT_MUXER, MSGL_FATAL, "\nFATAL! couldn't realloc %d bytes\n", len + s->b_buffer_len);
return;
spriv->is_mpeg12 = 1;
spriv->is_ready = 1;
if(len)
sz = parse_mpeg12_video(s, priv, spriv, fps, len);
else
{
tmp = (uint64_t) (27000000.0f / fps);
spriv->last_pts += tmp;
spriv->last_dts += tmp;
}
}
else if(is_mpeg4(stream_format))
{
spriv->is_mpeg12 = 0;
spriv->telecine = 0;
if(spriv->size == 0)
priv->use_psm = 1;
if(len)
sz = parse_mpeg4_video(s, priv, spriv, fps, len);
else
{
tmp = (uint64_t) (27000000.0f / fps);
spriv->last_pts += tmp;
spriv->last_dts += tmp;
}
}
s->b_buffer_size = len + s->b_buffer_len;
mp_msg(MSGT_MUXER, MSGL_DBG2, "REALLOC(%d) bytes to AUDIO backbuffer\n", s->b_buffer_size);
}
memcpy(&(s->b_buffer[s->b_buffer_ptr + s->b_buffer_len]), s->buffer, len);
s->b_buffer_len += len;
if(!spriv->is_ready)
{
if(s->b_buffer_len >= 32*1024)
{
spriv->mpa_layer = analyze_mpa(s);
spriv->is_ready = 1;
}
mp_msg(MSGT_MUXER, MSGL_DBG2,"mpegfile_write_chunk, Video codec=%x, len=%u, mpeg12 returned %u\n", stream_format, (uint32_t) len, (uint32_t) sz);
}
else
{
parse_audio(s, 0, &nf, &fake_timer, priv->init_adelay, priv->drop);
spriv->vframes += nf;
if(! spriv->vframes)
mp_msg(MSGT_MUXER, MSGL_INFO, "AINIT: %.3lf\r\n", (double) spriv->last_pts/27000000.0f);
{ // MUXER_TYPE_AUDIO
double fake_timer;
spriv->type = 0;
stream_format = s->wf->wFormatTag;
if(s->b_buffer_size - s->b_buffer_len < len)
{
if(s->b_buffer_len > SIZE_MAX - len)
{
mp_msg(MSGT_MUXER, MSGL_FATAL, "\nFATAL! couldn't realloc, integer overflow\n");
return;
}
s->b_buffer = realloc(s->b_buffer, len + s->b_buffer_len);
if(s->b_buffer == NULL)
{
mp_msg(MSGT_MUXER, MSGL_FATAL, "\nFATAL! couldn't realloc %d bytes\n", len + s->b_buffer_len);
return;
}
s->b_buffer_size = len + s->b_buffer_len;
mp_msg(MSGT_MUXER, MSGL_DBG2, "REALLOC(%d) bytes to AUDIO backbuffer\n", s->b_buffer_size);
}
memcpy(&(s->b_buffer[s->b_buffer_ptr + s->b_buffer_len]), s->buffer, len);
s->b_buffer_len += len;
if(!spriv->is_ready)
{
if(s->b_buffer_len >= 32*1024)
{
spriv->mpa_layer = analyze_mpa(s);
spriv->is_ready = 1;
}
}
else
{
parse_audio(s, 0, &nf, &fake_timer, priv->init_adelay, priv->drop);
spriv->vframes += nf;
if(! spriv->vframes)
mp_msg(MSGT_MUXER, MSGL_INFO, "AINIT: %.3lf\r\n", (double) spriv->last_pts/27000000.0f);
}
}
}
if(spriv->psm_fixed == 0) {
add_to_psm(priv, spriv->id, stream_format);
spriv->psm_fixed = 1;
priv->psm_streams_cnt++;
if((priv->psm_streams_cnt == muxer->num_videos + muxer->num_audios) && priv->use_psm)
write_psm_block(muxer, muxer->stream);
}
if(spriv->psm_fixed == 0)
{
add_to_psm(priv, spriv->id, stream_format);
spriv->psm_fixed = 1;
priv->psm_streams_cnt++;
if((priv->psm_streams_cnt == muxer->num_videos + muxer->num_audios) && priv->use_psm)
write_psm_block(muxer, muxer->stream);
}
flush_buffers(muxer, 0);
flush_buffers(muxer, 0);
}
@ -2476,236 +2479,238 @@ static void generate_flags(int source, int target)
}
}
int muxer_init_muxer_mpeg(muxer_t *muxer){
muxer_priv_t *priv;
priv = (muxer_priv_t *) calloc(1, sizeof(muxer_priv_t));
if(priv == NULL)
return 0;
priv->update_system_header = 1;
//calloc() already zero-ed all flags, so we assign only the ones we need
if(conf_mux != NULL) {
if(! strcasecmp(conf_mux, "mpeg1"))
{
priv->mux = MUX_MPEG1;
priv->packet_size = 2048;
priv->is_genmpeg1 = 1;
priv->muxrate = 1800 * 125; //Constrained parameters
}
else if(! strcasecmp(conf_mux, "dvd"))
{
priv->mux = MUX_MPEG2;
priv->is_dvd = 1;
priv->packet_size = 2048;
priv->muxrate = 10080 * 125;
}
else if(! strcasecmp(conf_mux, "xsvcd"))
{
priv->mux = MUX_MPEG2;
priv->is_xsvcd = 1;
priv->packet_size = 2324;
priv->muxrate = 150*2324;
priv->ts_allframes = 1;
}
else if(! strcasecmp(conf_mux, "xvcd"))
{
priv->mux = MUX_MPEG1;
priv->is_xvcd = 1;
priv->packet_size = 2324;
priv->muxrate = 75*2352;
priv->ts_allframes = 1;
}
else if(! strcasecmp(conf_mux, "pes1"))
{
priv->mux = MUX_MPEG1;
priv->rawpes = 1;
priv->packet_size = 2048;
priv->muxrate = 10080 * 125;
priv->ts_allframes = 1;
}
else if(! strcasecmp(conf_mux, "pes2"))
{
priv->mux = MUX_MPEG2;
priv->rawpes = 1;
priv->packet_size = 2048;
priv->muxrate = 10080 * 125;
priv->ts_allframes = 1;
}
else
{
if(strcasecmp(conf_mux, "mpeg2"))
mp_msg(MSGT_MUXER, MSGL_ERR, "Unknown format %s, default to mpeg2\n", conf_mux);
priv->mux = MUX_MPEG2;
priv->is_genmpeg2 = 1;
priv->packet_size = 2048;
priv->muxrate = 1800 * 125; //Constrained parameters
}
}
if(conf_ts_allframes)
priv->ts_allframes = 1;
if(conf_muxrate > 0)
priv->muxrate = conf_muxrate * 125; // * 1000 / 8
if(conf_packet_size)
priv->packet_size = conf_packet_size;
priv->delta_scr = (uint64_t) (90000.0f*300.0f*(double)priv->packet_size/(double)priv->muxrate);
mp_msg(MSGT_MUXER, MSGL_INFO, "PACKET SIZE: %u bytes, deltascr: %"PRIu64"\n", priv->packet_size, priv->delta_scr);
setup_sys_params(priv);
if(conf_vaspect > 0)
{
int asp = (int) (conf_vaspect * 1000.0f);
if(asp >= 1332 && asp <= 1334)
priv->vaspect = ASPECT_4_3;
else if(asp >= 1776 && asp <= 1778)
priv->vaspect = ASPECT_16_9;
else if(asp >= 2209 && asp <= 2211)
priv->vaspect = ASPECT_2_21_1;
else if(asp == 1000)
priv->vaspect = ASPECT_1_1;
else
mp_msg(MSGT_MUXER, MSGL_ERR, "ERROR: unrecognized aspect %.3f\n", conf_vaspect);
}
priv->vframerate = 0; // no change
if(conf_telecine && conf_vframerate > 0)
{
mp_msg(MSGT_MUXER, MSGL_ERR, "ERROR: options 'telecine' and 'vframerate' are mutually exclusive, vframerate disabled\n");
conf_vframerate = 0;
}
if(conf_telecine == TELECINE_FILM2PAL)
{
if(conf_telecine_src==0.0f) conf_telecine_src = 24000.0/1001.0;
conf_telecine_dest = 25;
conf_telecine = TELECINE_DGPULLDOWN;
}
else if(conf_telecine == PULLDOWN32)
{
if(conf_telecine_src==0.0f) conf_telecine_src = 24000.0/1001.0;
conf_telecine_dest = 30000.0/1001.0;
conf_telecine = TELECINE_DGPULLDOWN;
}
if(conf_telecine_src>0 && conf_telecine_dest>0 && conf_telecine_src < conf_telecine_dest)
{
int sfps, tfps;
int muxer_init_muxer_mpeg(muxer_t *muxer)
{
muxer_priv_t *priv;
priv = (muxer_priv_t *) calloc(1, sizeof(muxer_priv_t));
if(priv == NULL)
return 0;
priv->update_system_header = 1;
sfps = (int) (conf_telecine_src * 1001 + 0.5);
tfps = (int) (conf_telecine_dest * 1001 + 0.5);
if(sfps % 2 || tfps % 2)
{
sfps *= 2;
tfps *= 2;
}
//calloc() already zero-ed all flags, so we assign only the ones we need
if(((tfps - sfps)>>1) > sfps)
if(conf_mux != NULL)
{
mp_msg(MSGT_MUXER, MSGL_ERR, "ERROR! Framerate increment must be <= 1.5, telecining disabled\n");
conf_telecine = 0;
}
else
{
generate_flags(sfps, tfps);
conf_telecine = TELECINE_DGPULLDOWN;
conf_vframerate = conf_telecine_dest;
}
}
if(conf_vframerate)
{
int fps;
fps = (int) (conf_vframerate * 1001 + 0.5);
switch(fps)
{
case 24000:
priv->vframerate = FRAMERATE_23976;
break;
case 24024:
priv->vframerate = FRAMERATE_24;
break;
case 25025:
priv->vframerate = FRAMERATE_25;
break;
case 30000:
priv->vframerate = FRAMERATE_2997;
break;
case 30030:
priv->vframerate = FRAMERATE_30;
break;
case 50050:
priv->vframerate = FRAMERATE_50;
break;
case 60000:
priv->vframerate = FRAMERATE_5994;
break;
case 60060:
priv->vframerate = FRAMERATE_60;
break;
default:
if(! strcasecmp(conf_mux, "mpeg1"))
{
mp_msg(MSGT_MUXER, MSGL_ERR, "WRONG FPS: %d/1000, ignoring\n", fps);
if(conf_telecine)
mp_msg(MSGT_MUXER, MSGL_ERR, "DISABLED TELECINING\n");
conf_telecine = 0;
priv->mux = MUX_MPEG1;
priv->packet_size = 2048;
priv->is_genmpeg1 = 1;
priv->muxrate = 1800 * 125; //Constrained parameters
}
else if(! strcasecmp(conf_mux, "dvd"))
{
priv->mux = MUX_MPEG2;
priv->is_dvd = 1;
priv->packet_size = 2048;
priv->muxrate = 10080 * 125;
}
else if(! strcasecmp(conf_mux, "xsvcd"))
{
priv->mux = MUX_MPEG2;
priv->is_xsvcd = 1;
priv->packet_size = 2324;
priv->muxrate = 150*2324;
priv->ts_allframes = 1;
}
else if(! strcasecmp(conf_mux, "xvcd"))
{
priv->mux = MUX_MPEG1;
priv->is_xvcd = 1;
priv->packet_size = 2324;
priv->muxrate = 75*2352;
priv->ts_allframes = 1;
}
else if(! strcasecmp(conf_mux, "pes1"))
{
priv->mux = MUX_MPEG1;
priv->rawpes = 1;
priv->packet_size = 2048;
priv->muxrate = 10080 * 125;
priv->ts_allframes = 1;
}
else if(! strcasecmp(conf_mux, "pes2"))
{
priv->mux = MUX_MPEG2;
priv->rawpes = 1;
priv->packet_size = 2048;
priv->muxrate = 10080 * 125;
priv->ts_allframes = 1;
}
else
{
if(strcasecmp(conf_mux, "mpeg2"))
mp_msg(MSGT_MUXER, MSGL_ERR, "Unknown format %s, default to mpeg2\n", conf_mux);
priv->mux = MUX_MPEG2;
priv->is_genmpeg2 = 1;
priv->packet_size = 2048;
priv->muxrate = 1800 * 125; //Constrained parameters
}
}
}
priv->vwidth = (uint16_t) conf_vwidth;
priv->vheight = (uint16_t) conf_vheight;
priv->panscan_width = (uint16_t) conf_panscan_width;
priv->panscan_height = (uint16_t) conf_panscan_height;
priv->vbitrate = ((conf_vbitrate) * 10) >> 2; //*1000 / 400
if(priv->vaspect || priv->vframerate || priv->vwidth || priv->vheight || priv->vbitrate || priv->panscan_width || priv->panscan_height)
{
priv->patch_seq = priv->vaspect || priv->vframerate || priv->vwidth || priv->vheight || priv->vbitrate;
priv->patch_sde = priv->panscan_width || priv->panscan_height;
mp_msg(MSGT_MUXER, MSGL_INFO, "MPEG MUXER, patching");
if(priv->vwidth || priv->vheight)
mp_msg(MSGT_MUXER, MSGL_INFO, " resolution to %dx%d", priv->vwidth, priv->vheight);
if(priv->panscan_width || priv->panscan_height)
mp_msg(MSGT_MUXER, MSGL_INFO, " panscan to to %dx%d", priv->panscan_width, priv->panscan_height);
if(priv->vframerate)
mp_msg(MSGT_MUXER, MSGL_INFO, " framerate to %s fps", framerates[priv->vframerate]);
if(priv->vaspect)
mp_msg(MSGT_MUXER, MSGL_INFO, " aspect ratio to %s", aspect_ratios[priv->vaspect]);
if(priv->vbitrate)
mp_msg(MSGT_MUXER, MSGL_INFO, " bitrate to %u", conf_vbitrate);
mp_msg(MSGT_MUXER, MSGL_INFO, "\n");
}
priv->has_video = priv->has_audio = 0;
muxer->sysrate = priv->muxrate; // initial muxrate = constrained stream parameter
priv->scr = muxer->file_end = 0;
if(conf_init_vdelay && conf_drop)
{
mp_msg(MSGT_MUXER, MSGL_ERR, "\nmuxer_mpg, :drop and :vdelay used together are not supported, exiting\n");
return 0;
}
if(conf_init_adelay)
priv->init_adelay = - (double) conf_init_adelay / (double) 1000.0;
priv->drop = conf_drop;
priv->buff = (uint8_t *) malloc(priv->packet_size);
if((priv->buff == NULL))
{
mp_msg(MSGT_MUXER, MSGL_ERR, "\nCouldn't allocate %d bytes, exit\n", priv->packet_size);
return 0;
}
muxer->priv = (void *) priv;
muxer->cont_new_stream = &mpegfile_new_stream;
muxer->cont_write_chunk = &mpegfile_write_chunk;
muxer->cont_write_header = &mpegfile_write_header;
muxer->cont_write_index = &mpegfile_write_index;
muxer->fix_stream_parameters = &fix_parameters;
return 1;
if(conf_ts_allframes)
priv->ts_allframes = 1;
if(conf_muxrate > 0)
priv->muxrate = conf_muxrate * 125; // * 1000 / 8
if(conf_packet_size)
priv->packet_size = conf_packet_size;
priv->delta_scr = (uint64_t) (90000.0f*300.0f*(double)priv->packet_size/(double)priv->muxrate);
mp_msg(MSGT_MUXER, MSGL_INFO, "PACKET SIZE: %u bytes, deltascr: %"PRIu64"\n", priv->packet_size, priv->delta_scr);
setup_sys_params(priv);
if(conf_vaspect > 0)
{
int asp = (int) (conf_vaspect * 1000.0f);
if(asp >= 1332 && asp <= 1334)
priv->vaspect = ASPECT_4_3;
else if(asp >= 1776 && asp <= 1778)
priv->vaspect = ASPECT_16_9;
else if(asp >= 2209 && asp <= 2211)
priv->vaspect = ASPECT_2_21_1;
else if(asp == 1000)
priv->vaspect = ASPECT_1_1;
else
mp_msg(MSGT_MUXER, MSGL_ERR, "ERROR: unrecognized aspect %.3f\n", conf_vaspect);
}
priv->vframerate = 0; // no change
if(conf_telecine && conf_vframerate > 0)
{
mp_msg(MSGT_MUXER, MSGL_ERR, "ERROR: options 'telecine' and 'vframerate' are mutually exclusive, vframerate disabled\n");
conf_vframerate = 0;
}
if(conf_telecine == TELECINE_FILM2PAL)
{
if(conf_telecine_src==0.0f) conf_telecine_src = 24000.0/1001.0;
conf_telecine_dest = 25;
conf_telecine = TELECINE_DGPULLDOWN;
}
else if(conf_telecine == PULLDOWN32)
{
if(conf_telecine_src==0.0f) conf_telecine_src = 24000.0/1001.0;
conf_telecine_dest = 30000.0/1001.0;
conf_telecine = TELECINE_DGPULLDOWN;
}
if(conf_telecine_src>0 && conf_telecine_dest>0 && conf_telecine_src < conf_telecine_dest)
{
int sfps, tfps;
sfps = (int) (conf_telecine_src * 1001 + 0.5);
tfps = (int) (conf_telecine_dest * 1001 + 0.5);
if(sfps % 2 || tfps % 2)
{
sfps *= 2;
tfps *= 2;
}
if(((tfps - sfps)>>1) > sfps)
{
mp_msg(MSGT_MUXER, MSGL_ERR, "ERROR! Framerate increment must be <= 1.5, telecining disabled\n");
conf_telecine = 0;
}
else
{
generate_flags(sfps, tfps);
conf_telecine = TELECINE_DGPULLDOWN;
conf_vframerate = conf_telecine_dest;
}
}
if(conf_vframerate)
{
int fps;
fps = (int) (conf_vframerate * 1001 + 0.5);
switch(fps)
{
case 24000:
priv->vframerate = FRAMERATE_23976;
break;
case 24024:
priv->vframerate = FRAMERATE_24;
break;
case 25025:
priv->vframerate = FRAMERATE_25;
break;
case 30000:
priv->vframerate = FRAMERATE_2997;
break;
case 30030:
priv->vframerate = FRAMERATE_30;
break;
case 50050:
priv->vframerate = FRAMERATE_50;
break;
case 60000:
priv->vframerate = FRAMERATE_5994;
break;
case 60060:
priv->vframerate = FRAMERATE_60;
break;
default:
{
mp_msg(MSGT_MUXER, MSGL_ERR, "WRONG FPS: %d/1000, ignoring\n", fps);
if(conf_telecine)
mp_msg(MSGT_MUXER, MSGL_ERR, "DISABLED TELECINING\n");
conf_telecine = 0;
}
}
}
priv->vwidth = (uint16_t) conf_vwidth;
priv->vheight = (uint16_t) conf_vheight;
priv->panscan_width = (uint16_t) conf_panscan_width;
priv->panscan_height = (uint16_t) conf_panscan_height;
priv->vbitrate = ((conf_vbitrate) * 10) >> 2; //*1000 / 400
if(priv->vaspect || priv->vframerate || priv->vwidth || priv->vheight || priv->vbitrate || priv->panscan_width || priv->panscan_height)
{
priv->patch_seq = priv->vaspect || priv->vframerate || priv->vwidth || priv->vheight || priv->vbitrate;
priv->patch_sde = priv->panscan_width || priv->panscan_height;
mp_msg(MSGT_MUXER, MSGL_INFO, "MPEG MUXER, patching");
if(priv->vwidth || priv->vheight)
mp_msg(MSGT_MUXER, MSGL_INFO, " resolution to %dx%d", priv->vwidth, priv->vheight);
if(priv->panscan_width || priv->panscan_height)
mp_msg(MSGT_MUXER, MSGL_INFO, " panscan to to %dx%d", priv->panscan_width, priv->panscan_height);
if(priv->vframerate)
mp_msg(MSGT_MUXER, MSGL_INFO, " framerate to %s fps", framerates[priv->vframerate]);
if(priv->vaspect)
mp_msg(MSGT_MUXER, MSGL_INFO, " aspect ratio to %s", aspect_ratios[priv->vaspect]);
if(priv->vbitrate)
mp_msg(MSGT_MUXER, MSGL_INFO, " bitrate to %u", conf_vbitrate);
mp_msg(MSGT_MUXER, MSGL_INFO, "\n");
}
priv->has_video = priv->has_audio = 0;
muxer->sysrate = priv->muxrate; // initial muxrate = constrained stream parameter
priv->scr = muxer->file_end = 0;
if(conf_init_vdelay && conf_drop)
{
mp_msg(MSGT_MUXER, MSGL_ERR, "\nmuxer_mpg, :drop and :vdelay used together are not supported, exiting\n");
return 0;
}
if(conf_init_adelay)
priv->init_adelay = - (double) conf_init_adelay / (double) 1000.0;
priv->drop = conf_drop;
priv->buff = (uint8_t *) malloc(priv->packet_size);
if((priv->buff == NULL))
{
mp_msg(MSGT_MUXER, MSGL_ERR, "\nCouldn't allocate %d bytes, exit\n", priv->packet_size);
return 0;
}
muxer->priv = (void *) priv;
muxer->cont_new_stream = &mpegfile_new_stream;
muxer->cont_write_chunk = &mpegfile_write_chunk;
muxer->cont_write_header = &mpegfile_write_header;
muxer->cont_write_index = &mpegfile_write_index;
muxer->fix_stream_parameters = &fix_parameters;
return 1;
}