diff options
author | Zhao Zhili <zhilizhao@tencent.com> | 2022-11-24 00:49:25 +0800 |
---|---|---|
committer | Zhao Zhili <zhilizhao@tencent.com> | 2022-12-08 23:52:39 +0800 |
commit | a63834b236c17eae72faf23aebcba32f911809e6 (patch) | |
tree | f8caca1863df9ce0b064d270409392b473d42676 /libavcodec/mediacodec_wrapper.h | |
parent | f0f19f3d3d58eb9030fdf54884c5ea94e5481604 (diff) | |
download | ffmpeg-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.h | 24 |
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 { |