X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmediacodecdec_common.h;h=0b21129fee499e8444df0825cceded888abc9e88;hb=f6681feda641c026d84f6d207f661bf9b87d9d70;hp=10f38277b54db76371d0ab21707fc333d3490805;hpb=bcab11a1a23d8b156198db352bbdb932740a966c;p=ffmpeg diff --git a/libavcodec/mediacodecdec_common.h b/libavcodec/mediacodecdec_common.h index 10f38277b54..0b21129fee4 100644 --- a/libavcodec/mediacodecdec_common.h +++ b/libavcodec/mediacodecdec_common.h @@ -25,6 +25,7 @@ #include #include +#include #include #include "libavutil/frame.h" @@ -35,7 +36,9 @@ typedef struct MediaCodecDecContext { + AVCodecContext *avctx; atomic_int refcount; + atomic_int hw_buffer_count; char *codec_name; @@ -54,13 +57,18 @@ typedef struct MediaCodecDecContext { int stride; int slice_height; int color_format; - enum AVPixelFormat pix_fmt; int crop_top; int crop_bottom; int crop_left; int crop_right; + int display_width; + int display_height; uint64_t output_buffer_count; + ssize_t current_input_buffer; + + bool delay_flush; + atomic_int serial; } MediaCodecDecContext; @@ -69,11 +77,15 @@ int ff_mediacodec_dec_init(AVCodecContext *avctx, const char *mime, FFAMediaFormat *format); -int ff_mediacodec_dec_decode(AVCodecContext *avctx, - MediaCodecDecContext *s, - AVFrame *frame, - int *got_frame, - AVPacket *pkt); +int ff_mediacodec_dec_send(AVCodecContext *avctx, + MediaCodecDecContext *s, + AVPacket *pkt, + bool wait); + +int ff_mediacodec_dec_receive(AVCodecContext *avctx, + MediaCodecDecContext *s, + AVFrame *frame, + bool wait); int ff_mediacodec_dec_flush(AVCodecContext *avctx, MediaCodecDecContext *s); @@ -90,6 +102,7 @@ typedef struct MediaCodecBuffer { ssize_t index; int64_t pts; atomic_int released; + int serial; } MediaCodecBuffer;