|
|
|
@ -30,7 +30,7 @@ |
|
|
|
|
#include "libavutil/avutil.h" |
|
|
|
|
|
|
|
|
|
#define LIBAVCODEC_VERSION_MAJOR 52 |
|
|
|
|
#define LIBAVCODEC_VERSION_MINOR 20 |
|
|
|
|
#define LIBAVCODEC_VERSION_MINOR 21 |
|
|
|
|
#define LIBAVCODEC_VERSION_MICRO 0 |
|
|
|
|
|
|
|
|
|
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |
|
|
|
@ -3198,6 +3198,23 @@ typedef struct AVCodecParserContext { |
|
|
|
|
* For example, this corresponds to H.264 dpb_output_delay. |
|
|
|
|
*/ |
|
|
|
|
int pts_dts_delta; |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Position of the packet in file. |
|
|
|
|
* |
|
|
|
|
* Analogous to cur_frame_pts/dts |
|
|
|
|
*/ |
|
|
|
|
int64_t cur_frame_pos[AV_PARSER_PTS_NB]; |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Byte position of currently parsed frame in stream. |
|
|
|
|
*/ |
|
|
|
|
int64_t pos; |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Previous frame byte position. |
|
|
|
|
*/ |
|
|
|
|
int64_t last_pos; |
|
|
|
|
} AVCodecParserContext; |
|
|
|
|
|
|
|
|
|
typedef struct AVCodecParser { |
|
|
|
@ -3217,11 +3234,49 @@ AVCodecParser *av_parser_next(AVCodecParser *c); |
|
|
|
|
|
|
|
|
|
void av_register_codec_parser(AVCodecParser *parser); |
|
|
|
|
AVCodecParserContext *av_parser_init(int codec_id); |
|
|
|
|
|
|
|
|
|
attribute_deprecated |
|
|
|
|
int av_parser_parse(AVCodecParserContext *s, |
|
|
|
|
AVCodecContext *avctx, |
|
|
|
|
uint8_t **poutbuf, int *poutbuf_size, |
|
|
|
|
const uint8_t *buf, int buf_size, |
|
|
|
|
int64_t pts, int64_t dts); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Parse a packet. |
|
|
|
|
* |
|
|
|
|
* @param s parser context. |
|
|
|
|
* @param avctx codec context. |
|
|
|
|
* @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. |
|
|
|
|
* @param poutbuf_size set to size of parsed buffer or zero if not yet finished. |
|
|
|
|
* @param buf input buffer. |
|
|
|
|
* @param buf_size input length, to signal EOF, this should be 0 (so that the last frame can be output). |
|
|
|
|
* @param pts input presentation timestamp. |
|
|
|
|
* @param dts input decoding timestamp. |
|
|
|
|
* @param pos input byte position in stream. |
|
|
|
|
* @return the number of bytes of the input bitstream used. |
|
|
|
|
* |
|
|
|
|
* Example: |
|
|
|
|
* @code |
|
|
|
|
* while(in_len){ |
|
|
|
|
* len = av_parser_parse2(myparser, AVCodecContext, &data, &size, |
|
|
|
|
* in_data, in_len, |
|
|
|
|
* pts, dts, pos); |
|
|
|
|
* in_data += len; |
|
|
|
|
* in_len -= len; |
|
|
|
|
* |
|
|
|
|
* if(size) |
|
|
|
|
* decode_frame(data, size); |
|
|
|
|
* } |
|
|
|
|
* @endcode |
|
|
|
|
*/ |
|
|
|
|
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); |
|
|
|
|
|
|
|
|
|
int av_parser_change(AVCodecParserContext *s, |
|
|
|
|
AVCodecContext *avctx, |
|
|
|
|
uint8_t **poutbuf, int *poutbuf_size, |
|
|
|
|