#include "libavutil/opt.h"
#include "bsf.h"
+#include "bsf_internal.h"
#include "cbs.h"
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) {
fail:
if (err < 0)
av_packet_unref(pkt);
- ff_cbs_fragment_reset(ctx->cbc, frag);
+ ff_cbs_fragment_reset(frag);
return err;
}
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;
av_freep(&ctx->type_list);
- ff_cbs_fragment_free(ctx->cbc, &ctx->fragment);
+ ff_cbs_fragment_free(&ctx->fragment);
ff_cbs_close(&ctx->cbc);
}