Hi,
I run sample_encode on windows. I set the command arguments as follows:
h265 -i D:\yuv\rpd_720p_slow.yuv -o output.h265 -w 1280 -h 720 -b 10000 -nobref -x 1 -u speed -p e5400a06c74d41f5b12d430bbaa23d0b
I expect hevc encoder output I P P P P P P...., but it's output is I BBBBBB. and the number of reference frame is not 1.
I saw the document Intel® Media Server Studio 2016 - HEVC Decoder and Encoder Release Notes, it says:
H.265 MAIN SP profile is not supported in current implementation.
Real-time encoding not guaranteed.
My question is :
Is p frame supported by Hevc encoder ? Or how can i set the number of reference frames of B frame to 1?
Link Copied
I've replicated the behavior you've described. Hope to get back to you in a day or two with some updates and recommendations.
Hi qiufang,
We don't have a public API to not encode B frames for HEVC codec, included as a new feature in our next release. we have a workaround at the moment, will send you that by end of the day.
Thanks,
Surbhi
Hi, Jeffrey and Surbhi.
Thank both of you.
Glad to help! Just wanted to add, on the subject of reference counts:
The NumRefFrame parameter works differently for H264 and HEVC. With HEVC, references are based on pyramid hierarchy, not the NumRefFrame setting.
Thanks for your information and for being helpful.
Jeffrey Mcallister (Intel) wrote:
Glad to help! Just wanted to add, on the subject of reference counts:
The NumRefFrame parameter works differently for H264 and HEVC. With HEVC, references are based on pyramid hierarchy, not the NumRefFrame setting.
Any update for this? Right now, the HEVC encoder marks all the P frames as B frames. The only indication that you have a P frame is that the slice_pic_order_cnt_lsb value jumps ahead for P frames.
For example, if I indicate I want a GOP size of 5 and distance between reference frame of 2:
GopPicSize=5
GopRefDist=2
I get the following output (I listed the values of slice type and slice_pic_order_cnt_lsb from the output):
slice type slice_pic_order_cnt_lsb
I 0
B 2
B 1
B 4
B 3
I 5
But I should get
I 0
P 2
B 1
P 4
B 3
I 5
Hello,
I use last Media sdk (MediaServerStudioEssentials2017R2) under linux .
This is a bug..
in mediasdk-man.pdf we are advised to configure GopOptFlag value to MFX_GOP_STRICT . It does not work for to configure my hevc encoder.
The encoder must strictly follow the given GOP structure as
defined by parameter GopPicSize, GopRefDist
How fix it ? thank in avance
Have you solved this problem?
I'm experiencing the same 'problem'
Media SDK 20.5.1
Installed like this ->
https://github.com/Unit-X/Intel-MSDK-Ubuntu20-04-Installer
System Ubuntu 20.04
$uname -a
5.4.0-59-generic #65-Ubuntu SMP Thu Dec 10 12:01:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$cat /proc/cpuinfo ->
model name : Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz
I set
IdrInterval = 0
GopOptFlag = 0
GopRefDist = 1-4 (meaning I changed this parameter from 1 to 4)
GopPicSize = 30
This produces as expected a IDR with a distance of 30 frames however when looking at the codestream all other pictures are marked as slice_type==0 meaning B frame slice.
Is that correct behaviour for coding HEVC? What parameter in the codestream should I look for indicating there is a reference frame according to the setting GopRefDist?
Is there a better or updated example for controlling the GOP structure apart from 'example 17' as referred too in the documentation.
Thanks for helping.
/Anders
For more complete information about compiler optimizations, see our Optimization Notice.