mirror of
https://github.com/openharmony/drivers_peripheral.git
synced 2026-08-24 18:15:56 -04:00
feat: Add extend for HEVC and MPEG4
Signed-off-by: qijinquan <qijinquan@kaihong.com>
This commit is contained in:
@@ -59,7 +59,9 @@ static AvCodecMime ConvertVideoCodingTypeToMimeType(int32_t codingType)
|
||||
case CODEC_OMX_VIDEO_CodingHEVC:
|
||||
codecMime = MEDIA_MIMETYPE_VIDEO_HEVC;
|
||||
break;
|
||||
|
||||
case OMX_VIDEO_CodingMPEG4:
|
||||
codecMime = MEDIA_MIMETYPE_VIDEO_MPEG4;
|
||||
break;
|
||||
default:
|
||||
HDF_LOGW("%{public}s warn, unsupport codingType[%{public}d]", __func__, codingType);
|
||||
break;
|
||||
@@ -97,6 +99,9 @@ static int32_t ConvertMimeTypeToCodingType(AvCodecMime mimeType)
|
||||
case MEDIA_MIMETYPE_VIDEO_HEVC:
|
||||
codingType = CODEC_OMX_VIDEO_CodingHEVC;
|
||||
break;
|
||||
case MEDIA_MIMETYPE_VIDEO_MPEG4:
|
||||
codingType = OMX_VIDEO_CodingMPEG4;
|
||||
break;
|
||||
case MEDIA_MIMETYPE_AUDIO_PCM:
|
||||
codingType = OMX_AUDIO_CodingPCM;
|
||||
break;
|
||||
|
||||
@@ -65,6 +65,8 @@ typedef enum {
|
||||
MEDIA_ROLETYPE_VIDEO_AVC,
|
||||
/** H.265 video */
|
||||
MEDIA_ROLETYPE_VIDEO_HEVC,
|
||||
/** MPEG4 video */
|
||||
MEDIA_ROLETYPE_VIDEO_MPEG4,
|
||||
/** Audio codec */
|
||||
MEDIA_ROLETYPE_AUDIO_FIRST = 0x10000,
|
||||
/** Advanced Audio Coding (AAC) */
|
||||
|
||||
@@ -24,15 +24,63 @@ extern "C" {
|
||||
/**
|
||||
* @brief Enumerates the extended codec codingtyps.
|
||||
*/
|
||||
enum CodecOmxVideoExType {
|
||||
enum CodecVideoExType {
|
||||
CODEC_OMX_VIDEO_CodingHEVC = 11, /** HEVC Index in Codec HDI */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Enumerates the extended HEVC profile.
|
||||
*/
|
||||
enum CodecHevcProfile {
|
||||
CODEC_HEVC_PROFILE_INVALID = 0x0,
|
||||
CODEC_HEVC_PROFILE_MAIN = 0x1,
|
||||
CODEC_HEVC_PROFILE_MAIN10 = 0x2,
|
||||
CODEC_HEVC_PROFILE_MAIN_STILL = 0x3,
|
||||
// main_10 profile with HDR SEI support.
|
||||
CODEC_HEVC_PROFILE_MAIN10_HDR10 = 0x1000,
|
||||
CODEC_HEVC_PROFILE_MAIN10_HDR10_PLUS = 0x2000,
|
||||
CODEC_HEVC_PROFILE_MAX = 0x7FFFFFFF
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Enumerates the extended HEVC level.
|
||||
*/
|
||||
enum CodecHevcLevel {
|
||||
CODEC_HEVC_LEVEL_INVALID = 0x0,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL1 = 0x1,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL1 = 0x2,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL2 = 0x4,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL2 = 0x8,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL21 = 0x10,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL21 = 0x20,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL3 = 0x40,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL3 = 0x80,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL31 = 0x100,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL31 = 0x200,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL4 = 0x400,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL4 = 0x800,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL41 = 0x1000,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL41 = 0x2000,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL5 = 0x4000,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL5 = 0x8000,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL51 = 0x10000,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL51 = 0x20000,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL52 = 0x40000,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL52 = 0x80000,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL6 = 0x100000,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL6 = 0x200000,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL61 = 0x400000,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL61 = 0x800000,
|
||||
CODEC_HEVC_MAIN_TIER_LEVEL62 = 0x1000000,
|
||||
CODEC_HEVC_HIGH_TIER_LEVEL62 = 0x2000000,
|
||||
CODEC_HEVC_HIGH_TIER_MAX = 0x7FFFFFFF
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Enumerates the extended codec color format.
|
||||
*/
|
||||
enum CodecOmxColorFormatExt {
|
||||
CODEC_OMX_COLOR_FORMAT_RGBA8888 = OMX_COLOR_FormatVendorStartUnused + 100,
|
||||
enum CodecColorFormatExt {
|
||||
CODEC_COLOR_FORMAT_RGBA8888 = OMX_COLOR_FormatVendorStartUnused + 100,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -130,7 +178,24 @@ enum OmxIndexCodecExType {
|
||||
OMX_IndexParamControlRateConstantQuality,
|
||||
/** PassthroughParam */
|
||||
OMX_IndexParamPassthrough,
|
||||
/** OMX_IndexParamVideoHevc */
|
||||
OMX_IndexParamVideoHevc,
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Structure for controlling HEVC video encoding
|
||||
*/
|
||||
struct CodecVideoParamHevc {
|
||||
uint32_t size; /** Size of the structure */
|
||||
union OMX_VERSIONTYPE version; /** Component version */
|
||||
uint32_t portIndex; /** Port index */
|
||||
enum CodecHevcProfile profile; /** Hevc profile. For details, see {@link CodecHevcProfile}. */
|
||||
enum CodecHevcLevel level; /** Hevc level. For details, see {@link CodecHevcLevel}. */
|
||||
uint32_t keyFrameInterval; /** Distance between consecutive I-frames (including one of the I frams).
|
||||
0 means interval is unspecified and can be freely chosen by the codec.
|
||||
1 means a stream of only I frams. other means the real value. */
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
|
||||
@@ -230,7 +230,7 @@ typedef enum {
|
||||
MEDIA_MIMETYPE_IMAGE_JPEG = 0, /**< JPEG image */
|
||||
MEDIA_MIMETYPE_VIDEO_AVC, /**< H.264 video */
|
||||
MEDIA_MIMETYPE_VIDEO_HEVC, /**< H.265 video */
|
||||
|
||||
MEDIA_MIMETYPE_VIDEO_MPEG4, /**< MPEG4 video */
|
||||
MEDIA_MIMETYPE_AUDIO_FIRST = 0x10000, /**< Dummy id pointing at the start of audio codecs */
|
||||
MEDIA_MIMETYPE_AUDIO_AAC = 0x10000, /**< AAC audio */
|
||||
MEDIA_MIMETYPE_AUDIO_G711A, /**< G711A audio */
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace {
|
||||
constexpr const char *ENCODER_AVC = "OMX.rk.video_encoder.avc";
|
||||
}
|
||||
|
||||
#define AV_COLOR_FORMAT (OMX_COLOR_FORMATTYPE)CODEC_OMX_COLOR_FORMAT_RGBA8888
|
||||
#define AV_COLOR_FORMAT (OMX_COLOR_FORMATTYPE)CODEC_COLOR_FORMAT_RGBA8888
|
||||
|
||||
static CodecHdiEncode *g_core = nullptr;
|
||||
CodecHdiEncode::CodecHdiEncode() : fpIn_(nullptr), fpOut_(nullptr)
|
||||
|
||||
Reference in New Issue
Block a user