[FFmpeg-devel] [PATCH 16/27] avformat/mpegenc: Simplify writing padding/stuffing

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Thu Sep 23 18:28:51 EEST 2021


Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
 libavformat/mpegenc.c | 26 +++++++++-----------------
 1 file changed, 9 insertions(+), 17 deletions(-)

diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c
index 6aed527d50..b1d8bf9c38 100644
--- a/libavformat/mpegenc.c
+++ b/libavformat/mpegenc.c
@@ -30,6 +30,7 @@
 #include "libavcodec/put_bits.h"
 
 #include "avformat.h"
+#include "avio_internal.h"
 #include "internal.h"
 #include "mpeg.h"
 
@@ -598,7 +599,6 @@ static void put_padding_packet(AVFormatContext *ctx, AVIOContext *pb,
                                int packet_bytes)
 {
     MpegMuxContext *s = ctx->priv_data;
-    int i;
 
     avio_wb32(pb, PADDING_STREAM);
     avio_wb16(pb, packet_bytes - 6);
@@ -608,8 +608,7 @@ static void put_padding_packet(AVFormatContext *ctx, AVIOContext *pb,
     } else
         packet_bytes -= 6;
 
-    for (i = 0; i < packet_bytes; i++)
-        avio_w8(pb, 0xff);
+    ffio_fill(pb, 0xff, packet_bytes);
 }
 
 static int get_nb_frames(AVFormatContext *ctx, StreamInfo *stream, int len)
@@ -634,7 +633,7 @@ static int flush_packet(AVFormatContext *ctx, int stream_index,
     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;
+    int size, payload_size, startcode, id, stuffing_size, header_len;
     int packet_size;
     uint8_t buffer[128];
     int zero_trail_bytes = 0;
@@ -685,14 +684,12 @@ static int flush_packet(AVFormatContext *ctx, int stream_index,
                     avio_wb32(ctx->pb, PRIVATE_STREAM_2);
                     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);
+                    ffio_fill(ctx->pb, 0x00, 979);
 
                     avio_wb32(ctx->pb, PRIVATE_STREAM_2);
                     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);
+                    ffio_fill(ctx->pb, 0x00, 1017);
 
                     memset(buffer, 0, 128);
                     buf_ptr = buffer;
@@ -835,8 +832,7 @@ static int flush_packet(AVFormatContext *ctx, int stream_index,
         avio_wb16(ctx->pb, packet_size);
 
         if (!s->is_mpeg2)
-            for (i = 0; i < stuffing_size; i++)
-                avio_w8(ctx->pb, 0xff);
+            ffio_fill(ctx->pb, 0xff, stuffing_size);
 
         if (s->is_mpeg2) {
             avio_w8(ctx->pb, 0x80); /* mpeg2 id */
@@ -891,8 +887,7 @@ static int flush_packet(AVFormatContext *ctx, int stream_index,
              * to prevent accidental generation of start codes. */
             avio_w8(ctx->pb, 0xff);
 
-            for (i = 0; i < stuffing_size; i++)
-                avio_w8(ctx->pb, 0xff);
+            ffio_fill(ctx->pb, 0xff, stuffing_size);
         }
 
         if (startcode == PRIVATE_STREAM_1) {
@@ -925,8 +920,7 @@ static int flush_packet(AVFormatContext *ctx, int stream_index,
     if (pad_packet_bytes > 0)
         put_padding_packet(ctx, ctx->pb, pad_packet_bytes);
 
-    for (i = 0; i < zero_trail_bytes; i++)
-        avio_w8(ctx->pb, 0x00);
+    ffio_fill(ctx->pb, 0x00, zero_trail_bytes);
 
     avio_write_marker(ctx->pb, AV_NOPTS_VALUE, AVIO_DATA_MARKER_FLUSH_POINT);
 
@@ -950,10 +944,8 @@ static void put_vcd_padding_sector(AVFormatContext *ctx)
      * So a 0-sector it is... */
 
     MpegMuxContext *s = ctx->priv_data;
-    int i;
 
-    for (i = 0; i < s->packet_size; i++)
-        avio_w8(ctx->pb, 0);
+    ffio_fill(ctx->pb, 0, s->packet_size);
 
     s->vcd_padding_bytes_written += s->packet_size;
 
-- 
2.30.2



More information about the ffmpeg-devel mailing list