1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-15 14:13:16 +02:00

lavf/concat: add file_packet_meta directive

Same as file_packet_metadata without the double parsing.
This commit is contained in:
Nicolas George
2021-08-31 19:56:24 +02:00
parent 74ab93fa7f
commit 7517777d06
2 changed files with 14 additions and 0 deletions

View File

@@ -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 each file packet. You can specify this directive multiple times to add multiple
metadata entries. 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}} @item @code{option @var{key} @var{value}}
Option to access, open and probe the file. Option to access, open and probe the file.
Can be present multiple times. Can be present multiple times.

View File

@@ -425,6 +425,7 @@ typedef enum ParseDirective {
DIR_DURATION, DIR_DURATION,
DIR_INPOINT, DIR_INPOINT,
DIR_OUTPOINT, DIR_OUTPOINT,
DIR_FPMETA,
DIR_FPMETAS, DIR_FPMETAS,
DIR_OPTION, DIR_OPTION,
DIR_STREAM, DIR_STREAM,
@@ -437,6 +438,7 @@ static const ParseSyntax syntax[] = {
[DIR_DURATION ] = { "duration", "d", NEEDS_FILE }, [DIR_DURATION ] = { "duration", "d", NEEDS_FILE },
[DIR_INPOINT ] = { "inpoint", "d", NEEDS_FILE }, [DIR_INPOINT ] = { "inpoint", "d", NEEDS_FILE },
[DIR_OUTPOINT ] = { "outpoint", "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_FPMETAS ] = { "file_packet_metadata", "s", NEEDS_FILE },
[DIR_OPTION ] = { "option", "ks", NEEDS_FILE | NEEDS_UNSAFE }, [DIR_OPTION ] = { "option", "ks", NEEDS_FILE | NEEDS_UNSAFE },
[DIR_STREAM ] = { "stream", "", 0 }, [DIR_STREAM ] = { "stream", "", 0 },
@@ -550,6 +552,13 @@ static int concat_parse_script(AVFormatContext *avf)
file->outpoint = arg_int[0]; file->outpoint = arg_int[0];
break; 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: case DIR_FPMETAS:
if ((ret = av_dict_parse_string(&file->metadata, arg_str[0], "=", "", 0)) < 0) { 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); av_log(avf, AV_LOG_ERROR, "Line %d: failed to parse metadata string\n", line);