diff mbox series

[FFmpeg-devel,02/12] lavf/concat: add file_packet_meta directive

Message ID 20210831180739.873390-2-george@nsup.org
State Accepted
Commit 7517777d06c2f0790692c3e8bb6000239665fd37
Headers show
Series [FFmpeg-devel,01/12] lavf/concat: refactor parsing | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Nicolas George Aug. 31, 2021, 6:07 p.m. UTC
Same as file_packet_metadata without the double parsing.

Signed-off-by: Nicolas George <george@nsup.org>
---
 doc/demuxers.texi       | 5 +++++
 libavformat/concatdec.c | 9 +++++++++
 2 files changed, 14 insertions(+)
diff mbox series

Patch

diff --git a/doc/demuxers.texi b/doc/demuxers.texi
index eb3351833a..f338700396 100644
--- a/doc/demuxers.texi
+++ b/doc/demuxers.texi
@@ -151,6 +151,11 @@  Metadata of the packets of the file. The specified metadata will be set for
 each file packet. You can specify this directive multiple times to add multiple
 metadata entries.
 
+@item @code{file_packet_meta @var{key} @var{value}}
+Metadata of the packets of the file. The specified metadata will be set for
+each file packet. You can specify this directive multiple times to add multiple
+metadata entries.
+
 @item @code{option @var{key} @var{value}}
 Option to access, open and probe the file.
 Can be present multiple times.
diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c
index f63b5f0f22..cb6e1b58e7 100644
--- a/libavformat/concatdec.c
+++ b/libavformat/concatdec.c
@@ -425,6 +425,7 @@  typedef enum ParseDirective {
    DIR_DURATION,
    DIR_INPOINT,
    DIR_OUTPOINT,
+   DIR_FPMETA,
    DIR_FPMETAS,
    DIR_OPTION,
    DIR_STREAM,
@@ -437,6 +438,7 @@  static const ParseSyntax syntax[] = {
     [DIR_DURATION ] = { "duration",             "d",    NEEDS_FILE },
     [DIR_INPOINT  ] = { "inpoint",              "d",    NEEDS_FILE },
     [DIR_OUTPOINT ] = { "outpoint",             "d",    NEEDS_FILE },
+    [DIR_FPMETA   ] = { "file_packet_meta",     "ks",   NEEDS_FILE },
     [DIR_FPMETAS  ] = { "file_packet_metadata", "s",    NEEDS_FILE },
     [DIR_OPTION   ] = { "option",               "ks",   NEEDS_FILE | NEEDS_UNSAFE },
     [DIR_STREAM   ] = { "stream",               "",     0 },
@@ -550,6 +552,13 @@  static int concat_parse_script(AVFormatContext *avf)
             file->outpoint = arg_int[0];
             break;
 
+        case DIR_FPMETA:
+            ret = av_dict_set(&file->metadata, arg_kw[0], arg_str[1], AV_DICT_DONT_STRDUP_VAL);
+            arg_str[1] = NULL;
+            if (ret < 0)
+                FAIL(ret);
+            break;
+
         case DIR_FPMETAS:
             if ((ret = av_dict_parse_string(&file->metadata, arg_str[0], "=", "", 0)) < 0) {
                 av_log(avf, AV_LOG_ERROR, "Line %d: failed to parse metadata string\n", line);