|
|
@ -432,6 +432,7 @@ typedef enum ParseDirective { |
|
|
|
DIR_EXSID, |
|
|
|
DIR_EXSID, |
|
|
|
DIR_STMETA, |
|
|
|
DIR_STMETA, |
|
|
|
DIR_STCODEC, |
|
|
|
DIR_STCODEC, |
|
|
|
|
|
|
|
DIR_STEDATA, |
|
|
|
DIR_CHAPTER, |
|
|
|
DIR_CHAPTER, |
|
|
|
} ParseDirective; |
|
|
|
} ParseDirective; |
|
|
|
|
|
|
|
|
|
|
@ -448,6 +449,7 @@ static const ParseSyntax syntax[] = { |
|
|
|
[DIR_EXSID ] = { "exact_stream_id", "i", NEEDS_STREAM }, |
|
|
|
[DIR_EXSID ] = { "exact_stream_id", "i", NEEDS_STREAM }, |
|
|
|
[DIR_STMETA ] = { "stream_meta", "ks", NEEDS_STREAM }, |
|
|
|
[DIR_STMETA ] = { "stream_meta", "ks", NEEDS_STREAM }, |
|
|
|
[DIR_STCODEC ] = { "stream_codec", "k", NEEDS_STREAM }, |
|
|
|
[DIR_STCODEC ] = { "stream_codec", "k", NEEDS_STREAM }, |
|
|
|
|
|
|
|
[DIR_STEDATA ] = { "stream_extradata", "k", NEEDS_STREAM }, |
|
|
|
[DIR_CHAPTER ] = { "chapter", "idd", 0 }, |
|
|
|
[DIR_CHAPTER ] = { "chapter", "idd", 0 }, |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@ -612,6 +614,15 @@ static int concat_parse_script(AVFormatContext *avf) |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case DIR_STEDATA: { |
|
|
|
|
|
|
|
int size = ff_hex_to_data(NULL, arg_kw[0]); |
|
|
|
|
|
|
|
ret = ff_alloc_extradata(stream->codecpar, size); |
|
|
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
|
|
FAIL(ret); |
|
|
|
|
|
|
|
ff_hex_to_data(stream->codecpar->extradata, arg_kw[0]); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
case DIR_CHAPTER: |
|
|
|
case DIR_CHAPTER: |
|
|
|
chapter = avpriv_new_chapter(avf, arg_int[0], AV_TIME_BASE_Q, |
|
|
|
chapter = avpriv_new_chapter(avf, arg_int[0], AV_TIME_BASE_Q, |
|
|
|
arg_int[1], arg_int[2], NULL); |
|
|
|
arg_int[1], arg_int[2], NULL); |
|
|
|