On 07/08/14 23:43, Diego Biurrun wrote:
> From: Luca Barbato <[email protected]>
> 
> Signed-off-by: Diego Biurrun <[email protected]>
> ---
> 
> Amended with some extra changes.
> 
>  libavformat/mpegenc.c | 645 
> ++++++++++++++++++++++++++------------------------
>  1 file changed, 333 insertions(+), 312 deletions(-)
> 
> diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c
> index 13d5b03..8be84a0 100644
> --- a/libavformat/mpegenc.c
> +++ b/libavformat/mpegenc.c
> @@ -26,7 +26,9 @@
>  #include "libavutil/log.h"
>  #include "libavutil/mathematics.h"
>  #include "libavutil/opt.h"
> +
>  #include "libavcodec/put_bits.h"
> +
>  #include "avformat.h"
>  #include "internal.h"
>  #include "mpeg.h"
> @@ -78,7 +80,7 @@ typedef struct {
>      int is_dvd;
>      int64_t last_scr; /* current system clock */
>  
> -    double vcd_padding_bitrate; //FIXME floats
> +    double vcd_padding_bitrate; // FIXME floats
>      int64_t vcd_padding_bytes_written;
>  
>      int preload;
> @@ -89,8 +91,8 @@ extern AVOutputFormat ff_mpeg2dvd_muxer;
>  extern AVOutputFormat ff_mpeg2svcd_muxer;
>  extern AVOutputFormat ff_mpeg2vob_muxer;
>  
> -static int put_pack_header(AVFormatContext *ctx,
> -                           uint8_t *buf, int64_t timestamp)
> +static int put_pack_header(AVFormatContext *ctx, uint8_t *buf,
> +                           int64_t timestamp)
>  {
>      MpegMuxContext *s = ctx->priv_data;
>      PutBitContext pb;
> @@ -98,21 +100,19 @@ static int put_pack_header(AVFormatContext *ctx,
>      init_put_bits(&pb, buf, 128);
>  
>      put_bits32(&pb, PACK_START_CODE);
> -    if (s->is_mpeg2) {
> +    if (s->is_mpeg2)
>          put_bits(&pb, 2, 0x1);
> -    } else {
> +    else
>          put_bits(&pb, 4, 0x2);
> -    }
> -    put_bits(&pb, 3,  (uint32_t)((timestamp >> 30) & 0x07));
> +    put_bits(&pb, 3, (uint32_t)((timestamp >> 30) & 0x07));
>      put_bits(&pb, 1, 1);
>      put_bits(&pb, 15, (uint32_t)((timestamp >> 15) & 0x7fff));
>      put_bits(&pb, 1, 1);
> -    put_bits(&pb, 15, (uint32_t)((timestamp      ) & 0x7fff));
> +    put_bits(&pb, 15, (uint32_t)((timestamp) & 0x7fff));
>      put_bits(&pb, 1, 1);
> -    if (s->is_mpeg2) {
> +    if (s->is_mpeg2)
>          /* clock extension */
>          put_bits(&pb, 9, 0);
> -    }
>      put_bits(&pb, 1, 1);
>      put_bits(&pb, 22, s->mux_rate);
>      put_bits(&pb, 1, 1);
> @@ -125,7 +125,8 @@ static int put_pack_header(AVFormatContext *ctx,
>      return put_bits_ptr(&pb) - pb.buf;
>  }
>  
> -static int put_system_header(AVFormatContext *ctx, uint8_t *buf,int 
> only_for_stream_id)
> +static int put_system_header(AVFormatContext *ctx, uint8_t *buf,
> +                             int only_for_stream_id)
>  {
>      MpegMuxContext *s = ctx->priv_data;
>      int size, i, private_stream_coded, id;
> @@ -137,20 +138,22 @@ static int put_system_header(AVFormatContext *ctx, 
> uint8_t *buf,int only_for_str
>      put_bits(&pb, 16, 0);
>      put_bits(&pb, 1, 1);
>  
> -    put_bits(&pb, 22, s->mux_rate); /* maximum bit rate of the multiplexed 
> stream */
> +    /* maximum bit rate of the multiplexed stream */
> +    put_bits(&pb, 22, s->mux_rate);
>      put_bits(&pb, 1, 1); /* marker */
> -    if (s->is_vcd && only_for_stream_id==VIDEO_ID) {
> -        /* This header applies only to the video stream (see VCD standard p. 
> IV-7)*/
> +    if (s->is_vcd && only_for_stream_id == VIDEO_ID) {
> +        /* This header applies only to the video stream
> +         * (see VCD standard p. IV-7) */
>          put_bits(&pb, 6, 0);
>      } else
>          put_bits(&pb, 6, s->audio_bound);
>  
>      if (s->is_vcd) {
> -        /* see VCD standard, p. IV-7*/
> +        /* see VCD standard, p. IV-7 */
>          put_bits(&pb, 1, 0);
>          put_bits(&pb, 1, 1);
>      } else {
> -        put_bits(&pb, 1, 0); /* variable bitrate*/
> +        put_bits(&pb, 1, 0); /* variable bitrate */
>          put_bits(&pb, 1, 0); /* non constrainted bit stream */
>      }
>  
> @@ -166,7 +169,8 @@ static int put_system_header(AVFormatContext *ctx, 
> uint8_t *buf,int only_for_str
>      put_bits(&pb, 1, 1); /* marker */
>  
>      if (s->is_vcd && (only_for_stream_id & 0xe0) == AUDIO_ID) {
> -        /* This header applies only to the audio stream (see VCD standard p. 
> IV-7)*/
> +        /* This header applies only to the audio stream
> +         * (see VCD standard p. IV-7) */
>          put_bits(&pb, 5, 0);
>      } else
>          put_bits(&pb, 5, s->video_bound);
> @@ -178,23 +182,24 @@ static int put_system_header(AVFormatContext *ctx, 
> uint8_t *buf,int only_for_str
>          put_bits(&pb, 8, 0xff); /* reserved byte */
>  
>      /* DVD-Video Stream_bound entries
> -    id (0xB9) video, maximum P-STD for stream 0xE0. 
> (P-STD_buffer_bound_scale = 1)
> -    id (0xB8) audio, maximum P-STD for any MPEG audio (0xC0 to 0xC7) 
> streams. If there are none set to 4096 (32x128). (P-STD_buffer_bound_scale = 
> 0)
> -    id (0xBD) private stream 1 (audio other than MPEG and subpictures). 
> (P-STD_buffer_bound_scale = 1)
> -    id (0xBF) private stream 2, NAV packs, set to 2x1024. */
> +     * id (0xB9) video, maximum P-STD for stream 0xE0. 
> (P-STD_buffer_bound_scale = 1)
> +     * id (0xB8) audio, maximum P-STD for any MPEG audio (0xC0 to 0xC7) 
> streams. If there are none set to 4096 (32x128). (P-STD_buffer_bound_scale = 
> 0)
> +     * id (0xBD) private stream 1 (audio other than MPEG and subpictures). 
> (P-STD_buffer_bound_scale = 1)
> +     * id (0xBF) private stream 2, NAV packs, set to 2x1024. */
>      if (s->is_dvd) {
>  
>          int P_STD_max_video = 0;
>          int P_STD_max_mpeg_audio = 0;
>          int P_STD_max_mpeg_PS1 = 0;
>  
> -        for(i=0;i<ctx->nb_streams;i++) {
> +        for (i = 0; i < ctx->nb_streams; i++) {
>              StreamInfo *stream = ctx->streams[i]->priv_data;
>  
>              id = stream->id;
>              if (id == 0xbd && stream->max_buffer_size > P_STD_max_mpeg_PS1) {
>                  P_STD_max_mpeg_PS1 = stream->max_buffer_size;
> -            } else if (id >= 0xc0 && id <= 0xc7 && stream->max_buffer_size > 
> P_STD_max_mpeg_audio) {
> +            } else if (id >= 0xc0 && id <= 0xc7 && stream->max_buffer_size >
> +                       P_STD_max_mpeg_audio) {
>                  P_STD_max_mpeg_audio = stream->max_buffer_size;
>              } else if (id == 0xe0 && stream->max_buffer_size > 
> P_STD_max_video) {
>                  P_STD_max_video = stream->max_buffer_size;
> @@ -226,20 +231,17 @@ static int put_system_header(AVFormatContext *ctx, 
> uint8_t *buf,int only_for_str
>          put_bits(&pb, 2, 3);
>          put_bits(&pb, 1, 1);
>          put_bits(&pb, 13, 2);
> -    }
> -    else {
> +    } else {
>          /* audio stream info */
>          private_stream_coded = 0;
> -        for(i=0;i<ctx->nb_streams;i++) {
> +        for (i = 0; i < ctx->nb_streams; i++) {
>              StreamInfo *stream = ctx->streams[i]->priv_data;
>  
> -
>              /* For VCDs, only include the stream info for the stream
> -            that the pack which contains this system belongs to.
> -            (see VCD standard p. IV-7) */
> -            if ( !s->is_vcd || stream->id==only_for_stream_id
> -                || only_for_stream_id==0) {
> -
> +             * that the pack which contains this system belongs to.
> +             * (see VCD standard p. IV-7) */
> +            if (!s->is_vcd || stream->id == only_for_stream_id ||
> +                only_for_stream_id == 0) {
>                  id = stream->id;
>                  if (id < 0xc0) {
>                      /* special case for private streams (AC-3 uses that) */
> @@ -248,7 +250,7 @@ static int put_system_header(AVFormatContext *ctx, 
> uint8_t *buf,int only_for_str
>                      private_stream_coded = 1;
>                      id = 0xbd;
>                  }
> -                put_bits(&pb, 8, id); /* stream ID */
> +                put_bits(&pb, 8, id);         /* stream ID */
>                  put_bits(&pb, 2, 3);
>                  if (id < 0xe0) {
>                      /* audio */
> @@ -279,11 +281,11 @@ static int get_system_header_size(AVFormatContext *ctx)
>      MpegMuxContext *s = ctx->priv_data;
>  
>      if (s->is_dvd)
> -       return 18; // DVD-Video system headers are 18 bytes fixed length.
> +        return 18; // DVD-Video system headers are 18 bytes fixed length.
>  
>      buf_index = 12;
>      private_stream_coded = 0;
> -    for(i=0;i<ctx->nb_streams;i++) {
> +    for (i = 0; i < ctx->nb_streams; i++) {
>          stream = ctx->streams[i]->priv_data;
>          if (stream->id < 0xc0) {
>              if (private_stream_coded)
> @@ -305,14 +307,14 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
>      int video_bitrate;
>  
>      s->packet_number = 0;
> -    s->is_vcd =    (CONFIG_MPEG1VCD_MUXER  && ctx->oformat == 
> &ff_mpeg1vcd_muxer);
> -    s->is_svcd =   (CONFIG_MPEG2SVCD_MUXER && ctx->oformat == 
> &ff_mpeg2svcd_muxer);
> -    s->is_mpeg2 = ((CONFIG_MPEG2VOB_MUXER  && ctx->oformat == 
> &ff_mpeg2vob_muxer) ||
> -                   (CONFIG_MPEG2DVD_MUXER  && ctx->oformat == 
> &ff_mpeg2dvd_muxer) ||
> -                   (CONFIG_MPEG2SVCD_MUXER && ctx->oformat == 
> &ff_mpeg2svcd_muxer));
> -    s->is_dvd =    (CONFIG_MPEG2DVD_MUXER  && ctx->oformat == 
> &ff_mpeg2dvd_muxer);
> -
> -    if(ctx->packet_size) {
> +    s->is_vcd   = (CONFIG_MPEG1VCD_MUXER  && ctx->oformat == 
> &ff_mpeg1vcd_muxer);
> +    s->is_svcd  = (CONFIG_MPEG2SVCD_MUXER && ctx->oformat == 
> &ff_mpeg2svcd_muxer);
> +    s->is_mpeg2 = (CONFIG_MPEG2VOB_MUXER  && ctx->oformat == 
> &ff_mpeg2vob_muxer) ||
> +                  (CONFIG_MPEG2DVD_MUXER  && ctx->oformat == 
> &ff_mpeg2dvd_muxer) ||
> +                  (CONFIG_MPEG2SVCD_MUXER && ctx->oformat == 
> &ff_mpeg2svcd_muxer);
> +    s->is_dvd   = (CONFIG_MPEG2DVD_MUXER  && ctx->oformat == 
> &ff_mpeg2dvd_muxer);
> +
> +    if (ctx->packet_size) {
>          if (ctx->packet_size < 20 || ctx->packet_size > (1 << 23) + 10) {
>              av_log(ctx, AV_LOG_ERROR, "Invalid packet size %d\n",
>                     ctx->packet_size);
> @@ -321,22 +323,24 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
>          s->packet_size = ctx->packet_size;
>      } else
>          s->packet_size = 2048;
> -    if (ctx->max_delay < 0) /* Not set by the caller */
> +    if (ctx->max_delay < 0)     /* Not set by the caller */
>          ctx->max_delay = 0;
>  
>      s->vcd_padding_bytes_written = 0;
> -    s->vcd_padding_bitrate=0;
> +    s->vcd_padding_bitrate       = 0;
>  
>      s->audio_bound = 0;
>      s->video_bound = 0;
> -    mpa_id = AUDIO_ID;
> -    ac3_id = AC3_ID;
> -    dts_id = DTS_ID;
> -    mpv_id = VIDEO_ID;
> -    mps_id = SUB_ID;
> +
> +    mpa_id  = AUDIO_ID;
> +    ac3_id  = AC3_ID;
> +    dts_id  = DTS_ID;
> +    mpv_id  = VIDEO_ID;
> +    mps_id  = SUB_ID;
>      lpcm_id = LPCM_ID;
> -    for(i=0;i<ctx->nb_streams;i++) {
> -        st = ctx->streams[i];
> +
> +    for (i = 0; i < ctx->nb_streams; i++) {
> +        st     = ctx->streams[i];
>          stream = av_mallocz(sizeof(StreamInfo));
>          if (!stream)
>              goto fail;
> @@ -344,15 +348,15 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
>  
>          avpriv_set_pts_info(st, 64, 1, 90000);
>  
> -        switch(st->codec->codec_type) {
> +        switch (st->codec->codec_type) {
>          case AVMEDIA_TYPE_AUDIO:
> -            if        (st->codec->codec_id == AV_CODEC_ID_AC3) {
> +            if (st->codec->codec_id == AV_CODEC_ID_AC3) {
>                  stream->id = ac3_id++;
>              } else if (st->codec->codec_id == AV_CODEC_ID_DTS) {
>                  stream->id = dts_id++;
>              } else if (st->codec->codec_id == AV_CODEC_ID_PCM_S16BE) {
>                  stream->id = lpcm_id++;
> -                for(j = 0; j < 4; j++) {
> +                for (j = 0; j < 4; j++) {
>                      if (lpcm_freq_tab[j] == st->codec->sample_rate)
>                          break;
>                  }
> @@ -363,66 +367,68 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
>                  stream->lpcm_header[0] = 0x0c;
>                  stream->lpcm_header[1] = (st->codec->channels - 1) | (j << 
> 4);
>                  stream->lpcm_header[2] = 0x80;
> -                stream->lpcm_align = st->codec->channels * 2;
> +                stream->lpcm_align     = st->codec->channels * 2;
>              } else {
>                  stream->id = mpa_id++;
>              }
>  
>              /* This value HAS to be used for VCD (see VCD standard, p. IV-7).
> -               Right now it is also used for everything else.*/
> +             * Right now it is also used for everything else. */
>              stream->max_buffer_size = 4 * 1024;
>              s->audio_bound++;
>              break;
>          case AVMEDIA_TYPE_VIDEO:
>              stream->id = mpv_id++;
>              if (st->codec->rc_buffer_size)
> -                stream->max_buffer_size = 6*1024 + 
> st->codec->rc_buffer_size/8;
> +                stream->max_buffer_size = 6 * 1024 + 
> st->codec->rc_buffer_size / 8;
>              else {
> -                av_log(ctx, AV_LOG_WARNING, "VBV buffer size not set, muxing 
> may fail\n");
> -                stream->max_buffer_size = 230*1024; //FIXME this is probably 
> too small as default
> +                av_log(ctx, AV_LOG_WARNING,
> +                       "VBV buffer size not set, muxing may fail\n");
> +                // FIXME: this is probably too small as default
> +                stream->max_buffer_size = 230 * 1024;
>              }
>              s->video_bound++;
>              break;
>          case AVMEDIA_TYPE_SUBTITLE:
> -            stream->id = mps_id++;
> +            stream->id              = mps_id++;
>              stream->max_buffer_size = 16 * 1024;
>              break;
>          default:
>              return -1;
>          }
> -        stream->fifo= av_fifo_alloc(16);
> +        stream->fifo = av_fifo_alloc(16);
>          if (!stream->fifo)
>              goto fail;
>      }
> -    bitrate = 0;
> +    bitrate       = 0;
>      audio_bitrate = 0;
>      video_bitrate = 0;
> -    for(i=0;i<ctx->nb_streams;i++) {
> +    for (i = 0; i < ctx->nb_streams; i++) {
>          int codec_rate;
> -        st = ctx->streams[i];
> -        stream = (StreamInfo*) st->priv_data;
> +        st     = ctx->streams[i];
> +        stream = (StreamInfo *)st->priv_data;
>  
> -        if(st->codec->rc_max_rate || stream->id==VIDEO_ID)
> -            codec_rate= st->codec->rc_max_rate;
> +        if (st->codec->rc_max_rate || stream->id == VIDEO_ID)
> +            codec_rate = st->codec->rc_max_rate;
>          else
> -            codec_rate= st->codec->bit_rate;
> +            codec_rate = st->codec->bit_rate;
>  
> -        if(!codec_rate)
> -            codec_rate= (1<<21)*8*50/ctx->nb_streams;
> +        if (!codec_rate)
> +            codec_rate = (1 << 21) * 8 * 50 / ctx->nb_streams;
>  
>          bitrate += codec_rate;
>  
>          if ((stream->id & 0xe0) == AUDIO_ID)
>              audio_bitrate += codec_rate;
> -        else if (stream->id==VIDEO_ID)
> +        else if (stream->id == VIDEO_ID)
>              video_bitrate += codec_rate;
>      }
>  
>      if (!s->mux_rate) {
>          /* we increase slightly the bitrate to take into account the
> -           headers. XXX: compute it exactly */
> -        bitrate += bitrate / 20;
> -        bitrate += 10000;
> +         * headers. XXX: compute it exactly */
> +        bitrate    += bitrate / 20;
> +        bitrate    += 10000;
>          s->mux_rate = (bitrate + (8 * 50) - 1) / (8 * 50);
>      }
>  
> @@ -430,23 +436,23 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
>          double overhead_rate;
>  
>          /* The VCD standard mandates that the mux_rate field is 3528
> -           (see standard p. IV-6).
> -           The value is actually "wrong", i.e. if you calculate
> -           it using the normal formula and the 75 sectors per second transfer
> -           rate you get a different value because the real pack size is 2324,
> -           not 2352. But the standard explicitly specifies that the mux_rate
> -           field in the header must have this value.*/
> -//        s->mux_rate=2352 * 75 / 50;    /* = 3528*/
> +         * (see standard p. IV-6).
> +         * The value is actually "wrong", i.e. if you calculate
> +         * it using the normal formula and the 75 sectors per second transfer
> +         * rate you get a different value because the real pack size is 2324,
> +         * not 2352. But the standard explicitly specifies that the mux_rate
> +         * field in the header must have this value. */
> +        // s->mux_rate = 2352 * 75 / 50;    /* = 3528 */
>  
>          /* The VCD standard states that the muxed stream must be
> -           exactly 75 packs / second (the data rate of a single speed cdrom).
> -           Since the video bitrate (probably 1150000 bits/sec) will be below
> -           the theoretical maximum we have to add some padding packets
> -           to make up for the lower data rate.
> -           (cf. VCD standard p. IV-6 )*/
> +         * exactly 75 packs / second (the data rate of a single speed cdrom).
> +         * Since the video bitrate (probably 1150000 bits/sec) will be below
> +         * the theoretical maximum we have to add some padding packets
> +         * to make up for the lower data rate.
> +         * (cf. VCD standard p. IV-6 ) */
>  
>          /* Add the header overhead to the data rate.
> -           2279 data bytes per audio pack, 2294 data bytes per video pack*/
> +         * 2279 data bytes per audio pack, 2294 data bytes per video pack */
>          overhead_rate  = ((audio_bitrate / 8.0) / 2279) * (2324 - 2279);
>          overhead_rate += ((video_bitrate / 8.0) / 2294) * (2324 - 2294);
>          overhead_rate *= 8;
> @@ -464,70 +470,67 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
>  
>      /* the above seems to make pack_header_freq zero sometimes */
>      if (s->pack_header_freq == 0)
> -       s->pack_header_freq = 1;
> +        s->pack_header_freq = 1;
>  
>      if (s->is_mpeg2)
>          /* every 200 packets. Need to look at the spec.  */
>          s->system_header_freq = s->pack_header_freq * 40;
>      else if (s->is_vcd)
>          /* the standard mandates that there are only two system headers
> -           in the whole file: one in the first packet of each stream.
> -           (see standard p. IV-7 and IV-8) */
> +         * in the whole file: one in the first packet of each stream.
> +         * (see standard p. IV-7 and IV-8) */
>          s->system_header_freq = 0x7fffffff;
>      else
>          s->system_header_freq = s->pack_header_freq * 5;
>  
> -    for(i=0;i<ctx->nb_streams;i++) {
> -        stream = ctx->streams[i]->priv_data;
> +    for (i = 0; i < ctx->nb_streams; i++) {
> +        stream                = ctx->streams[i]->priv_data;
>          stream->packet_number = 0;
>      }
>      s->system_header_size = get_system_header_size(ctx);
> -    s->last_scr = 0;
> +    s->last_scr           = 0;
>      return 0;
> - fail:
> -    for(i=0;i<ctx->nb_streams;i++) {
> +
> +fail:
> +    for (i = 0; i < ctx->nb_streams; i++)
>          av_free(ctx->streams[i]->priv_data);
> -    }
>      return AVERROR(ENOMEM);
>  }
>  
>  static inline void put_timestamp(AVIOContext *pb, int id, int64_t timestamp)
>  {
> -    avio_w8(pb,
> -             (id << 4) |
> -             (((timestamp >> 30) & 0x07) << 1) |
> -             1);
> +    avio_w8(pb, (id << 4) |  (((timestamp >> 30) & 0x07)   << 1) | 1);
>      avio_wb16(pb, (uint16_t)((((timestamp >> 15) & 0x7fff) << 1) | 1));
> -    avio_wb16(pb, (uint16_t)((((timestamp      ) & 0x7fff) << 1) | 1));
> +    avio_wb16(pb, (uint16_t)((((timestamp)       & 0x7fff) << 1) | 1));
>  }
>  
> -
>  /* return the number of padding bytes that should be inserted into
> -   the multiplexed stream.*/
> + * the multiplexed stream. */
>  static int get_vcd_padding_size(AVFormatContext *ctx, int64_t pts)
>  {
>      MpegMuxContext *s = ctx->priv_data;
>      int pad_bytes = 0;
>  
> -    if (s->vcd_padding_bitrate > 0 && pts!=AV_NOPTS_VALUE)
> -    {
> +    if (s->vcd_padding_bitrate > 0 && pts != AV_NOPTS_VALUE) {
>          int64_t full_pad_bytes;
>  
> -        full_pad_bytes = (int64_t)((s->vcd_padding_bitrate * (pts / 
> 90000.0)) / 8.0); //FIXME this is wrong
> -        pad_bytes = (int) (full_pad_bytes - s->vcd_padding_bytes_written);
> +        // FIXME: this is wrong
> +        full_pad_bytes =
> +            (int64_t)((s->vcd_padding_bitrate * (pts / 90000.0)) / 8.0);
> +        pad_bytes = (int)(full_pad_bytes - s->vcd_padding_bytes_written);
>  
> -        if (pad_bytes<0)
> +        if (pad_bytes < 0)
>              /* might happen if we have already padded to a later timestamp. 
> This
> -               can occur if another stream has already advanced further.*/
> -            pad_bytes=0;
> +             * can occur if another stream has already advanced further. */
> +            pad_bytes = 0;
>      }
>  
>      return pad_bytes;
>  }
>  
> -
>  /* Write an MPEG padding packet header. */
> -static void put_padding_packet(AVFormatContext *ctx, AVIOContext *pb,int 
> packet_bytes)
> +static void put_padding_packet(AVFormatContext *ctx, AVIOContext *pb,
> +                               int packet_bytes)
>  {
>      MpegMuxContext *s = ctx->priv_data;
>      int i;
> @@ -540,19 +543,20 @@ static void put_padding_packet(AVFormatContext *ctx, 
> AVIOContext *pb,int packet_
>      } else
>          packet_bytes -= 6;
>  
> -    for(i=0;i<packet_bytes;i++)
> +    for (i = 0; i < packet_bytes; i++)
>          avio_w8(pb, 0xff);
>  }
>  
> -static int get_nb_frames(AVFormatContext *ctx, StreamInfo *stream, int len){
> -    int nb_frames=0;
> -    PacketDesc *pkt_desc= stream->premux_packet;
> +static int get_nb_frames(AVFormatContext *ctx, StreamInfo *stream, int len)
> +{
> +    int nb_frames        = 0;
> +    PacketDesc *pkt_desc = stream->premux_packet;
>  
> -    while(len>0){
> -        if(pkt_desc->size == pkt_desc->unwritten_size)
> +    while (len > 0) {
> +        if (pkt_desc->size == pkt_desc->unwritten_size)
>              nb_frames++;
> -        len -= pkt_desc->unwritten_size;
> -        pkt_desc= pkt_desc->next;
> +        len     -= pkt_desc->unwritten_size;
> +        pkt_desc = pkt_desc->next;
>      }
>  
>      return nb_frames;
> @@ -560,9 +564,9 @@ static int get_nb_frames(AVFormatContext *ctx, StreamInfo 
> *stream, int len){
>  
>  /* flush the packet on stream stream_index */
>  static int flush_packet(AVFormatContext *ctx, int stream_index,
> -                         int64_t pts, int64_t dts, int64_t scr, int 
> trailer_size)
> +                        int64_t pts, int64_t dts, int64_t scr, int 
> trailer_size)
>  {
> -    MpegMuxContext *s = ctx->priv_data;
> +    MpegMuxContext *s  = ctx->priv_data;
>      StreamInfo *stream = ctx->streams[stream_index]->priv_data;
>      uint8_t *buf_ptr;
>      int size, payload_size, startcode, id, stuffing_size, i, header_len;
> @@ -571,7 +575,8 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>      int zero_trail_bytes = 0;
>      int pad_packet_bytes = 0;
>      int pes_flags;
> -    int general_pack = 0;  /*"general" pack without data specific to one 
> stream?*/
> +    /* "general" pack without data specific to one stream? */
> +    int general_pack = 0;
>      int nb_frames;
>  
>      id = stream->id;
> @@ -582,21 +587,21 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>  
>      if ((s->packet_number % s->pack_header_freq) == 0 || s->last_scr != scr) 
> {
>          /* output pack and systems header if needed */
> -        size = put_pack_header(ctx, buf_ptr, scr);
> -        buf_ptr += size;
> -        s->last_scr= scr;
> +        size        = put_pack_header(ctx, buf_ptr, scr);
> +        buf_ptr    += size;
> +        s->last_scr = scr;
>  
>          if (s->is_vcd) {
>              /* there is exactly one system header for each stream in a VCD 
> MPEG,
> -               One in the very first video packet and one in the very first
> -               audio packet (see VCD standard p. IV-7 and IV-8).*/
> +             * One in the very first video packet and one in the very first
> +             * audio packet (see VCD standard p. IV-7 and IV-8). */
>  
> -            if (stream->packet_number==0) {
> -                size = put_system_header(ctx, buf_ptr, id);
> +            if (stream->packet_number == 0) {
> +                size     = put_system_header(ctx, buf_ptr, id);
>                  buf_ptr += size;
>              }
>          } else if (s->is_dvd) {
> -            if (stream->align_iframe || s->packet_number == 0){
> +            if (stream->align_iframe || s->packet_number == 0) {
>                  int PES_bytes_to_fill = s->packet_size - size - 10;
>  
>                  if (pts != AV_NOPTS_VALUE) {
> @@ -607,20 +612,20 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>                  }
>  
>                  if (stream->bytes_to_iframe == 0 || s->packet_number == 0) {
> -                    size = put_system_header(ctx, buf_ptr, 0);
> +                    size     = put_system_header(ctx, buf_ptr, 0);
>                      buf_ptr += size;
> -                    size = buf_ptr - buffer;
> +                    size     = buf_ptr - buffer;
>                      avio_write(ctx->pb, buffer, size);
>  
>                      avio_wb32(ctx->pb, PRIVATE_STREAM_2);
> -                    avio_wb16(ctx->pb, 0x03d4);         // length
> -                    avio_w8(ctx->pb, 0x00);           // substream ID, 00=PCI
> +                    avio_wb16(ctx->pb, 0x03d4);     // length
> +                    avio_w8(ctx->pb, 0x00);         // substream ID, 00=PCI
>                      for (i = 0; i < 979; i++)
>                          avio_w8(ctx->pb, 0x00);
>  
>                      avio_wb32(ctx->pb, PRIVATE_STREAM_2);
> -                    avio_wb16(ctx->pb, 0x03fa);         // length
> -                    avio_w8(ctx->pb, 0x01);           // substream ID, 01=DSI
> +                    avio_wb16(ctx->pb, 0x03fa);     // length
> +                    avio_w8(ctx->pb, 0x01);         // substream ID, 01=DSI
>                      for (i = 0; i < 1017; i++)
>                          avio_w8(ctx->pb, 0x00);
>  
> @@ -628,18 +633,21 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>                      buf_ptr = buffer;
>                      s->packet_number++;
>                      stream->align_iframe = 0;
> -                    scr += s->packet_size*90000LL / (s->mux_rate*50LL); 
> //FIXME rounding and first few bytes of each packet
> -                    size = put_pack_header(ctx, buf_ptr, scr);
> -                    s->last_scr= scr;
> -                    buf_ptr += size;
> +                    // FIXME: rounding and first few bytes of each packet
> +                    scr        += s->packet_size * 90000LL /
> +                                  (s->mux_rate * 50LL);
> +                    size        = put_pack_header(ctx, buf_ptr, scr);
> +                    s->last_scr = scr;
> +                    buf_ptr    += size;
>                      /* GOP Start */
>                  } else if (stream->bytes_to_iframe < PES_bytes_to_fill) {
> -                    pad_packet_bytes = PES_bytes_to_fill - 
> stream->bytes_to_iframe;
> +                    pad_packet_bytes = PES_bytes_to_fill -
> +                                       stream->bytes_to_iframe;
>                  }
>              }
>          } else {
>              if ((s->packet_number % s->system_header_freq) == 0) {
> -                size = put_system_header(ctx, buf_ptr, 0);
> +                size     = put_system_header(ctx, buf_ptr, 0);
>                  buf_ptr += size;
>              }
>          }
> @@ -651,33 +659,33 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>  
>      if (s->is_vcd && (id & 0xe0) == AUDIO_ID)
>          /* The VCD standard demands that 20 zero bytes follow
> -           each audio pack (see standard p. IV-8).*/
> +         * each audio pack (see standard p. IV-8). */
>          zero_trail_bytes += 20;
>  
> -    if ((s->is_vcd && stream->packet_number==0)
> -        || (s->is_svcd && s->packet_number==0)) {
> +    if ((s->is_vcd && stream->packet_number == 0) ||
> +        (s->is_svcd && s->packet_number == 0)) {
>          /* for VCD the first pack of each stream contains only the pack 
> header,
> -           the system header and lots of padding (see VCD standard p. IV-6).
> -           In the case of an audio pack, 20 zero bytes are also added at
> -           the end.*/
> +         * the system header and lots of padding (see VCD standard p. IV-6).
> +         * In the case of an audio pack, 20 zero bytes are also added at
> +         * the end. */
>          /* For SVCD we fill the very first pack to increase compatibility 
> with
> -           some DVD players. Not mandated by the standard.*/
> +         * some DVD players. Not mandated by the standard. */
>          if (s->is_svcd)
> -            general_pack = 1;    /* the system header refers to both streams 
> and no stream data*/
> +            /* the system header refers to both streams and no stream data */
> +            general_pack = 1;
>          pad_packet_bytes = packet_size - zero_trail_bytes;
>      }
>  
>      packet_size -= pad_packet_bytes + zero_trail_bytes;
>  
>      if (packet_size > 0) {
> -
>          /* packet header size */
>          packet_size -= 6;
>  
>          /* packet header */
>          if (s->is_mpeg2) {
>              header_len = 3;
> -            if (stream->packet_number==0)
> +            if (stream->packet_number == 0)
>                  header_len += 3; /* PES extension */
>              header_len += 1; /* obligatory stuffing byte */
>          } else {
> @@ -695,7 +703,7 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>  
>          payload_size = packet_size - header_len;
>          if (id < 0xc0) {
> -            startcode = PRIVATE_STREAM_1;
> +            startcode     = PRIVATE_STREAM_1;
>              payload_size -= 1;
>              if (id >= 0x40) {
>                  payload_size -= 3;
> @@ -709,33 +717,33 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>          stuffing_size = payload_size - av_fifo_size(stream->fifo);
>  
>          // first byte does not fit -> reset pts/dts + stuffing
> -        if(payload_size <= trailer_size && pts != AV_NOPTS_VALUE){
> -            int timestamp_len=0;
> -            if(dts != pts)
> +        if (payload_size <= trailer_size && pts != AV_NOPTS_VALUE) {
> +            int timestamp_len = 0;
> +            if (dts != pts)
>                  timestamp_len += 5;
> -            if(pts != AV_NOPTS_VALUE)
> +            if (pts != AV_NOPTS_VALUE)
>                  timestamp_len += s->is_mpeg2 ? 5 : 4;
> -            pts=dts= AV_NOPTS_VALUE;
> +            pts         = dts = AV_NOPTS_VALUE;
>              header_len -= timestamp_len;
>              if (s->is_dvd && stream->align_iframe) {
>                  pad_packet_bytes += timestamp_len;
> -                packet_size  -= timestamp_len;
> +                packet_size      -= timestamp_len;
>              } else {
>                  payload_size += timestamp_len;
>              }
>              stuffing_size += timestamp_len;
> -            if(payload_size > trailer_size)
> +            if (payload_size > trailer_size)
>                  stuffing_size += payload_size - trailer_size;
>          }
>  
> -        if (pad_packet_bytes > 0 && pad_packet_bytes <= 7) { // can't use 
> padding, so use stuffing
> -            packet_size += pad_packet_bytes;
> +        // can't use padding, so use stuffing
> +        if (pad_packet_bytes > 0 && pad_packet_bytes <= 7) {
> +            packet_size  += pad_packet_bytes;
>              payload_size += pad_packet_bytes; // undo the previous adjustment
> -            if (stuffing_size < 0) {
> -                stuffing_size  = pad_packet_bytes;
> -            } else {
> +            if (stuffing_size < 0)
> +                stuffing_size = pad_packet_bytes;
> +            else
>                  stuffing_size += pad_packet_bytes;
> -            }
>              pad_packet_bytes = 0;
>          }
>  
> @@ -747,27 +755,27 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>                  stuffing_size += payload_size % stream->lpcm_align;
>          }
>  
> -        if (stuffing_size > 16) {    /*<=16 for MPEG-1, <=32 for MPEG-2*/
> +        if (stuffing_size > 16) {   /* <=16 for MPEG-1, <=32 for MPEG-2 */
>              pad_packet_bytes += stuffing_size;
>              packet_size      -= stuffing_size;
>              payload_size     -= stuffing_size;
> -            stuffing_size = 0;
> +            stuffing_size     = 0;
>          }
>  
> -        nb_frames= get_nb_frames(ctx, stream, payload_size - stuffing_size);
> +        nb_frames = get_nb_frames(ctx, stream, payload_size - stuffing_size);
>  
>          avio_wb32(ctx->pb, startcode);
>  
>          avio_wb16(ctx->pb, packet_size);
>  
>          if (!s->is_mpeg2)
> -            for(i=0;i<stuffing_size;i++)
> +            for (i = 0; i < stuffing_size; i++)
>                  avio_w8(ctx->pb, 0xff);
>  
>          if (s->is_mpeg2) {
>              avio_w8(ctx->pb, 0x80); /* mpeg2 id */
>  
> -            pes_flags=0;
> +            pes_flags = 0;
>  
>              if (pts != AV_NOPTS_VALUE) {
>                  pes_flags |= 0x80;
> @@ -776,30 +784,29 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>              }
>  
>              /* Both the MPEG-2 and the SVCD standards demand that the
> -               P-STD_buffer_size field be included in the first packet of
> -               every stream. (see SVCD standard p. 26 V.2.3.1 and V.2.3.2
> -               and MPEG-2 standard 2.7.7) */
> +             * P-STD_buffer_size field be included in the first packet of
> +             * every stream. (see SVCD standard p. 26 V.2.3.1 and V.2.3.2
> +             * and MPEG-2 standard 2.7.7) */
>              if (stream->packet_number == 0)
>                  pes_flags |= 0x01;
>  
>              avio_w8(ctx->pb, pes_flags); /* flags */
>              avio_w8(ctx->pb, header_len - 3 + stuffing_size);
>  
> -            if (pes_flags & 0x80)  /*write pts*/
> +            if (pes_flags & 0x80)  /* write pts */
>                  put_timestamp(ctx->pb, (pes_flags & 0x40) ? 0x03 : 0x02, 
> pts);
> -            if (pes_flags & 0x40)  /*write dts*/
> +            if (pes_flags & 0x40)  /* write dts */
>                  put_timestamp(ctx->pb, 0x01, dts);
>  
> -            if (pes_flags & 0x01) {  /*write pes extension*/
> +            if (pes_flags & 0x01) {  /* write pes extension */
>                  avio_w8(ctx->pb, 0x10); /* flags */
>  
>                  /* P-STD buffer info */
>                  if ((id & 0xe0) == AUDIO_ID)
> -                    avio_wb16(ctx->pb, 0x4000 | stream->max_buffer_size/ 
> 128);
> +                    avio_wb16(ctx->pb, 0x4000 | stream->max_buffer_size / 
> 128);
>                  else
> -                    avio_wb16(ctx->pb, 0x6000 | 
> stream->max_buffer_size/1024);
> +                    avio_wb16(ctx->pb, 0x6000 | stream->max_buffer_size / 
> 1024);
>              }
> -
>          } else {
>              if (pts != AV_NOPTS_VALUE) {
>                  if (dts != pts) {
> @@ -815,10 +822,10 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>  
>          if (s->is_mpeg2) {
>              /* special stuffing byte that is always written
> -               to prevent accidental generation of start codes. */
> +             * to prevent accidental generation of start codes. */
>              avio_w8(ctx->pb, 0xff);
>  
> -            for(i=0;i<stuffing_size;i++)
> +            for (i = 0; i < stuffing_size; i++)
>                  avio_w8(ctx->pb, 0xff);
>          }
>  
> @@ -834,23 +841,24 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>              } else if (id >= 0x40) {
>                  /* AC-3 */
>                  avio_w8(ctx->pb, nb_frames);
> -                avio_wb16(ctx->pb, trailer_size+1);
> +                avio_wb16(ctx->pb, trailer_size + 1);
>              }
>          }
>  
>          /* output data */
>          assert(payload_size - stuffing_size <= av_fifo_size(stream->fifo));
> -        av_fifo_generic_read(stream->fifo, ctx->pb, payload_size - 
> stuffing_size, &avio_write);
> +        av_fifo_generic_read(stream->fifo, ctx->pb,
> +                             payload_size - stuffing_size, &avio_write);
>          stream->bytes_to_iframe -= payload_size - stuffing_size;
> -    }else{
> -        payload_size=
> -        stuffing_size= 0;
> +    } else {
> +        payload_size  =
> +        stuffing_size = 0;
>      }
>  
>      if (pad_packet_bytes > 0)
> -        put_padding_packet(ctx,ctx->pb, pad_packet_bytes);
> +        put_padding_packet(ctx, ctx->pb, pad_packet_bytes);
>  
> -    for(i=0;i<zero_trail_bytes;i++)
> +    for (i = 0; i < zero_trail_bytes; i++)
>          avio_w8(ctx->pb, 0x00);
>  
>      avio_flush(ctx->pb);
> @@ -858,8 +866,8 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>      s->packet_number++;
>  
>      /* only increase the stream packet number if this pack actually contains
> -       something that is specific to this stream! I.e. a dedicated header
> -       or some data.*/
> +     * something that is specific to this stream! I.e. a dedicated header
> +     * or some data. */
>      if (!general_pack)
>          stream->packet_number++;
>  
> @@ -869,15 +877,15 @@ static int flush_packet(AVFormatContext *ctx, int 
> stream_index,
>  static void put_vcd_padding_sector(AVFormatContext *ctx)
>  {
>      /* There are two ways to do this padding: writing a sector/pack
> -       of 0 values, or writing an MPEG padding pack. Both seem to
> -       work with most decoders, BUT the VCD standard only allows a 0-sector
> -       (see standard p. IV-4, IV-5).
> -       So a 0-sector it is...*/
> +     * of 0 values, or writing an MPEG padding pack. Both seem to
> +     * work with most decoders, BUT the VCD standard only allows a 0-sector
> +     * (see standard p. IV-4, IV-5).
> +     * So a 0-sector it is... */
>  
>      MpegMuxContext *s = ctx->priv_data;
>      int i;
>  
> -    for(i=0;i<s->packet_size;i++)
> +    for (i = 0; i < s->packet_size; i++)
>          avio_w8(ctx->pb, 0);
>  
>      s->vcd_padding_bytes_written += s->packet_size;
> @@ -885,33 +893,32 @@ static void put_vcd_padding_sector(AVFormatContext *ctx)
>      avio_flush(ctx->pb);
>  
>      /* increasing the packet number is correct. The SCR of the following 
> packs
> -       is calculated from the packet_number and it has to include the padding
> -       sector (it represents the sector index, not the MPEG pack index)
> -       (see VCD standard p. IV-6)*/
> +     * is calculated from the packet_number and it has to include the padding
> +     * sector (it represents the sector index, not the MPEG pack index)
> +     * (see VCD standard p. IV-6) */
>      s->packet_number++;
>  }
>  
> -static int remove_decoded_packets(AVFormatContext *ctx, int64_t scr){
> -//    MpegMuxContext *s = ctx->priv_data;
> +static int remove_decoded_packets(AVFormatContext *ctx, int64_t scr)
> +{
>      int i;
>  
> -    for(i=0; i<ctx->nb_streams; i++){
> +    for (i = 0; i < ctx->nb_streams; i++) {
>          AVStream *st = ctx->streams[i];
>          StreamInfo *stream = st->priv_data;
>          PacketDesc *pkt_desc;
>  
> -        while((pkt_desc= stream->predecode_packet)
> -              && scr > pkt_desc->dts){ //FIXME > vs >=
> -            if(stream->buffer_index < pkt_desc->size ||
> -               stream->predecode_packet == stream->premux_packet){
> +        while ((pkt_desc = stream->predecode_packet) &&
> +               scr > pkt_desc->dts) { // FIXME: > vs >=
> +            if (stream->buffer_index < pkt_desc->size ||
> +                stream->predecode_packet == stream->premux_packet) {
>                  av_log(ctx, AV_LOG_ERROR,
>                         "buffer underflow i=%d bufi=%d size=%d\n",
>                         i, stream->buffer_index, pkt_desc->size);
>                  break;
>              }
> -            stream->buffer_index -= pkt_desc->size;
> -
> -            stream->predecode_packet= pkt_desc->next;
> +            stream->buffer_index    -= pkt_desc->size;
> +            stream->predecode_packet = pkt_desc->next;
>              av_freep(&pkt_desc);
>          }
>      }
> @@ -919,125 +926,133 @@ static int remove_decoded_packets(AVFormatContext 
> *ctx, int64_t scr){
>      return 0;
>  }
>  
> -static int output_packet(AVFormatContext *ctx, int flush){
> +static int output_packet(AVFormatContext *ctx, int flush)
> +{
>      MpegMuxContext *s = ctx->priv_data;
>      AVStream *st;
>      StreamInfo *stream;
> -    int i, avail_space=0, es_size, trailer_size;
> -    int best_i= -1;
> -    int best_score= INT_MIN;
> -    int ignore_constraints=0;
> -    int64_t scr= s->last_scr;
> +    int i, avail_space = 0, es_size, trailer_size;
> +    int best_i = -1;
> +    int best_score = INT_MIN;
> +    int ignore_constraints = 0;
> +    int64_t scr = s->last_scr;
>      PacketDesc *timestamp_packet;
> -    const int64_t max_delay= av_rescale(ctx->max_delay, 90000, AV_TIME_BASE);
> +    const int64_t max_delay = av_rescale(ctx->max_delay, 90000, 
> AV_TIME_BASE);
>  
>  retry:
> -    for(i=0; i<ctx->nb_streams; i++){
> +    for (i = 0; i < ctx->nb_streams; i++) {
>          AVStream *st = ctx->streams[i];
>          StreamInfo *stream = st->priv_data;
> -        const int avail_data=  av_fifo_size(stream->fifo);
> -        const int space= stream->max_buffer_size - stream->buffer_index;
> -        int rel_space= 1024*space / stream->max_buffer_size;
> -        PacketDesc *next_pkt= stream->premux_packet;
> +        const int avail_data = av_fifo_size(stream->fifo);
> +        const int space = stream->max_buffer_size - stream->buffer_index;
> +        int rel_space = 1024 * space / stream->max_buffer_size;
> +        PacketDesc *next_pkt = stream->premux_packet;
>  
>          /* for subtitle, a single PES packet must be generated,
> -           so we flush after every single subtitle packet */
> -        if(s->packet_size > avail_data && !flush
> -           && st->codec->codec_type != AVMEDIA_TYPE_SUBTITLE)
> +         * so we flush after every single subtitle packet */
> +        if (s->packet_size > avail_data && !flush
> +            && st->codec->codec_type != AVMEDIA_TYPE_SUBTITLE)
>              return 0;
> -        if(avail_data==0)
> +        if (avail_data == 0)
>              continue;
> -        assert(avail_data>0);
> +        assert(avail_data > 0);
>  
> -        if(space < s->packet_size && !ignore_constraints)
> +        if (space < s->packet_size && !ignore_constraints)
>              continue;
>  
> -        if(next_pkt && next_pkt->dts - scr > max_delay)
> +        if (next_pkt && next_pkt->dts - scr > max_delay)
>              continue;
>  
> -        if(rel_space > best_score){
> -            best_score= rel_space;
> -            best_i = i;
> -            avail_space= space;
> +        if (rel_space > best_score) {
> +            best_score  = rel_space;
> +            best_i      = i;
> +            avail_space = space;
>          }
>      }
>  
> -    if(best_i < 0){
> -        int64_t best_dts= INT64_MAX;
> +    if (best_i < 0) {
> +        int64_t best_dts = INT64_MAX;
>  
> -        for(i=0; i<ctx->nb_streams; i++){
> +        for (i = 0; i < ctx->nb_streams; i++) {
>              AVStream *st = ctx->streams[i];
>              StreamInfo *stream = st->priv_data;
> -            PacketDesc *pkt_desc= stream->predecode_packet;
> -            if(pkt_desc && pkt_desc->dts < best_dts)
> -                best_dts= pkt_desc->dts;
> +            PacketDesc *pkt_desc = stream->predecode_packet;
> +            if (pkt_desc && pkt_desc->dts < best_dts)
> +                best_dts = pkt_desc->dts;
>          }
>  
>          av_dlog(ctx, "bumping scr, scr:%f, dts:%f\n",
>                  scr / 90000.0, best_dts / 90000.0);
> -        if(best_dts == INT64_MAX)
> +        if (best_dts == INT64_MAX)
>              return 0;
>  
> -        if(scr >= best_dts+1 && !ignore_constraints){
> -            av_log(ctx, AV_LOG_ERROR, "packet too large, ignoring buffer 
> limits to mux it\n");
> -            ignore_constraints= 1;
> +        if (scr >= best_dts + 1 && !ignore_constraints) {
> +            av_log(ctx, AV_LOG_ERROR,
> +                   "packet too large, ignoring buffer limits to mux it\n");
> +            ignore_constraints = 1;
>          }
> -        scr= FFMAX(best_dts+1, scr);
> -        if(remove_decoded_packets(ctx, scr) < 0)
> +        scr = FFMAX(best_dts + 1, scr);
> +        if (remove_decoded_packets(ctx, scr) < 0)
>              return -1;
>          goto retry;
>      }
>  
>      assert(best_i >= 0);
>  
> -    st = ctx->streams[best_i];
> +    st     = ctx->streams[best_i];
>      stream = st->priv_data;
>  
>      assert(av_fifo_size(stream->fifo) > 0);
>  
>      assert(avail_space >= s->packet_size || ignore_constraints);
>  
> -    timestamp_packet= stream->premux_packet;
> -    if(timestamp_packet->unwritten_size == timestamp_packet->size){
> -        trailer_size= 0;
> -    }else{
> -        trailer_size= timestamp_packet->unwritten_size;
> -        timestamp_packet= timestamp_packet->next;
> +    timestamp_packet = stream->premux_packet;
> +    if (timestamp_packet->unwritten_size == timestamp_packet->size) {
> +        trailer_size = 0;
> +    } else {
> +        trailer_size     = timestamp_packet->unwritten_size;
> +        timestamp_packet = timestamp_packet->next;
>      }
>  
> -    if(timestamp_packet){
> +    if (timestamp_packet) {
>          av_dlog(ctx, "dts:%f pts:%f scr:%f stream:%d\n",
>                  timestamp_packet->dts / 90000.0,
>                  timestamp_packet->pts / 90000.0,
>                  scr / 90000.0, best_i);
> -        es_size= flush_packet(ctx, best_i, timestamp_packet->pts, 
> timestamp_packet->dts, scr, trailer_size);
> -    }else{
> +        es_size = flush_packet(ctx, best_i, timestamp_packet->pts,
> +                               timestamp_packet->dts, scr, trailer_size);
> +    } else {
>          assert(av_fifo_size(stream->fifo) == trailer_size);
> -        es_size= flush_packet(ctx, best_i, AV_NOPTS_VALUE, AV_NOPTS_VALUE, 
> scr, trailer_size);
> +        es_size = flush_packet(ctx, best_i, AV_NOPTS_VALUE, AV_NOPTS_VALUE, 
> scr,
> +                               trailer_size);
>      }
>  
>      if (s->is_vcd) {
>          /* Write one or more padding sectors, if necessary, to reach
> -           the constant overall bitrate.*/
> +         * the constant overall bitrate. */
>          int vcd_pad_bytes;
>  
> -        while((vcd_pad_bytes = 
> get_vcd_padding_size(ctx,stream->premux_packet->pts) ) >= s->packet_size){ 
> //FIXME pts cannot be correct here
> +        // FIXME: pts cannot be correct here
> +        while ((vcd_pad_bytes = get_vcd_padding_size(ctx, 
> stream->premux_packet->pts)) >= s->packet_size) {
>              put_vcd_padding_sector(ctx);
> -            s->last_scr += s->packet_size*90000LL / (s->mux_rate*50LL); 
> //FIXME rounding and first few bytes of each packet
> +            // FIXME: rounding and first few bytes of each packet
> +            s->last_scr += s->packet_size * 90000LL / (s->mux_rate * 50LL);
>          }
>      }
>  
>      stream->buffer_index += es_size;
> -    s->last_scr += s->packet_size*90000LL / (s->mux_rate*50LL); //FIXME 
> rounding and first few bytes of each packet
> +    // FIXME: rounding and first few bytes of each packet
> +    s->last_scr          += s->packet_size * 90000LL / (s->mux_rate * 50LL);
>  
> -    while(stream->premux_packet && stream->premux_packet->unwritten_size <= 
> es_size){
> -        es_size -= stream->premux_packet->unwritten_size;
> -        stream->premux_packet= stream->premux_packet->next;
> +    while (stream->premux_packet &&
> +           stream->premux_packet->unwritten_size <= es_size) {
> +        es_size              -= stream->premux_packet->unwritten_size;
> +        stream->premux_packet = stream->premux_packet->next;
>      }
> -    if(es_size)
> +    if (es_size)
>          stream->premux_packet->unwritten_size -= es_size;
>  
> -    if(remove_decoded_packets(ctx, s->last_scr) < 0)
> +    if (remove_decoded_packets(ctx, s->last_scr) < 0)
>          return -1;
>  
>      return 1;
> @@ -1045,27 +1060,29 @@ retry:
>  
>  static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt)
>  {
> +    int stream_index = pkt->stream_index;
> +    int size         = pkt->size;
> +    uint8_t *buf     = pkt->data;
>      MpegMuxContext *s = ctx->priv_data;
> -    int stream_index= pkt->stream_index;
> -    int size= pkt->size;
> -    uint8_t *buf= pkt->data;
> -    AVStream *st = ctx->streams[stream_index];
> +    AVStream *st      = ctx->streams[stream_index];
>      StreamInfo *stream = st->priv_data;
>      int64_t pts, dts;
>      PacketDesc *pkt_desc;
>      int preload;
> -    const int is_iframe = st->codec->codec_type == AVMEDIA_TYPE_VIDEO && 
> (pkt->flags & AV_PKT_FLAG_KEY);
> +    const int is_iframe = st->codec->codec_type == AVMEDIA_TYPE_VIDEO &&
> +                          (pkt->flags & AV_PKT_FLAG_KEY);
>  
>      preload = av_rescale(s->preload, 90000, AV_TIME_BASE);
>  
> -    pts= pkt->pts;
> -    dts= pkt->dts;
> +    pts = pkt->pts;
> +    dts = pkt->dts;
>  
> -    if(pts != AV_NOPTS_VALUE) pts += 2*preload;
> -    if(dts != AV_NOPTS_VALUE){
> -        if(!s->last_scr)
> -            s->last_scr= dts + preload;
> -        dts += 2*preload;
> +    if (pts != AV_NOPTS_VALUE)
> +        pts += 2 * preload;
> +    if (dts != AV_NOPTS_VALUE) {
> +        if (!s->last_scr)
> +            s->last_scr = dts + preload;
> +        dts += 2 * preload;
>      }
>  
>      av_dlog(ctx, "dts:%f pts:%f flags:%d stream:%d nopts:%d\n",
> @@ -1073,57 +1090,59 @@ static int mpeg_mux_write_packet(AVFormatContext 
> *ctx, AVPacket *pkt)
>              pkt->stream_index, pts != AV_NOPTS_VALUE);
>      if (!stream->premux_packet)
>          stream->next_packet = &stream->premux_packet;
> -    *stream->next_packet=
> -    pkt_desc= av_mallocz(sizeof(PacketDesc));
> -    pkt_desc->pts= pts;
> -    pkt_desc->dts= dts;
> -    pkt_desc->unwritten_size=
> -    pkt_desc->size= size;
> -    if(!stream->predecode_packet)
> -        stream->predecode_packet= pkt_desc;
> -    stream->next_packet= &pkt_desc->next;
> +    *stream->next_packet     =
> +    pkt_desc                 = av_mallocz(sizeof(PacketDesc));
> +    pkt_desc->pts            = pts;
> +    pkt_desc->dts            = dts;
> +    pkt_desc->unwritten_size =
> +    pkt_desc->size           = size;
> +    if (!stream->predecode_packet)
> +        stream->predecode_packet = pkt_desc;
> +    stream->next_packet = &pkt_desc->next;
>  
>      if (av_fifo_realloc2(stream->fifo, av_fifo_size(stream->fifo) + size) < 
> 0)
>          return -1;
>  
> -    if (s->is_dvd){
> -        if (is_iframe && (s->packet_number == 0 || (pts - 
> stream->vobu_start_pts >= 36000))) { // min VOBU length 0.4 seconds (mpucoder)
> +    if (s->is_dvd) {
> +        // min VOBU length 0.4 seconds (mpucoder)
> +        if (is_iframe &&
> +            (s->packet_number == 0 ||
> +             (pts - stream->vobu_start_pts >= 36000))) {
>              stream->bytes_to_iframe = av_fifo_size(stream->fifo);
> -            stream->align_iframe = 1;
> -            stream->vobu_start_pts = pts;
> +            stream->align_iframe    = 1;
> +            stream->vobu_start_pts  = pts;
>          }
>      }
>  
>      av_fifo_generic_write(stream->fifo, buf, size, NULL);
>  
> -    for(;;){
> -        int ret= output_packet(ctx, 0);
> -        if(ret<=0)
> +    for (;;) {
> +        int ret = output_packet(ctx, 0);
> +        if (ret <= 0)
>              return ret;
>      }
>  }
>  
>  static int mpeg_mux_end(AVFormatContext *ctx)
>  {
> -//    MpegMuxContext *s = ctx->priv_data;
>      StreamInfo *stream;
>      int i;
>  
> -    for(;;){
> -        int ret= output_packet(ctx, 1);
> -        if(ret<0)
> +    for (;;) {
> +        int ret = output_packet(ctx, 1);
> +        if (ret < 0)
>              return ret;
> -        else if(ret==0)
> +        else if (ret == 0)
>              break;
>      }
>  
>      /* End header according to MPEG1 systems standard. We do not write
> -       it as it is usually not needed by decoders and because it
> -       complicates MPEG stream concatenation. */
> -    //avio_wb32(ctx->pb, ISO_11172_END_CODE);
> -    //avio_flush(ctx->pb);
> +     * it as it is usually not needed by decoders and because it
> +     * complicates MPEG stream concatenation. */
> +    // avio_wb32(ctx->pb, ISO_11172_END_CODE);
> +    // avio_flush(ctx->pb);
>  
> -    for(i=0;i<ctx->nb_streams;i++) {
> +    for (i = 0; i < ctx->nb_streams; i++) {
>          stream = ctx->streams[i]->priv_data;
>  
>          assert(av_fifo_size(stream->fifo) == 0);
> @@ -1135,17 +1154,17 @@ static int mpeg_mux_end(AVFormatContext *ctx)
>  #define OFFSET(x) offsetof(MpegMuxContext, x)
>  #define E AV_OPT_FLAG_ENCODING_PARAM
>  static const AVOption options[] = {
> -    { "muxrate", NULL, OFFSET(mux_rate), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 
> INT_MAX, E },
> -    { "preload", "Initial demux-decode delay in microseconds.", 
> OFFSET(preload),  AV_OPT_TYPE_INT, {.i64 = 500000}, 0, INT_MAX, E},
> +    { "muxrate", NULL,                                          
> OFFSET(mux_rate), AV_OPT_TYPE_INT, { .i64 =      0 }, 0, INT_MAX, E },
> +    { "preload", "Initial demux-decode delay in microseconds.", 
> OFFSET(preload),  AV_OPT_TYPE_INT, { .i64 = 500000 }, 0, INT_MAX, E },
>      { NULL },
>  };
>  
> -#define MPEGENC_CLASS(flavor)\
> -static const AVClass flavor ## _class = {\
> -    .class_name = #flavor " muxer",\
> -    .item_name  = av_default_item_name,\
> -    .version    = LIBAVUTIL_VERSION_INT,\
> -    .option     = options,\
> +#define MPEGENC_CLASS(flavor)                   \
> +static const AVClass flavor ## _class = {       \
> +    .class_name = #flavor " muxer",             \
> +    .item_name  = av_default_item_name,         \
> +    .version    = LIBAVUTIL_VERSION_INT,        \
> +    .option     = options,                      \
>  };
>  
>  #if CONFIG_MPEG1SYSTEM_MUXER
> @@ -1164,6 +1183,7 @@ AVOutputFormat ff_mpeg1system_muxer = {
>      .priv_class        = &mpeg_class,
>  };
>  #endif
> +
>  #if CONFIG_MPEG1VCD_MUXER
>  MPEGENC_CLASS(vcd)
>  AVOutputFormat ff_mpeg1vcd_muxer = {
> @@ -1179,6 +1199,7 @@ AVOutputFormat ff_mpeg1vcd_muxer = {
>      .priv_class        = &vcd_class,
>  };
>  #endif
> +
>  #if CONFIG_MPEG2VOB_MUXER
>  MPEGENC_CLASS(vob)
>  AVOutputFormat ff_mpeg2vob_muxer = {
> 

Fine for me

lu
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to