[FFmpeg-devel] [PATCH] smpte436m_to_eia608 and eia608_to_smpte436m: fix memory leaks -- forgot to free input av_packet (PR #20182)

Jacob Lifshay code at ffmpeg.org
Fri Aug 8 20:57:54 EEST 2025


PR #20182 opened by Jacob Lifshay (programmerjake)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20182
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20182.patch

Fix some memory leaks. Also adds a test to actually test smpte436m_to_eia608 which I forgot to add in #20024

reported in https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20024#issuecomment-2405

Reported-by: @sean_mcg


From 6d57c2750d2231ce0576177752fc2b64178e6113 Mon Sep 17 00:00:00 2001
From: Jacob Lifshay <programmerjake at gmail.com>
Date: Fri, 8 Aug 2025 10:31:41 -0700
Subject: [PATCH 1/3] lavc/bsf/eia608_to_smpte436m: fix memory leak -- forgot
 to free input av_packet

reported in https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20024#issuecomment-2405

Reported-by: Sean McGovern <gseanmcg at gmail.com>
Signed-off-by: Jacob Lifshay <programmerjake at gmail.com>
---
 libavcodec/bsf/eia608_to_smpte436m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/bsf/eia608_to_smpte436m.c b/libavcodec/bsf/eia608_to_smpte436m.c
index 769731341f..096acb596c 100644
--- a/libavcodec/bsf/eia608_to_smpte436m.c
+++ b/libavcodec/bsf/eia608_to_smpte436m.c
@@ -236,7 +236,7 @@ static int ff_eia608_to_smpte436m_filter(AVBSFContext *ctx, AVPacket *out)
     if (ret < 0)
         goto fail;
 
-    return 0;
+    ret = 0;
 
 fail:
     if (ret < 0)
-- 
2.49.1


From 224f82bd8943818797b62dbd8a1a7f771195bc67 Mon Sep 17 00:00:00 2001
From: Jacob Lifshay <programmerjake at gmail.com>
Date: Fri, 8 Aug 2025 10:33:34 -0700
Subject: [PATCH 2/3] lavc/bsf/smpte436m_to_eia608: fix memory leak -- forgot
 to free input av_packet

Signed-off-by: Jacob Lifshay <programmerjake at gmail.com>
---
 libavcodec/bsf/smpte436m_to_eia608.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libavcodec/bsf/smpte436m_to_eia608.c b/libavcodec/bsf/smpte436m_to_eia608.c
index 83a220cd1f..529ae88794 100644
--- a/libavcodec/bsf/smpte436m_to_eia608.c
+++ b/libavcodec/bsf/smpte436m_to_eia608.c
@@ -68,6 +68,8 @@ static int ff_smpte436m_to_eia608_filter(AVBSFContext *ctx, AVPacket *out)
         // verified it won't fail by running it above
         av_smpte_291m_anc_8bit_extract_cta_708(&anc, out->data, ctx);
 
+        av_packet_free(&in);
+
         return 0;
     }
     if (ret != AVERROR_EOF)
-- 
2.49.1


From adfc89ce7b2b2973d12079d90e6c1ec876666cb4 Mon Sep 17 00:00:00 2001
From: Jacob Lifshay <programmerjake at gmail.com>
Date: Fri, 8 Aug 2025 10:49:33 -0700
Subject: [PATCH 3/3] tests/fate/subtitles: add test for smpte436m_to_eia608
 bsf

Signed-off-by: Jacob Lifshay <programmerjake at gmail.com>
---
 tests/fate/subtitles.mak                   |  4 ++
 tests/ref/fate/sub-mcc-remux-eia608-recode | 76 ++++++++++++++++++++++
 2 files changed, 80 insertions(+)
 create mode 100644 tests/ref/fate/sub-mcc-remux-eia608-recode

