43 av_first_parser = parser;
55 for (parser = av_first_parser; parser !=
NULL; parser = parser->
next) {
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)
136 memset(dummy_buf, 0,
sizeof(dummy_buf));
158 poutbuf_size, buf, buf_size);
175 uint8_t **poutbuf,
int *poutbuf_size,
176 const uint8_t *buf,
int buf_size,
int keyframe)
189 *poutbuf_size = buf_size;
194 *poutbuf_size =
size;
218 const uint8_t **buf,
int *buf_size)
221 av_dlog(
NULL,
"overread %d, state:%X next:%d index:%d o_index:%d\n",
224 (*buf)[0], (*buf)[1], (*buf)[2], (*buf)[3]);
240 *buf_size + pc->
index +
247 pc->
index += *buf_size;
271 for (; next < 0; next++) {
278 av_dlog(
NULL,
"overread %d, state:%X next:%d index:%d o_index:%d\n",
281 (*buf)[0], (*buf)[1], (*buf)[2], (*buf)[3]);
299 for (i = 0; i < buf_size; i++) {
300 state = state << 8 | buf[i];
301 if (state == 0x1B3 || state == 0x1B6)
void * av_malloc(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
void(* parser_close)(AVCodecParserContext *s)
memory handling functions
int64_t next_frame_offset
int(* split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
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)
void av_freep(void *arg)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
av_dlog(ac->avr, "%d samples - audio_convert: %s to %s (%s)\, len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt), use_generic ? ac->func_descr_generic :ac->func_descr)
int av_parser_change(AVCodecParserContext *s, AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int keyframe)
#define CODEC_FLAG_GLOBAL_HEADER
Place global headers in extradata instead of every keyframe.
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
struct AVCodecParser * next
void ff_fetch_timestamp(AVCodecParserContext *s, int off, int remove)
Fetch timestamps for a specific byte within the current access unit.
void av_free(void *ptr)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc(). ...
int64_t pos
Byte position of currently parsed frame in stream.
void * av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
Reallocate the given block if it is not large enough, otherwise do nothing.
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 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)
AVCodecParser * av_parser_next(const AVCodecParser *p)
void ff_parse_close(AVCodecParserContext *s)
#define FF_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
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
int64_t convergence_duration
Time difference in stream time base units from the pts of this packet to the point at which the outpu...
void av_parser_close(AVCodecParserContext *s)
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.
if(ac->has_optimized_func)
int pts_dts_delta
Presentation delay of current frame in units of AVCodecContext.time_base.
AVCodecParserContext * av_parser_init(int codec_id)
main external API structure.
#define 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
void av_register_codec_parser(AVCodecParser *parser)
static AVCodecParser * av_first_parser
int(* parser_init)(AVCodecParserContext *s)
int64_t cur_frame_offset[AV_PARSER_PTS_NB]
int key_frame
Set by parser to 1 for key frames and 0 for non-key frames.
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
int dts_sync_point
Synchronization point for start of timestamp generation.
#define AV_NOPTS_VALUE
Undefined timestamp value.