FFmpeg
Data Structures | Macros | Functions | Variables
flvdec.c File Reference
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/dict.h"
#include "libavutil/opt.h"
#include "libavutil/intfloat.h"
#include "libavutil/mathematics.h"
#include "libavutil/time_internal.h"
#include "libavcodec/bytestream.h"
#include "avformat.h"
#include "internal.h"
#include "avio_internal.h"
#include "flv.h"

Go to the source code of this file.

Data Structures

struct  FLVContext
 
struct  amf_date
 

Macros

#define VALIDATE_INDEX_TS_THRESH   2500
 
#define RESYNC_BUFFER_SIZE   (1<<20)
 
#define TYPE_ONTEXTDATA   1
 
#define TYPE_ONCAPTION   2
 
#define TYPE_ONCAPTIONINFO   3
 
#define TYPE_UNKNOWN   9
 
#define OFFSET(x)   offsetof(FLVContext, x)
 
#define VD   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
 

Functions

static int probe (const AVProbeData *p, int live)
 
static int flv_probe (const AVProbeData *p)
 
static int live_flv_probe (const AVProbeData *p)
 
static int kux_probe (const AVProbeData *p)
 
static void add_keyframes_index (AVFormatContext *s)
 
static AVStreamcreate_stream (AVFormatContext *s, int codec_type)
 
static int flv_same_audio_codec (AVCodecParameters *apar, int flags)
 
static void flv_set_audio_codec (AVFormatContext *s, AVStream *astream, AVCodecParameters *apar, int flv_codecid)
 
static int flv_same_video_codec (AVCodecParameters *vpar, int flags)
 
static int flv_set_video_codec (AVFormatContext *s, AVStream *vstream, int flv_codecid, int read)
 
static int amf_get_string (AVIOContext *ioc, char *buffer, int buffsize)
 
static int parse_keyframes_index (AVFormatContext *s, AVIOContext *ioc, int64_t max_pos)
 
static int amf_parse_object (AVFormatContext *s, AVStream *astream, AVStream *vstream, const char *key, int64_t max_pos, int depth)
 
static int flv_read_metabody (AVFormatContext *s, int64_t next_pos)
 
static int flv_read_header (AVFormatContext *s)
 
static int flv_read_close (AVFormatContext *s)
 
static int flv_get_extradata (AVFormatContext *s, AVStream *st, int size)
 
static int flv_queue_extradata (FLVContext *flv, AVIOContext *pb, int stream, int size)
 
static void clear_index_entries (AVFormatContext *s, int64_t pos)
 
static int amf_skip_tag (AVIOContext *pb, AMFDataType type)
 
static int flv_data_packet (AVFormatContext *s, AVPacket *pkt, int64_t dts, int64_t next)
 
static int resync (AVFormatContext *s)
 
static int flv_read_packet (AVFormatContext *s, AVPacket *pkt)
 
static int flv_read_seek (AVFormatContext *s, int stream_index, int64_t ts, int flags)
 

Variables

static const AVOption options []
 
static const AVClass flv_class
 
AVInputFormat ff_flv_demuxer
 
static const AVClass live_flv_class
 
AVInputFormat ff_live_flv_demuxer
 
static const AVClass kux_class
 
AVInputFormat ff_kux_demuxer
 

Macro Definition Documentation

#define VALIDATE_INDEX_TS_THRESH   2500

Definition at line 40 of file flvdec.c.

Referenced by flv_read_packet().

#define RESYNC_BUFFER_SIZE   (1<<20)

Definition at line 42 of file flvdec.c.

Referenced by resync().

#define TYPE_ONTEXTDATA   1

Definition at line 684 of file flvdec.c.

Referenced by flv_read_metabody(), and flv_read_packet().

#define TYPE_ONCAPTION   2

Definition at line 685 of file flvdec.c.

Referenced by flv_read_metabody(), and flv_read_packet().

#define TYPE_ONCAPTIONINFO   3

Definition at line 686 of file flvdec.c.

Referenced by flv_read_metabody().

#define TYPE_UNKNOWN   9

Definition at line 687 of file flvdec.c.

Referenced by flv_read_metabody(), and flv_read_packet().

#define OFFSET (   x)    offsetof(FLVContext, x)

Definition at line 1340 of file flvdec.c.

Definition at line 1341 of file flvdec.c.

Function Documentation

