- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Hi,
I want encode yuv frames from camera to h264.
Where in pipeline_encode i should fix it?
May be you have example?
Best regards Viktor.
링크가 복사됨
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Hi Viktor,
Can you provide more details regarding this issue ?
1. Which OS are you using ? Linux or Windows ?
2. What is Driver and MSDK version ?
3. What is MSDK samples version ?
4. What is special YUV format output by your camera ? NV12 ?
Thanks
Zachary
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Here is my system:
Linux Samples 6.0.160431175.175 sample_encode with pipeline model.
MediaServerStudio Essentials 2015 R6
CentOS 7 kernel 229.
Intel® 4th generation Core™ i7-4770R
Intel® Iris™ Pro graphics 5200
I grab RGB frames from camera to the IPP function. So i can convert them to NV12, but may be it is possible pass 8UC3R ipp image to the MSDK surface?
Please help me.
Best regards Viktor.
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Hi Viktor,
First we can found NV12 is supported as "SDK function input" in Table 8 in page 26 in Intel Media SDK
So MSDK encode need NV12 as input. I think you need convert frames to NV12.
How to find a good way to do the conversion ? I don't know what do you think of ?
Can you explain some details regarding 8UC3R ? It looks like 8UC3R is not supported by MSDK.
Thanks,
Zachary
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Hi Viktor,
You can convert RGBA to NV12 with VPP.
Alternately, you can use IPP to convert RGB24 to NV12 like this:
// read RGB data
for (int i = 0; i < inputHeight; i++) {
nBytesRead = (mfxU32)fread(pRGB + i * stridesrcRGB, 3, inputWidth, fSource);
}
// convert RGB24 to NV12
ippiRGBToYCbCr420_8u_C3P2R(
pRGB,stridesrcRGB,
pEncSurfaces[nEncSurfIdx]->Data.Y, pEncSurfaces[nEncSurfIdx]->Data.Pitch,
pEncSurfaces[nEncSurfIdx]->Data.UV,pEncSurfaces[nEncSurfIdx]->Data.Pitch,
srcsizeY);
for (;;) {
// Encode a frame asychronously (returns immediately)
sts = mfxENC.EncodeFrameAsync(NULL, pEncSurfaces[nEncSurfIdx], &mfxBS, &syncp);
//... (check normal state machine cases here
}
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Hi Viktor,
It looks like you have got your answer. I am closing the thread, please do a new post if you have other questions.
Thanks,
Zachary