diff mbox series

[FFmpeg-devel] avcodec/libmp3lame: make it possible to set copyright/original flags

Message ID da920422-1e2d-45c2-8902-629a9162896d@app.fastmail.com
State New
Headers show
Series [FFmpeg-devel] avcodec/libmp3lame: make it possible to set copyright/original flags | expand

Checks

Context Check Description
yinshiyou/configure_loongarch64 warning Failed to apply patch
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Lukáš Lalinský May 9, 2023, 8:18 a.m. UTC
I'd like the control the copyright and original bits in output MP3 frames. I've added two options to the libmp3lame encoder, the defaults are copying the defaults from LAME (original=1, copyright=0). Patch attached.

Regards,

Lukas Lalinsky

Comments

Paul B Mahol May 10, 2023, 7:45 a.m. UTC | #1
Approved and applied.
diff mbox series

Patch

From 3f5d5f99e862b66867a8a93c8e5928b9e866e010 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= <lalinsky@gmail.com>
Date: Tue, 9 May 2023 08:30:03 +0200
Subject: [PATCH] avcodec/libmp3lame: make it possible to set
 copyright/original flags

---
 doc/encoders.texi       |  8 ++++++++
 libavcodec/libmp3lame.c | 16 +++++++++++++---
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/doc/encoders.texi b/doc/encoders.texi
index 3cb6fc1ce7..f8c691ba1a 100644
--- a/doc/encoders.texi
+++ b/doc/encoders.texi
@@ -864,6 +864,14 @@  Enable the encoder to use ABR when set to 1. The @command{lame}
 @option{--abr} sets the target bitrate, while this options only
 tells FFmpeg to use ABR still relies on @option{b} to set bitrate.
 
+@item copyright (@emph{-c})
+Set MPEG audio copyright flag when set to 1. The default value is 0
+(disabled).
+
+@item original (@emph{-o})
+Set MPEG audio original flag when set to 1. The default value is 1
+(enabled).
+
 @end table
 
 @section libopencore-amrnb
diff --git a/libavcodec/libmp3lame.c b/libavcodec/libmp3lame.c
index e119189f2a..312bc4230f 100644
--- a/libavcodec/libmp3lame.c
+++ b/libavcodec/libmp3lame.c
@@ -55,6 +55,8 @@  typedef struct LAMEContext {
     float *samples_flt[2];
     AudioFrameQueue afq;
     AVFloatDSPContext *fdsp;
+    int copyright;
+    int original;
 } LAMEContext;
 
 
@@ -137,6 +139,12 @@  static av_cold int mp3lame_encode_init(AVCodecContext *avctx)
     /* bit reservoir usage */
     lame_set_disable_reservoir(s->gfp, !s->reservoir);
 
+    /* copyright flag */
+    lame_set_copyright(s->gfp, s->copyright);
+
+    /* original flag */
+    lame_set_original(s->gfp, s->original);
+
     /* set specified parameters */
     if (lame_init_params(s->gfp) < 0) {
         ret = AVERROR_EXTERNAL;
@@ -303,9 +311,11 @@  static int mp3lame_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
 #define OFFSET(x) offsetof(LAMEContext, x)
 #define AE AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
-    { "reservoir",    "use bit reservoir", OFFSET(reservoir),    AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, AE },
-    { "joint_stereo", "use joint stereo",  OFFSET(joint_stereo), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, AE },
-    { "abr",          "use ABR",           OFFSET(abr),          AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AE },
+    { "reservoir",    "use bit reservoir",  OFFSET(reservoir),    AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, AE },
+    { "joint_stereo", "use joint stereo",   OFFSET(joint_stereo), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, AE },
+    { "abr",          "use ABR",            OFFSET(abr),          AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AE },
+    { "copyright",    "set copyright flag", OFFSET(copyright),    AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AE},
+    { "original",     "set original flag",  OFFSET(original),     AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, AE},
     { NULL },
 };
 
-- 
2.25.1