static int probe ( const AVProbeData p,
int  live 
)
static

Definition at line 86 of file flvdec.c.

Referenced by flv_probe(), and live_flv_probe().

static int flv_probe ( const AVProbeData p)
static

Definition at line 105 of file flvdec.c.

static int live_flv_probe ( const AVProbeData p)
static

Definition at line 110 of file flvdec.c.

static int kux_probe ( const AVProbeData p)
static

Definition at line 115 of file flvdec.c.

static void add_keyframes_index ( AVFormatContext s)
static

Definition at line 129 of file flvdec.c.

Referenced by amf_parse_object(), and create_stream().

static AVStream* create_stream ( AVFormatContext s,
int  codec_type 
)
static

Definition at line 160 of file flvdec.c.

Referenced by amf_parse_object(), flv_data_packet(), and flv_read_packet().

static int flv_same_audio_codec ( AVCodecParameters apar,
int  flags 
)
static

Definition at line 190 of file flvdec.c.

Referenced by flv_read_packet().

static void flv_set_audio_codec ( AVFormatContext s,
AVStream astream,
AVCodecParameters apar,
int  flv_codecid 
)
static

Definition at line 241 of file flvdec.c.

Referenced by amf_parse_object(), and flv_read_packet().

static int flv_same_video_codec ( AVCodecParameters vpar,
int  flags 
)
static

Definition at line 301 of file flvdec.c.

Referenced by flv_read_packet().

static int flv_set_video_codec ( AVFormatContext s,
AVStream vstream,
int  flv_codecid,
int  read 
)
static

Definition at line 326 of file flvdec.c.

Referenced by amf_parse_object(), and flv_read_packet().

static int amf_get_string ( AVIOContext ioc,
char *  buffer,
int  buffsize 
)
static
static int parse_keyframes_index ( AVFormatContext s,
AVIOContext ioc,
int64_t  max_pos 
)
static

Definition at line 398 of file flvdec.c.

Referenced by amf_parse_object().

static int amf_parse_object ( AVFormatContext s,
AVStream astream,
AVStream vstream,
const char *  key,
int64_t  max_pos,
int  depth 
)
static

Definition at line 484 of file flvdec.c.

Referenced by flv_read_metabody().

static int flv_read_metabody ( AVFormatContext s,
int64_t  next_pos 
)
static

Definition at line 689 of file flvdec.c.

Referenced by flv_read_packet().

static int flv_read_header ( AVFormatContext s)
static

Definition at line 747 of file flvdec.c.

static int flv_read_close ( AVFormatContext s)
static

Definition at line 785 of file flvdec.c.

static int flv_get_extradata ( AVFormatContext s,
AVStream st,
int  size 
)
static

Definition at line 796 of file flvdec.c.

Referenced by flv_read_packet().

static int flv_queue_extradata ( FLVContext flv,
AVIOContext pb,
int  stream,
int  size 
)
static

Definition at line 808 of file flvdec.c.

Referenced by flv_read_packet().

static void clear_index_entries ( AVFormatContext s,
int64_t  pos 
)
static

Definition at line 824 of file flvdec.c.

Referenced by flv_read_packet().

static int amf_skip_tag ( AVIOContext pb,
AMFDataType  type 
)
static

Definition at line 840 of file flvdec.c.

Referenced by flv_data_packet().

static int flv_data_packet ( AVFormatContext s,
AVPacket pkt,
int64_t  dts,
int64_t  next 
)
static

Definition at line 881 of file flvdec.c.

Referenced by flv_read_packet().

static int resync ( AVFormatContext s)
static

Definition at line 948 of file flvdec.c.

Referenced by avi_read_packet(), flv_read_packet(), and nut_read_packet().

static int flv_read_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 990 of file flvdec.c.

static int flv_read_seek ( AVFormatContext s,
int  stream_index,
int64_t  ts,
int  flags 
)
static

Definition at line 1332 of file flvdec.c.

Variable Documentation

