Skip to content

Commit fa0080b

Browse files
committed
avcodec/ohenc: Add h264/hevc OpenHarmony encoders
1 parent e7f44f8 commit fa0080b

File tree

8 files changed

+732
-3
lines changed

8 files changed

+732
-3
lines changed

Changelog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ version <next>:
2323
- pad_cuda filter
2424
- Sanyo LD-ADPCM decoder
2525
- APV in MP4/ISOBMFF demuxing
26+
- OpenHarmony hardware decoder/encoder
2627

2728

2829
version 7.1:

configure

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3413,6 +3413,7 @@ h264_nvenc_encoder_deps="nvenc"
34133413
h264_nvenc_encoder_select="atsc_a53"
34143414
h264_oh_decoder_deps="ohcodec"
34153415
h264_oh_decoder_select="h264_mp4toannexb_bsf"
3416+
h264_oh_encoder_deps="ohcodec"
34163417
h264_omx_encoder_deps="omx"
34173418
h264_qsv_decoder_select="h264_mp4toannexb_bsf qsvdec"
34183419
h264_qsv_encoder_select="atsc_a53 qsvenc"
@@ -3437,6 +3438,7 @@ hevc_nvenc_encoder_deps="nvenc"
34373438
hevc_nvenc_encoder_select="atsc_a53"
34383439
hevc_oh_decoder_deps="ohcodec"
34393440
hevc_oh_decoder_select="hevc_mp4toannexb_bsf"
3441+
hevc_oh_encoder_deps="ohcodec"
34403442
hevc_qsv_decoder_select="hevc_mp4toannexb_bsf qsvdec"
34413443
hevc_qsv_encoder_select="hevcparse qsvenc"
34423444
hevc_rkmpp_decoder_deps="rkmpp"
@@ -7177,8 +7179,9 @@ enabled mmal && { check_lib mmal interface/mmal/mmal.h mmal_port_co
71777179
check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } ||
71787180
die "ERROR: mmal not found" &&
71797181
check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; }
7180-
enabled ohcodec && { check_lib ohcodec "multimedia/player_framework/native_avcodec_videodecoder.h" \
7181-
OH_VideoDecoder_CreateByName -lnative_media_codecbase -lnative_media_core -lnative_media_vdec ||
7182+
enabled ohcodec && { check_lib ohcodec "multimedia/player_framework/native_avcodec_videodecoder.h multimedia/player_framework/native_avcodec_videoencoder.h" \
7183+
"OH_VideoDecoder_CreateByName OH_VideoEncoder_CreateByName" \
7184+
-lnative_media_vdec -lnative_media_venc -lnative_media_codecbase -lnative_media_core -lnative_window ||
71827185
die "ERROR: missing native_media libs"; }
71837186
enabled openal && { check_pkg_config openal "openal >= 1.1" "AL/al.h" alGetError ||
71847187
{ for al_extralibs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do

libavcodec/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,7 @@ OBJS-$(CONFIG_H264_MF_ENCODER) += mfenc.o mf_utils.o
429429
OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o
430430
OBJS-$(CONFIG_H264_NVENC_ENCODER) += nvenc_h264.o nvenc.o
431431
OBJS-$(CONFIG_H264_OH_DECODER) += ohcodec.o ohdec.o
432+
OBJS-$(CONFIG_H264_OH_ENCODER) += ohcodec.o ohenc.o
432433
OBJS-$(CONFIG_H264_OMX_ENCODER) += omx.o
433434
OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec.o
434435
OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o
@@ -458,6 +459,7 @@ OBJS-$(CONFIG_HEVC_MEDIACODEC_ENCODER) += mediacodecenc.o
458459
OBJS-$(CONFIG_HEVC_MF_ENCODER) += mfenc.o mf_utils.o
459460
OBJS-$(CONFIG_HEVC_NVENC_ENCODER) += nvenc_hevc.o nvenc.o
460461
OBJS-$(CONFIG_HEVC_OH_DECODER) += ohcodec.o ohdec.o
462+
OBJS-$(CONFIG_HEVC_OH_ENCODER) += ohcodec.o ohenc.o
461463
OBJS-$(CONFIG_HEVC_QSV_DECODER) += qsvdec.o
462464
OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc/ps_enc.o
463465
OBJS-$(CONFIG_HEVC_RKMPP_DECODER) += rkmppdec.o

libavcodec/allcodecs.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,7 @@ extern const FFCodec ff_h264_cuvid_decoder;
861861
extern const FFCodec ff_h264_mf_encoder;
862862
extern const FFCodec ff_h264_nvenc_encoder;
863863
extern const FFCodec ff_h264_oh_decoder;
864+
extern const FFCodec ff_h264_oh_encoder;
864865
extern const FFCodec ff_h264_omx_encoder;
865866
extern const FFCodec ff_h264_qsv_encoder;
866867
extern const FFCodec ff_h264_v4l2m2m_encoder;
@@ -876,6 +877,7 @@ extern const FFCodec ff_hevc_mediacodec_encoder;
876877
extern const FFCodec ff_hevc_mf_encoder;
877878
extern const FFCodec ff_hevc_nvenc_encoder;
878879
extern const FFCodec ff_hevc_oh_decoder;
880+
extern const FFCodec ff_hevc_oh_encoder;
879881
extern const FFCodec ff_hevc_qsv_encoder;
880882
extern const FFCodec ff_hevc_v4l2m2m_encoder;
881883
extern const FFCodec ff_hevc_vaapi_encoder;

libavcodec/ohcodec.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,11 @@ enum AVPixelFormat ff_oh_pix_to_ff_pix(OH_AVPixelFormat oh_pix)
6969
return AV_PIX_FMT_NONE;
7070
}
7171

72+
int ff_oh_pix_from_ff_pix(enum AVPixelFormat pix)
73+
{
74+
for (size_t i = 0; i < FF_ARRAY_ELEMS(oh_pix_map); i++)
75+
if (oh_pix_map[i].pix == pix)
76+
return oh_pix_map[i].oh_pix;
77+
78+
return 0;
79+
}

libavcodec/ohcodec.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,6 @@ static inline const char *ff_oh_mime(enum AVCodecID codec_id, void *log)
5252
}
5353

5454
enum AVPixelFormat ff_oh_pix_to_ff_pix(OH_AVPixelFormat oh_pix);
55+
int ff_oh_pix_from_ff_pix(enum AVPixelFormat pix);
5556

5657
#endif

0 commit comments

Comments
 (0)