]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/filter_units_bsf.c
avformat: Remove deprecated av_demuxer_open()
[ffmpeg] / libavcodec / filter_units_bsf.c
index f3691a57551777e9d902e3394f94b0f854632402..354594ac50931ecf31043a779fbd0ff1d31fd24d 100644 (file)
@@ -22,6 +22,7 @@
 #include "libavutil/opt.h"
 
 #include "bsf.h"
+#include "bsf_internal.h"
 #include "cbs.h"
 
 
@@ -117,16 +118,14 @@ static int filter_units_filter(AVBSFContext *bsf, AVPacket *pkt)
         goto fail;
     }
 
-    for (i = 0; i < frag->nb_units; i++) {
+    for (i = frag->nb_units - 1; i >= 0; i--) {
         for (j = 0; j < ctx->nb_types; j++) {
             if (frag->units[i].type == ctx->type_list[j])
                 break;
         }
         if (ctx->mode == REMOVE ? j <  ctx->nb_types
-                                : j >= ctx->nb_types) {
-            ff_cbs_delete_unit(ctx->cbc, frag, i);
-            --i;
-        }
+                                : j >= ctx->nb_types)
+            ff_cbs_delete_unit(frag, i);
     }
 
     if (frag->nb_units == 0) {
@@ -144,7 +143,7 @@ static int filter_units_filter(AVBSFContext *bsf, AVPacket *pkt)
 fail:
     if (err < 0)
         av_packet_unref(pkt);
-    ff_cbs_fragment_reset(ctx->cbc, frag);
+    ff_cbs_fragment_reset(frag);
 
     return err;
 }
@@ -200,7 +199,7 @@ static int filter_units_init(AVBSFContext *bsf)
                 av_log(bsf, AV_LOG_ERROR, "Failed to write extradata.\n");
         }
 
-        ff_cbs_fragment_reset(ctx->cbc, frag);
+        ff_cbs_fragment_reset(frag);
     }
 
     return err;
@@ -212,7 +211,7 @@ static void filter_units_close(AVBSFContext *bsf)
 
     av_freep(&ctx->type_list);
 
-    ff_cbs_fragment_free(ctx->cbc, &ctx->fragment);
+    ff_cbs_fragment_free(&ctx->fragment);
     ff_cbs_close(&ctx->cbc);
 }