- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I am trying to use decoder to decode mpeg2 video stream.I use the sample_decode in MediaSamples_Linux_6.0.16043175.175.
First, i try to run the sample_decode like: ./sample_decode_drm mpeg2 -i test.mpg -o output.yuv -hw. It works well.
Then, i run the sample_decode's code to decode the stream.It works well when i set initPar.Implementation = MFX_IMPL_SOFTWARE.If i set initPar.Implementation = MFX_IMPL_HARDWARE,it returns on error at sts = m_pmfxDEC->Init(&m_mfxVideoParams) with error code -15.
Here is some informations about my system.
[xc@localhost x64]$ uname -r
3.10.0-229.1.2.39163.MSSr4.el7.centos.x86_64
[xc@localhost x64]$ ls -l /dev/dri/
total 0
crw-rw----+ 1 root video 226, 0 1月 14 17:08 card0
crw-------. 1 root video 226, 64 1月 14 17:08 controlD64
crw-rw----. 1 root video 226, 128 1月 14 17:08 renderD128
[xc@localhost x64]$ vainfo
libva info: VA-API version 0.35.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'iHD'
libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.35 (libva 1.3.1)
vainfo: Driver version: 16.4.2.1.39163-ubit
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : <unknown entrypoint>
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Baseline : VAEntrypointEncSlice
VAProfileH264Baseline : <unknown entrypoint>
VAProfileH264Baseline : <unknown entrypoint>
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : <unknown entrypoint>
VAProfileH264Main : <unknown entrypoint>
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : <unknown entrypoint>
VAProfileH264High : <unknown entrypoint>
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: <unknown entrypoint>
VAProfileH264ConstrainedBaseline: <unknown entrypoint>
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : <unknown entrypoint>
Thanks.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi There,
Because sample_decode works well for, I think your MSS setup okay.
The error -15 you can find it in mfxdefs.h
MFX_ERR_INVALID_VIDEO_PARAM = -15, /* invalid video parameters */
Have you check your setting of m_mfxVideoParams ?
Have you notice following in your code ?
// in case of HW accelerated decode frames must be allocated prior to decoder initialization
sts = AllocFrames();
MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, sts);
Thanks,
Zachary
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zachary,
1.I think the setting of m_mfxVideoParams is right because i only set pParams->videoType = MFX_CODEC_MPEG2 and initPar.Implementation = MFX_IMPL_HARDWARE.It works well when i set initPar.Implementation = MFX_IMPL_SOFTWARE.
2.It has no error before the sts = m_pmfxDEC->Init(&m_mfxVideoParams).Here is part of the code.
// create device and allocator
sts = CreateAllocator();
MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, sts);
// in case of HW accelerated decode frames must be allocated prior to decoder initialization
sts = AllocFrames();
MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, sts);
sts = m_pmfxDEC->Init(&m_mfxVideoParams);
if (MFX_WRN_PARTIAL_ACCELERATION == sts)
{
msdk_printf(MSDK_STRING("WARNING: partial acceleration\n"));
MSDK_IGNORE_MFX_STS(sts, MFX_WRN_PARTIAL_ACCELERATION);
}
MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, sts);
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Can you debug the programs and compare the different m_mfxVideoParams between your program and sample_decode when decode mpeg2 ? Because sample_decode works for you, so you can make it as your reference.
Thanks,
Zachary
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zachary,
I get some settings of m_mfxVideoParams and compare it with the sample_decode.They are all the same.
reserved[0] = 0, reserved[1] = 0, reserved[2] = 0, reserved3 = 0,
AsyncDepth = 4,Protected = 0, IOPattern = 32, NumExtParam = 0, reserved2 = 0,
INFOMFX: LowPower =0 , BRCParamMultiplier =0, CodeId = 843534413, CodecProfile = 64,
CodecLevel = 8, NumThread = 0, DecodedOrder = 0, ExtendedPicStruct = 0,
TimeStampCalc = 0, SliceGroupsPresent = 0, MaxDecFrameBuffering = 0, reserved2[0] = 0.
Is there some settings different between software and hardware?I don't know why it works well in software mode.
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
There are a table list which parameter should be set when do the decode in page 195 Intel Media SDK, Can you also check decode part of this table.
Another, there is MSDK /opt/intel/mediasdk/tools/tracer for trace MSDK parameter, you can reference README in /opt/intel/mediasdk/tools/tracer. use this tool you can compare the parameters between your parameter and MSDK sample_decode
Thanks,
Zachary
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page