#include <stdint.h>
#include <stdatomic.h>
+#include <stdbool.h>
#include <sys/types.h>
#include "libavutil/frame.h"
typedef struct MediaCodecDecContext {
+ AVCodecContext *avctx;
atomic_int refcount;
+ atomic_int hw_buffer_count;
char *codec_name;
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;
+ bool delay_flush;
+ atomic_int serial;
+
} MediaCodecDecContext;
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);
+
+int ff_mediacodec_dec_receive(AVCodecContext *avctx,
+ MediaCodecDecContext *s,
+ AVFrame *frame,
+ bool wait);
int ff_mediacodec_dec_flush(AVCodecContext *avctx,
MediaCodecDecContext *s);
ssize_t index;
int64_t pts;
atomic_int released;
+ int serial;
} MediaCodecBuffer;