70 #if FF_API_CONVERGENCE_DURATION 114 if (s->
cur_offset + off < s->cur_frame_end[i])
121 uint8_t **poutbuf,
int *poutbuf_size,
122 const uint8_t *buf,
int buf_size,
123 int64_t
pts, int64_t dts, int64_t
pos)
145 memset(dummy_buf, 0,
sizeof(dummy_buf));
167 poutbuf_size, buf, buf_size);
169 #define FILL(name) if(s->name > 0 && avctx->name <= 0) avctx->name = s->name 192 #if FF_API_PARSER_CHANGE 194 uint8_t **poutbuf,
int *poutbuf_size,
195 const uint8_t *buf,
int buf_size,
int keyframe)
208 *poutbuf_size = buf_size;
213 *poutbuf_size =
size;
239 const uint8_t **buf,
int *buf_size)
242 ff_dlog(
NULL,
"overread %d, state:%"PRIX32
" next:%d index:%d o_index:%d\n",
245 (*buf)[0], (*buf)[1], (*buf)[2], (*buf)[3]);
252 if (next > *buf_size)
264 *buf_size + pc->
index +
274 pc->
index += *buf_size;
307 for (; next < 0; next++) {
314 ff_dlog(
NULL,
"overread %d, state:%"PRIX32
" next:%d index:%d o_index:%d\n",
317 (*buf)[0], (*buf)[1], (*buf)[2], (*buf)[3]);
333 const uint8_t *ptr = buf, *end = buf + buf_size;
337 if (state == 0x1B3 || state == 0x1B6)
338 return ptr - 4 - buf;
void(* parser_close)(AVCodecParserContext *s)
Memory handling functions.
int64_t next_frame_offset
int(* split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
int64_t cur_frame_pos[AV_PARSER_PTS_NB]
Position of the packet in file.
int dts_ref_dts_delta
Offset of the current timestamp against last timestamp sync point in units of AVCodecContext.time_base.
int ff_mpeg4video_split(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
#define av_assert0(cond)
assert() equivalent, that is always enabled.
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
int av_parser_change(AVCodecParserContext *s, AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int keyframe)
const uint8_t * avpriv_find_start_code(const uint8_t *p, const uint8_t *end, uint32_t *state)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int64_t pos
Byte position of currently parsed frame in stream.
struct AVCodecParser * parser
int ff_combine_frame(ParseContext *pc, int next, const uint8_t **buf, int *buf_size)
Combine the (truncated) bitstream to a complete frame.
int flags
AV_CODEC_FLAG_*.
simple assert() macros that are a bit more flexible than ISO C assert().
int overread_index
the index into ParseContext.buffer of the overread bytes
int64_t cur_frame_dts[AV_PARSER_PTS_NB]
int(* parser_parse)(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size)
void ff_parse_close(AVCodecParserContext *s)
common internal API header
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
int overread
the number of bytes which where irreversibly read from the next frame
int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int64_t pts, int64_t dts, int64_t pos)
Parse a packet.
int64_t offset
byte offset from starting packet start
void av_parser_close(AVCodecParserContext *s)
void * av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
Reallocate the given buffer if it is not large enough, otherwise do nothing.
int64_t cur_frame_end[AV_PARSER_PTS_NB]
int64_t cur_frame_pts[AV_PARSER_PTS_NB]
int64_t last_pos
Previous frame byte position.
int pts_dts_delta
Presentation delay of current frame in units of AVCodecContext.time_base.
AVCodecParserContext * av_parser_init(int codec_id)
enum AVMediaType codec_type
const AVCodecParser * av_parser_iterate(void **opaque)
Iterate over all registered codec parsers.
main external API structure.
#define AV_CODEC_FLAG2_LOCAL_HEADER
Place global headers at every keyframe instead of in extradata.
int cur_frame_start_index
#define PARSER_FLAG_FETCHED_OFFSET
Set if the parser has a valid file offset.
uint32_t state
contains the last few bytes in MSB order
uint64_t state64
contains the last 8 bytes in MSB order
int(* parser_init)(AVCodecParserContext *s)
attribute_deprecated int64_t convergence_duration
#define AV_CODEC_FLAG_GLOBAL_HEADER
Place global headers in extradata instead of every keyframe.
#define FF_DISABLE_DEPRECATION_WARNINGS
common internal api header.
int64_t cur_frame_offset[AV_PARSER_PTS_NB]
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
#define FF_ENABLE_DEPRECATION_WARNINGS
int format
The format of the coded data, corresponds to enum AVPixelFormat for video and for enum AVSampleFormat...
int flags2
AV_CODEC_FLAG2_*.
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later.That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another.Frame references ownership and permissions
void ff_fetch_timestamp(AVCodecParserContext *s, int off, int remove, int fuzzy)
Fetch timestamps for a specific byte within the current access unit.
int key_frame
Set by parser to 1 for key frames and 0 for non-key frames.
int dts_sync_point
Synchronization point for start of timestamp generation.
#define AV_NOPTS_VALUE
Undefined timestamp value.