ffmpeg | branch: master | sfan5 <sf...@live.de> | Mon Dec 13 21:56:05 2021 
+0100| [b32b32ba89b564e33c6ee0d7a17b80b5e56b6b73] | committer: Jan Ekström

lavc/mediacodecdec: set codec profile and level from extradata for H264+HEVC

This value is later passed to MediaCodec and checked at decoder init.
Notably decoding of 10-bit streams before this commit would "work" without
returning errors but only return garbage output (on most Android devices).

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b32b32ba89b564e33c6ee0d7a17b80b5e56b6b73
---

 libavcodec/mediacodecdec.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c
index 1cebb3d76d..04d5026e68 100644
--- a/libavcodec/mediacodecdec.c
+++ b/libavcodec/mediacodecdec.c
@@ -155,6 +155,9 @@ static int h264_set_extradata(AVCodecContext *avctx, 
FFAMediaFormat *format)
         uint8_t *data = NULL;
         int data_size = 0;
 
+        avctx->profile = ff_h264_get_profile(sps);
+        avctx->level = sps->level_idc;
+
         if ((ret = h2645_ps_to_nalu(sps->data, sps->data_size, &data, 
&data_size)) < 0) {
             goto done;
         }
@@ -236,6 +239,9 @@ static int hevc_set_extradata(AVCodecContext *avctx, 
FFAMediaFormat *format)
         uint8_t *data;
         int data_size;
 
+        avctx->profile = sps->ptl.general_ptl.profile_idc;
+        avctx->level   = sps->ptl.general_ptl.level_idc;
+
         if ((ret = h2645_ps_to_nalu(vps->data, vps->data_size, &vps_data, 
&vps_data_size)) < 0 ||
             (ret = h2645_ps_to_nalu(sps->data, sps->data_size, &sps_data, 
&sps_data_size)) < 0 ||
             (ret = h2645_ps_to_nalu(pps->data, pps->data_size, &pps_data, 
&pps_data_size)) < 0) {

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to