# HG changeset patch # User nicodvb # Date 1194029441 0 # Node ID 170dcb44069a362cdad96bd1127ad887fef8baf2 # Parent 75e930e20f48ae82ccc91fc10e86e65d27cc3345 moved to fix_parameters() the code that decides if the PSM is needed diff -r 75e930e20f48 -r 170dcb44069a libmpdemux/muxer_mpeg.c --- a/libmpdemux/muxer_mpeg.c Fri Nov 02 17:48:27 2007 +0000 +++ b/libmpdemux/muxer_mpeg.c Fri Nov 02 18:50:41 2007 +0000 @@ -666,7 +666,7 @@ static int psm_is_late(muxer_priv_t *priv) { - return (priv->scr >= priv->last_psm_scr + 27000000ULL); + return (!priv->data_size || (priv->scr >= priv->last_psm_scr + 27000000ULL)); } static int write_mpeg_pes_header(muxer_headers_t *h, uint8_t *pes_id, uint8_t *buff, uint16_t plen, int stuffing_len, int mux_type) @@ -2227,9 +2227,11 @@ muxer_headers_t *spriv = stream->priv; muxer_t *muxer = stream->muxer; muxer_priv_t *priv = muxer->priv; + uint32_t stream_format; if(stream->type == MUXER_TYPE_AUDIO) { + stream_format = stream->wf->wFormatTag; spriv->is_ready = 1; if(conf_abuf_size) spriv->max_buffer_size = conf_abuf_size*1024; @@ -2251,6 +2253,7 @@ } else //video { + stream_format = stream->bih->biCompression; if(conf_vbuf_size) spriv->max_buffer_size = conf_vbuf_size*1024; else @@ -2270,6 +2273,12 @@ else spriv->is_ready = 1; } + + if(priv->is_genmpeg2) + { + add_to_psm(priv, spriv->id, stream_format); + priv->psm_streams_cnt++; + } } @@ -2371,16 +2380,6 @@ } } - - 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); }