diff mbox series

[FFmpeg-devel,2/5] cbs_sei: add ff_cbs_sei_delete_message helper

Message ID 8164f307e2a4c93dc7ad0dbcfb33d493bbede6b3.1675471315.git.ffmpegagent@gmail.com
State New
Headers show
Series Bitstream filter support for A/53 Closed Captions | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Aman Karmani Feb. 4, 2023, 12:41 a.m. UTC
From: Eric Lindvall <eric@5stops.com>

Signed-off-by: Aman Karmani <aman@tmm1.net>
---
 libavcodec/cbs_sei.c | 25 +++++++++++++++++++++++++
 libavcodec/cbs_sei.h |  7 +++++++
 2 files changed, 32 insertions(+)
diff mbox series

Patch

diff --git a/libavcodec/cbs_sei.c b/libavcodec/cbs_sei.c
index 50a513f592..1ea2bbc109 100644
--- a/libavcodec/cbs_sei.c
+++ b/libavcodec/cbs_sei.c
@@ -347,6 +347,31 @@  static void cbs_sei_delete_message(SEIRawMessageList *list,
     }
 }
 
+int ff_cbs_sei_delete_message(CodedBitstreamContext *ctx,
+                               CodedBitstreamFragment *au,
+                               SEIRawMessage *message)
+{
+    int err, i, j;
+
+    for (i = 0; i < au->nb_units; i++) {
+        CodedBitstreamUnit *unit = &au->units[i];
+        SEIRawMessageList *list;
+
+        err = cbs_sei_get_message_list(ctx, unit, &list);
+        if (err < 0)
+            continue;
+
+        for (j = 0; j < list->nb_messages; j++) {
+            if (message == &list->messages[j]) {
+                cbs_sei_delete_message(list, j);
+                return 0;
+            }
+        }
+    }
+
+    return AVERROR(ENOENT);
+}
+
 void ff_cbs_sei_delete_message_type(CodedBitstreamContext *ctx,
                                     CodedBitstreamFragment *au,
                                     uint32_t payload_type)
diff --git a/libavcodec/cbs_sei.h b/libavcodec/cbs_sei.h
index 1c327a4689..96bd116a53 100644
--- a/libavcodec/cbs_sei.h
+++ b/libavcodec/cbs_sei.h
@@ -202,4 +202,11 @@  void ff_cbs_sei_delete_message_type(CodedBitstreamContext *ctx,
                                     CodedBitstreamFragment *au,
                                     uint32_t payload_type);
 
+/**
+ * Delete a message from the access unit.
+ */
+int ff_cbs_sei_delete_message(CodedBitstreamContext *ctx,
+                              CodedBitstreamFragment *au,
+                              SEIRawMessage *message);
+
 #endif /* AVCODEC_CBS_SEI_H */