diff mbox series

[FFmpeg-devel,1/2] lavc/dvdsubdec: Move palette parsing to new function

Message ID 20200201224309.3016-1-michael.kuron@gmail.com
State Accepted
Headers show
Series [FFmpeg-devel,1/2] lavc/dvdsubdec: Move palette parsing to new function | expand

Checks

Context Check Description
andriy/ffmpeg-patchwork success Make fate finished

Commit Message

Michael Kuron Feb. 1, 2020, 10:43 p.m. UTC
Signed-off-by: Michael Kuron <michael.kuron@gmail.com>
---
 doc/decoders.texi      |  2 +-
 libavcodec/Makefile    |  1 +
 libavcodec/dvdsub.c    | 33 +++++++++++++++++++++++++++++++++
 libavcodec/dvdsubdec.c | 22 ++++++----------------
 libavcodec/internal.h  |  2 ++
 5 files changed, 43 insertions(+), 17 deletions(-)
 create mode 100644 libavcodec/dvdsub.c

Comments

Michael Niedermayer Feb. 2, 2020, 4:08 p.m. UTC | #1
On Sat, Feb 01, 2020 at 11:43:08PM +0100, Michael Kuron wrote:
> Signed-off-by: Michael Kuron <michael.kuron@gmail.com>
> ---
>  doc/decoders.texi      |  2 +-
>  libavcodec/Makefile    |  1 +
>  libavcodec/dvdsub.c    | 33 +++++++++++++++++++++++++++++++++
>  libavcodec/dvdsubdec.c | 22 ++++++----------------
>  libavcodec/internal.h  |  2 ++
>  5 files changed, 43 insertions(+), 17 deletions(-)
>  create mode 100644 libavcodec/dvdsub.c
> 
> diff --git a/doc/decoders.texi b/doc/decoders.texi
> index 0582b018b0..83515ae363 100644
> --- a/doc/decoders.texi
> +++ b/doc/decoders.texi
> @@ -280,7 +280,7 @@ palette is stored in the IFO file, and therefore not available when reading
>  from dumped VOB files.
>  
>  The format for this option is a string containing 16 24-bits hexadecimal
> -numbers (without 0x prefix) separated by comas, for example @code{0d00ee,
> +numbers (without 0x prefix) separated by commas, for example @code{0d00ee,
>  ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1,
>  7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b}.

strictly speaking this should be a seperate patch

but execpt that, LGTM

thx

[...]
Michael Kuron Feb. 4, 2020, 5:02 p.m. UTC | #2
I split off the documentation fix into a separate patch and sent the series
of three patches yesterday. Carl Eugen Hoyos already merged the first one
with the documentation fix. Can you take care of the remaining two patches?

On Sun, Feb 2, 2020 at 5:08 PM Michael Niedermayer <michael@niedermayer.cc>
wrote:

>> diff --git a/doc/decoders.texi b/doc/decoders.texi
>> ...
>
> strictly speaking this should be a seperate patch
>
> but execpt that, LGTM
diff mbox series

Patch

diff --git a/doc/decoders.texi b/doc/decoders.texi
index 0582b018b0..83515ae363 100644
--- a/doc/decoders.texi
+++ b/doc/decoders.texi
@@ -280,7 +280,7 @@  palette is stored in the IFO file, and therefore not available when reading
 from dumped VOB files.
 
 The format for this option is a string containing 16 24-bits hexadecimal
-numbers (without 0x prefix) separated by comas, for example @code{0d00ee,
+numbers (without 0x prefix) separated by commas, for example @code{0d00ee,
 ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1,
 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b}.
 
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 3cd73fbcc6..ddc923304a 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -282,6 +282,7 @@  OBJS-$(CONFIG_DST_DECODER)             += dstdec.o dsd.o
 OBJS-$(CONFIG_DVBSUB_DECODER)          += dvbsubdec.o
 OBJS-$(CONFIG_DVBSUB_ENCODER)          += dvbsub.o
 OBJS-$(CONFIG_DVDSUB_DECODER)          += dvdsubdec.o
+OBJS-$(CONFIG_DVDSUB_DECODER)          += dvdsub.o
 OBJS-$(CONFIG_DVDSUB_ENCODER)          += dvdsubenc.o
 OBJS-$(CONFIG_DVAUDIO_DECODER)         += dvaudiodec.o
 OBJS-$(CONFIG_DVVIDEO_DECODER)         += dvdec.o dv.o dvdata.o
diff --git a/libavcodec/dvdsub.c b/libavcodec/dvdsub.c
new file mode 100644
index 0000000000..a03ff27754
--- /dev/null
+++ b/libavcodec/dvdsub.c
@@ -0,0 +1,33 @@ 
+/*
+ * DVD subtitle decoding/encoding
+ * Copyright (c) 2005 Fabrice Bellard
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "internal.h"
+#include "libavutil/avstring.h"
+#include <stdlib.h>
+
+void ff_dvdsub_parse_palette(uint32_t *palette, const char *p)
+{
+    for (int i = 0; i < 16; i++) {
+        palette[i] = strtoul(p, &p, 16);
+        while (*p == ',' || av_isspace(*p))
+            p++;
+    }
+}
diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c
index 741ea9fd1e..bf49788e1b 100644
--- a/libavcodec/dvdsubdec.c
+++ b/libavcodec/dvdsubdec.c
@@ -27,7 +27,6 @@ 
 #include "libavutil/colorspace.h"
 #include "libavutil/opt.h"
 #include "libavutil/imgutils.h"
-#include "libavutil/avstring.h"
 #include "libavutil/bswap.h"
 
 typedef struct DVDSubContext
@@ -626,18 +625,6 @@  static int dvdsub_decode(AVCodecContext *avctx,
     return buf_size;
 }
 
-static void parse_palette(DVDSubContext *ctx, char *p)
-{
-    int i;
-
-    ctx->has_palette = 1;
-    for(i=0;i<16;i++) {
-        ctx->palette[i] = strtoul(p, &p, 16);
-        while(*p == ',' || av_isspace(*p))
-            p++;
-    }
-}
-
 static int parse_ifo_palette(DVDSubContext *ctx, char *p)
 {
     FILE *ifo;
@@ -719,7 +706,8 @@  static int dvdsub_parse_extradata(AVCodecContext *avctx)
             break;
 
         if (strncmp("palette:", data, 8) == 0) {
-            parse_palette(ctx, data + 8);
+            ctx->has_palette = 1;
+            ff_dvdsub_parse_palette(ctx->palette, data + 8);
         } else if (strncmp("size:", data, 5) == 0) {
             int w, h;
             if (sscanf(data + 5, "%dx%d", &w, &h) == 2) {
@@ -748,8 +736,10 @@  static av_cold int dvdsub_init(AVCodecContext *avctx)
 
     if (ctx->ifo_str)
         parse_ifo_palette(ctx, ctx->ifo_str);
-    if (ctx->palette_str)
-        parse_palette(ctx, ctx->palette_str);
+    if (ctx->palette_str) {
+        ctx->has_palette = 1;
+        ff_dvdsub_parse_palette(ctx->palette, ctx->palette_str);
+    }
     if (ctx->has_palette) {
         int i;
         av_log(avctx, AV_LOG_DEBUG, "palette:");
diff --git a/libavcodec/internal.h b/libavcodec/internal.h
index 5096ffa1d9..41281b1140 100644
--- a/libavcodec/internal.h
+++ b/libavcodec/internal.h
@@ -424,6 +424,8 @@  int64_t ff_guess_coded_bitrate(AVCodecContext *avctx);
 int ff_int_from_list_or_default(void *ctx, const char * val_name, int val,
                                 const int * array_valid_values, int default_value);
 
+void ff_dvdsub_parse_palette(uint32_t *palette, const char *p);
+
 #if defined(_WIN32) && CONFIG_SHARED && !defined(BUILDING_avcodec)
 #    define av_export_avcodec __declspec(dllimport)
 #else