diff --git a/tests/fate/subtitles.mak b/tests/fate/subtitles.mak
index 217a63791c..87f686d1c9 100644
--- a/tests/fate/subtitles.mak
+++ b/tests/fate/subtitles.mak
@@ -143,6 +143,10 @@ FATE_SUBTITLES-$(call DEMMUX, MCC, MCC, SMPTE436M_TO_EIA608_BSF EIA608_TO_SMPTE4
 fate-sub-mcc-remux-eia608: CMD = fmtstdout mcc -f mcc -i tests/ref/fate/sub-mcc-remux -map 0:s -c copy -override_time_code_rate ntsc -creation_time "1970-01-01T00:00:00"
 fate-sub-mcc-remux-eia608: CMP = rawdiff
 
+FATE_SUBTITLES-$(call DEMMUX, MCC, MCC, SMPTE436M_TO_EIA608_BSF EIA608_TO_SMPTE436M_BSF) += fate-sub-mcc-remux-eia608-recode
+fate-sub-mcc-remux-eia608-recode: CMD = fmtstdout mcc -eia608_extract 0 -f mcc -i tests/ref/fate/sub-mcc-remux -map 0:d -c copy -bsf smpte436m_to_eia608 -override_time_code_rate ntsc -creation_time "1970-01-01T00:00:00"
+fate-sub-mcc-remux-eia608-recode: CMP = rawdiff
+
 FATE_SUBTITLES-$(call DEMMUX, MCC, MCC) += fate-sub-mcc-remux
 fate-sub-mcc-remux: CMD = fmtstdout mcc -eia608_extract 0 -f mcc -i tests/ref/fate/sub-mcc-remux -map 0:d -c copy -override_time_code_rate ntsc -creation_time "1970-01-01T00:00:00"
 fate-sub-mcc-remux: CMP = rawdiff
diff --git a/tests/ref/fate/sub-mcc-remux-eia608-recode b/tests/ref/fate/sub-mcc-remux-eia608-recode
new file mode 100644
index 0000000000..01e8c37b2c
--- /dev/null
+++ b/tests/ref/fate/sub-mcc-remux-eia608-recode
@@ -0,0 +1,76 @@
+File Format=MacCaption_MCC V2.0
+
+///////////////////////////////////////////////////////////////////////////////////
+// Computer Prompting and Captioning Company
+// Ancillary Data Packet Transfer File
+//
+// Permission to generate this format is granted provided that
+//   1. This ANC Transfer file format is used on an as-is basis and no warranty is given, and
+//   2. This entire descriptive information text is included in a generated .mcc file.
+//
+// General file format:
+//   HH:MM:SS:FF(tab)[Hexadecimal ANC data in groups of 2 characters]
+//     Hexadecimal data starts with the Ancillary Data Packet DID (Data ID defined in S291M)
+//       and concludes with the Check Sum following the User Data Words.
+//     Each time code line must contain at most one complete ancillary data packet.
+//     To transfer additional ANC Data successive lines may contain identical time code.
+//     Time Code Rate=[24, 25, 30, 30DF, 50, 60, 60DF]
+//
+//   ANC data bytes may be represented by one ASCII character according to the following schema:
+//     G  FAh 00h 00h
+//     H  2 x (FAh 00h 00h)
+//     I  3 x (FAh 00h 00h)
+//     J  4 x (FAh 00h 00h)
+//     K  5 x (FAh 00h 00h)
+//     L  6 x (FAh 00h 00h)
+//     M  7 x (FAh 00h 00h)
+//     N  8 x (FAh 00h 00h)
+//     O  9 x (FAh 00h 00h)
+//     P  FBh 80h 80h
+//     Q  FCh 80h 80h
+//     R  FDh 80h 80h
+//     S  96h 69h
+//     T  61h 01h
+//     U  E1h 00h 00h 00h
+//     Z  00h
+//
+///////////////////////////////////////////////////////////////////////////////////
+
+UUID=0087C4F6-A6B4-5469-8C8E-BBF44950401D
+Creation Program=FFmpeg
+Creation Date=Thursday, January 1, 1970
+Creation Time=00:00:00
+Time Code Rate=30DF
+
+00:00:58:29	T49S494F43ZZ72F4QROO74ZZBFAB
+00:00:59:00	T49S494F43Z0172F4QROO74Z01BDAB
+00:00:59:01	T49S494F43Z0272F4QROO74Z02BBAB
+00:00:59:02	T49S494F43Z0372F4QROO74Z03B9AB
+00:00:59:03	T49S494F43Z0472F4QROO74Z04B7AB
+00:00:59:04	T49S494F43Z0572F4QROO74Z05B5AB
+00:00:59:05	T49S494F43Z0672F4QROO74Z06B3AB
+00:00:59:06	T49S494F43Z0772F4QROO74Z07B1AB
+00:00:59:07	T49S494F43Z0872F4QROO74Z08AFAB
+00:00:59:08	T49S494F43Z0972F4QROO74Z09ADAB
+00:00:59:09	T49S494F43Z0A72F4QROO74Z0AABAB
+00:00:59:10	T49S494F43Z0B72F4QROO74Z0BA9AB
+00:00:59:11	T49S494F43Z0C72F4QROO74Z0CA7AB
+00:00:59:12	T49S494F43Z0D72F4QROO74Z0DA5AB
+00:00:59:13	T49S494F43Z0E72F4QROO74Z0EA3AB
+00:00:59:14	T49S494F43Z0F72F4QROO74Z0FA1AB
+00:00:59:15	T49S494F43Z1072F4QROO74Z109FAB
+00:00:59:16	T49S494F43Z1172F4QROO74Z119DAB
+00:00:59:17	T49S494F43Z1272F4QROO74Z129BAB
+00:00:59:18	T49S494F43Z1372F4QROO74Z1399AB
+00:00:59:19	T49S494F43Z1472F4QROO74Z1497AB
+00:00:59:20	T49S494F43Z1572F4QROO74Z1595AB
+00:00:59:21	T49S494F43Z1672F4QROO74Z1693AB
+00:00:59:22	T49S494F43Z1772F4QROO74Z1791AB
+00:00:59:23	T49S494F43Z1872F4QROO74Z188FAB
+00:00:59:24	T49S494F43Z1972F4QROO74Z198DAB
+00:00:59:25	T49S494F43Z1A72F4QROO74Z1A8BAB
+00:00:59:26	T49S494F43Z1B72F4QROO74Z1B89AB
+00:00:59:27	T49S494F43Z1C72F4QROO74Z1C87AB
+00:00:59:28	T49S494F43Z1D72F4QROO74Z1D85AB
+00:00:59:29	T49S494F43Z1E72F4QROO74Z1E83AB
+00:01:00:02	T49S494F43Z1F72F4QROO74Z1F81AB
-- 
2.49.1



More information about the ffmpeg-devel mailing list