主题 : 6410 MFC  硬解码 H264 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 35256
精华: 0
发帖: 15
金钱: 75 两
威望: 15 点
贡献值: 0 点
综合积分: 30 分
注册时间: 2010-12-29
最后登录: 2018-02-08
楼主  发表于: 2011-05-27 18:02

 6410 MFC  硬解码 H264

请教个问题,我的MFC 输入的第一帧数据是一个完整的 IDR FRAME,得到的输出图像不正确,如果同样的数据送给FFMPEG 的 avcodec_decode_video2 是可以得到正确的图像的。请问MFC 的输入时需要对数据做处理吗。
我的数据源是用RTP 从PC 传过来的,组包后,将各个 FRAME 存成连续的文件,用STREAM EYE 是可以正常播放的,
看了下文件信息,每个包的起始均是 00 00 00 01 ,STREAM EYE提示的每帧长度也是同我的每个包长度一致的,
请看下面代码的蓝色部分,是不是我送给MFC的数据不应该是整个 FRAME ,要提前处理么?

static void *DecodeVideoh264Stream(void* pkt,long *size)
{

long framesize = 0;
void *VideoBuffer = NULL;
int GotPicture = 0;
if(size)
*size = framesize;

memcpy(Ocx.m_pHwVideoStreamBuffer,pkt1->size);

if(HwDecodeExe(Ocx.m_bOpenHWHandle, pkt1->size + offsetHw - offsetPk) >= 0)
{
VideoBuffer = (void*)HwDecodeOutBuffer(Ocx.m_bOpenHWHandle,&framesize);

ms_warning("FRANK: OK: HwDecodeOutBuffer \n");
}
else
{
ms_warning("FRANK: ERROR: HwDecodeOutBuffer \n");
HwDecodeDeInit(Ocx.m_bOpenHWHandle);
Ocx.m_bOpenHWHandle = NULL;
Ocx.m_bHEnable = FALSE;
Ocx.m_bHWFormat = SSBSIPMFCDEC_NONE;
//// Ocx.m_pHwVideoStreamBuffer = (uint8_t*)CMMAllocMemory(Ocx.m_bVideoBufferSize);
if(!Ocx.m_pHwVideoStreamBuffer)
{
av_free_packet(pkt1);
return NULL;
}
goto SoftDec;
}
}
}
else
SoftDec:
{
#if 0
AVFrame *AVFrameUse = avcodec_alloc_frame();
void *SrcData = pkt1->data;
avcodec_decode_video2(Ocx.m_pVideoSt->codec, AVFrameUse, &GotPicture, pkt1);
if (GotPicture != 0)
{
framesize = Ocx.m_bVideoBufferSize;
VideoBuffer = (void*)Ocx.m_pHwVideoStreamBuffer;
}

Ocx.m_bRepeat = AVFrameUse->repeat_pict;
pkt1->data = SrcData;
av_free(AVFrameUse);
#endif
}

if(size)
*size = framesize;
av_free_packet(pkt1);

return VideoBuffer;
}



级别: 新手上路
UID: 35256
精华: 0
发帖: 15
金钱: 75 两
威望: 15 点
贡献值: 0 点
综合积分: 30 分
注册时间: 2010-12-29
最后登录: 2018-02-08
1楼  发表于: 2011-05-27 18:02

 回 楼主(zhengyuming) 的帖子

仔细跟踪了一下第一个IDR FRAME,
NALU TYPE 7 SPS 长度为 23 ,添加 00 00 00 01 后送解码器处理,
NALU TYPE 8 PPS 长度为 2 ,同样添加送解码器,
NALU TYPE 6 SEI 长度为 673 ,同上处理
其余 NALU TYPE 均为 5 ,合并为一个缓冲后,交解码器处理,结果不对。

后面的 FRAME 的 NALU_TYPE 均为 1,不分区,非 IDR图像的 SLICES,合并送解码器,

请问,是否需要将以上各NAL 类型单独送MFC 进行初始化,再处理具体的SLICES。

当然,比较理想的方法是在 FFMPEG 中添加 HW ACCL ,可惜没研究过 FFMPEG 的代码 。
级别: 新手上路
UID: 46764
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 36 分
注册时间: 2011-05-16
最后登录: 2017-09-13
2楼  发表于: 2011-06-09 14:32

 Re:6410 MFC 硬解码 H264

兄弟你好,我也买了友善之比的板子,无奈它们的多媒体驱动不开源,我现在移植的很吃力,兄弟搞好了吗?能否把你移植好该驱动的内核给我发一份。
谢谢你!我的QQ279470403
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
贡献值: 27 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
3楼  发表于: 2011-06-09 14:43

 Re:Re:6410 MFC 硬解码 H264

引用第2楼yurong1999于2011-06-09 14:32发表的 Re:6410 MFC 硬解码 H264 :
兄弟你好,我也买了友善之比的板子,无奈它们的多媒体驱动不开源,我现在移植的很吃力,兄弟搞好了吗?能否把你移植好该驱动的内核给我发一份。
谢谢你!我的QQ279470403

linux-2.6.28内核中的多媒体驱动是开源的,可以用作开发参考。
虽然其他公司号称开源(36内核中),实际上他们的是不可用的,那样的开源跟参考28内核没有什么区别。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 35256
精华: 0
发帖: 15
金钱: 75 两
威望: 15 点
贡献值: 0 点
综合积分: 30 分
注册时间: 2010-12-29
最后登录: 2018-02-08
4楼  发表于: 2011-08-29 11:25

 Re:6410 MFC 硬解码 H264

有些时间没到这个论坛了,那个打包的内核应该可以用的,不过他们移植的PP 有些问题,不要反复打开关闭。已加你QQ 了。
其实 28 上他们也是从别的地方弄过来的,看看编译的配置文件就明白了。
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
贡献值: 27 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
5楼  发表于: 2011-08-29 11:43

 Re:Re:6410 MFC 硬解码 H264

引用第4楼zhengyuming于2011-08-29 11:25发表的 Re:6410 MFC 硬解码 H264 :
有些时间没到这个论坛了,那个打包的内核应该可以用的,不过他们移植的PP 有些问题,不要反复打开关闭。已加你QQ 了。
其实 28 上他们也是从别的地方弄过来的,看看编译的配置文件就明白了。


多媒体驱动本来就是三星原厂提供的,我们从未声称是自己做的多媒体驱动,其他任何第三方都不可能从datasheet从零开始摸索出多媒体驱动。

经过几次升级,我们移植的38内核多媒体驱动已经完善很多了,否则也不可能实现流畅的缩放播放,你out了
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 骑士
UID: 42149
精华: 2
发帖: 201
金钱: 1115 两
威望: 223 点
贡献值: 2 点
综合积分: 442 分
注册时间: 2011-04-05
最后登录: 2013-03-29
6楼  发表于: 2011-08-30 17:40

 Re:6410 MFC 硬解码 H264

移植的多媒体驱动开源吗?
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
贡献值: 27 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
7楼  发表于: 2011-08-30 17:41

 Re:Re:6410 MFC 硬解码 H264

引用第6楼tingjie于2011-08-30 17:40发表的 Re:6410 MFC 硬解码 H264 :
移植的多媒体驱动开源吗?


我们移植的多媒体驱动是不开源的,但不会影响用户开发。

学习驱动原理图,可以参考28内核。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 127522
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
贡献值: 0 点
综合积分: 10 分
注册时间: 2016-08-23
最后登录: 2017-06-22
8楼  发表于: 2016-09-06 11:57

 Re:6410 MFC  硬解码 H264

38的内核代码编译之后没有h264硬解码,光盘提供的zImage有,为啥?