You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
avformat/flvdec: add flv_ignore_prevtag option into flvdec
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
This commit is contained in:
@@ -269,6 +269,9 @@ ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
|
|||||||
@table @option
|
@table @option
|
||||||
@item -flv_metadata @var{bool}
|
@item -flv_metadata @var{bool}
|
||||||
Allocate the streams according to the onMetaData array content.
|
Allocate the streams according to the onMetaData array content.
|
||||||
|
|
||||||
|
@item -flv_ignore_prevtag @var{bool}
|
||||||
|
Ignore the size of previous tag value.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@section gif
|
@section gif
|
||||||
|
@@ -44,6 +44,7 @@
|
|||||||
typedef struct FLVContext {
|
typedef struct FLVContext {
|
||||||
const AVClass *class; ///< Class for private options.
|
const AVClass *class; ///< Class for private options.
|
||||||
int trust_metadata; ///< configure streams according onMetaData
|
int trust_metadata; ///< configure streams according onMetaData
|
||||||
|
int trust_datasize; ///< trust data size of FLVTag
|
||||||
int wrong_dts; ///< wrong dts due to negative cts
|
int wrong_dts; ///< wrong dts due to negative cts
|
||||||
uint8_t *new_extradata[FLV_STREAM_TYPE_NB];
|
uint8_t *new_extradata[FLV_STREAM_TYPE_NB];
|
||||||
int new_extradata_size[FLV_STREAM_TYPE_NB];
|
int new_extradata_size[FLV_STREAM_TYPE_NB];
|
||||||
@@ -1250,6 +1251,7 @@ retry_duration:
|
|||||||
|
|
||||||
leave:
|
leave:
|
||||||
last = avio_rb32(s->pb);
|
last = avio_rb32(s->pb);
|
||||||
|
if (!flv->trust_datasize) {
|
||||||
if (last != orig_size + 11 && last != orig_size + 10 &&
|
if (last != orig_size + 11 && last != orig_size + 10 &&
|
||||||
!avio_feof(s->pb) &&
|
!avio_feof(s->pb) &&
|
||||||
(last != orig_size || !last) && last != flv->sum_flv_tag_size &&
|
(last != orig_size || !last) && last != flv->sum_flv_tag_size &&
|
||||||
@@ -1262,6 +1264,7 @@ leave:
|
|||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1277,6 +1280,7 @@ static int flv_read_seek(AVFormatContext *s, int stream_index,
|
|||||||
#define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
|
#define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
|
||||||
static const AVOption options[] = {
|
static const AVOption options[] = {
|
||||||
{ "flv_metadata", "Allocate streams according to the onMetaData array", OFFSET(trust_metadata), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VD },
|
{ "flv_metadata", "Allocate streams according to the onMetaData array", OFFSET(trust_metadata), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VD },
|
||||||
|
{ "flv_ignore_prevtag", "Ignore the Size of previous tag", OFFSET(trust_datasize), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VD },
|
||||||
{ "missing_streams", "", OFFSET(missing_streams), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 0xFF, VD | AV_OPT_FLAG_EXPORT | AV_OPT_FLAG_READONLY },
|
{ "missing_streams", "", OFFSET(missing_streams), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 0xFF, VD | AV_OPT_FLAG_EXPORT | AV_OPT_FLAG_READONLY },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user