const AVOption options[]
static
Initial value:
= {
{ "flv_metadata", "Allocate streams according to the onMetaData array", OFFSET(trust_metadata), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VD },
{ "flv_full_metadata", "Dump full metadata of the onMetadata", OFFSET(dump_full_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 },
{ NULL }
}
#define NULL
Definition: coverity.c:32
#define AV_OPT_FLAG_EXPORT
The option is intended for exporting values to the caller.
Definition: opt.h:284
#define OFFSET(x)
Definition: flvdec.c:1340
#define VD
Definition: flvdec.c:1341
#define AV_OPT_FLAG_READONLY
The option may not be set through the AVOptions API, only read.
Definition: opt.h:289

Definition at line 1342 of file flvdec.c.

const AVClass flv_class
static
Initial value:
= {
.class_name = "flvdec",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:191
static const AVOption options[]
Definition: flvdec.c:1342

Definition at line 1350 of file flvdec.c.

AVInputFormat ff_flv_demuxer
Initial value:
= {
.name = "flv",
.long_name = NULL_IF_CONFIG_SMALL("FLV (Flash Video)"),
.priv_data_size = sizeof(FLVContext),
.extensions = "flv",
.priv_class = &flv_class,
}
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
Definition: libcdio.c:153
static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
Definition: flvdec.c:990
static int flv_read_seek(AVFormatContext *s, int stream_index, int64_t ts, int flags)
Definition: flvdec.c:1332
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:145
static int flv_read_close(AVFormatContext *s)
Definition: flvdec.c:785
static int flv_read_header(AVFormatContext *s)
Definition: flvdec.c:747
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static const AVClass flv_class
Definition: flvdec.c:1350
static int read_header(FFV1Context *f)
Definition: ffv1dec.c:530
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
Definition: avio_reading.c:42
static int flv_probe(const AVProbeData *p)
Definition: flvdec.c:105
static int read_probe(const AVProbeData *pd)
Definition: jvdec.c:55

Definition at line 1357 of file flvdec.c.

const AVClass live_flv_class
static
Initial value:
= {
.class_name = "live_flvdec",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:191
static const AVOption options[]
Definition: flvdec.c:1342

Definition at line 1370 of file flvdec.c.

AVInputFormat ff_live_flv_demuxer
Initial value:
= {
.name = "live_flv",
.long_name = NULL_IF_CONFIG_SMALL("live RTMP FLV (Flash Video)"),
.priv_data_size = sizeof(FLVContext),
.extensions = "flv",
.priv_class = &live_flv_class,
}
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
Definition: libcdio.c:153
static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
Definition: flvdec.c:990
static int flv_read_seek(AVFormatContext *s, int stream_index, int64_t ts, int flags)
Definition: flvdec.c:1332
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:145
#define AVFMT_TS_DISCONT
Format allows timestamp discontinuities.
Definition: avformat.h:469
static int flv_read_close(AVFormatContext *s)
Definition: flvdec.c:785
static int flv_read_header(AVFormatContext *s)
Definition: flvdec.c:747
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static int live_flv_probe(const AVProbeData *p)
Definition: flvdec.c:110
static int read_header(FFV1Context *f)
Definition: ffv1dec.c:530
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
Definition: avio_reading.c:42
static const AVClass live_flv_class
Definition: flvdec.c:1370
#define flags(name, subs,...)
Definition: cbs_av1.c:561
static int read_probe(const AVProbeData *pd)
Definition: jvdec.c:55

Definition at line 1377 of file flvdec.c.

const AVClass kux_class
static
Initial value:
= {
.class_name = "kuxdec",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:191
static const AVOption options[]
Definition: flvdec.c:1342

Definition at line 1391 of file flvdec.c.

AVInputFormat ff_kux_demuxer
Initial value:
= {
.name = "kux",
.long_name = NULL_IF_CONFIG_SMALL("KUX (YouKu)"),
.priv_data_size = sizeof(FLVContext),
.extensions = "kux",
.priv_class = &kux_class,
}
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
Definition: libcdio.c:153
static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
Definition: flvdec.c:990
static int flv_read_seek(AVFormatContext *s, int stream_index, int64_t ts, int flags)
Definition: flvdec.c:1332
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:145
static int flv_read_close(AVFormatContext *s)
Definition: flvdec.c:785
static int flv_read_header(AVFormatContext *s)
Definition: flvdec.c:747
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static const AVClass kux_class
Definition: flvdec.c:1391
static int read_header(FFV1Context *f)
Definition: ffv1dec.c:530
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
Definition: avio_reading.c:42
static int kux_probe(const AVProbeData *p)
Definition: flvdec.c:115
static int read_probe(const AVProbeData *pd)
Definition: jvdec.c:55

Definition at line 1398 of file flvdec.c.