summaryrefslogtreecommitdiff
path: root/libavcodec/mediacodec_wrapper.h
diff options
context:
space:
mode:
authorZhao Zhili <zhilizhao@tencent.com>2022-11-24 00:49:25 +0800
committerZhao Zhili <zhilizhao@tencent.com>2022-12-08 23:52:39 +0800
commita63834b236c17eae72faf23aebcba32f911809e6 (patch)
treef8caca1863df9ce0b064d270409392b473d42676 /libavcodec/mediacodec_wrapper.h
parentf0f19f3d3d58eb9030fdf54884c5ea94e5481604 (diff)
downloadffmpeg-a63834b236c17eae72faf23aebcba32f911809e6.tar.gz
avcodec/mediacodec: fix missing crop info when use NDK MediaCodec
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Diffstat (limited to 'libavcodec/mediacodec_wrapper.h')
-rw-r--r--libavcodec/mediacodec_wrapper.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/libavcodec/mediacodec_wrapper.h b/libavcodec/mediacodec_wrapper.h
index f15ad66d83..1b81e6db84 100644
--- a/libavcodec/mediacodec_wrapper.h
+++ b/libavcodec/mediacodec_wrapper.h
@@ -73,12 +73,18 @@ struct FFAMediaFormat {
int (*getFloat)(FFAMediaFormat* format, const char *name, float *out);
int (*getBuffer)(FFAMediaFormat* format, const char *name, void** data, size_t *size);
int (*getString)(FFAMediaFormat* format, const char *name, const char **out);
+ // NDK only, introduced in API level 28
+ int (*getRect)(FFAMediaFormat *, const char *name,
+ int32_t *left, int32_t *top, int32_t *right, int32_t *bottom);
void (*setInt32)(FFAMediaFormat* format, const char* name, int32_t value);
void (*setInt64)(FFAMediaFormat* format, const char* name, int64_t value);
void (*setFloat)(FFAMediaFormat* format, const char* name, float value);
void (*setString)(FFAMediaFormat* format, const char* name, const char* value);
void (*setBuffer)(FFAMediaFormat* format, const char* name, void* data, size_t size);
+ // NDK only, introduced in API level 28
+ void (*setRect)(FFAMediaFormat*, const char* name,
+ int32_t left, int32_t top, int32_t right, int32_t bottom);
};
FFAMediaFormat *ff_AMediaFormat_new(int ndk);
@@ -118,6 +124,14 @@ static inline int ff_AMediaFormat_getString(FFAMediaFormat* format, const char *
return format->getString(format, name, out);
}
+static inline int ff_AMediaFormat_getRect(FFAMediaFormat *format, const char *name,
+ int32_t *left, int32_t *top, int32_t *right, int32_t *bottom)
+{
+ if (!format->getRect)
+ return AVERROR_EXTERNAL;
+ return format->getRect(format, name, left, top, right, bottom);
+}
+
static inline void ff_AMediaFormat_setInt32(FFAMediaFormat* format, const char* name, int32_t value)
{
format->setInt32(format, name, value);
@@ -143,6 +157,16 @@ static inline void ff_AMediaFormat_setBuffer(FFAMediaFormat* format, const char*
format->setBuffer(format, name, data, size);
}
+static inline void ff_AMediaFormat_setRect(FFAMediaFormat* format, const char* name,
+ int32_t left, int32_t top, int32_t right, int32_t bottom)
+{
+ if (!format->setRect) {
+ av_log(format, AV_LOG_WARNING, "Doesn't support setRect\n");
+ return;
+ }
+ format->setRect(format, name, left, top, right, bottom);
+}
+
typedef struct FFAMediaCodecCryptoInfo FFAMediaCodecCryptoInfo;
struct FFAMediaCodecBufferInfo {