FFvcl(FFmpeg for delphi vcl)在cb中使用的问题

hyz_cs 2014-02-26 10:18:55
控件头文件FFPlayer.hpp中有以下红色部分

typedef void __fastcall (__closure *TVideoHookEvent)(System::TObject* Sender, Graphics::TBitmap* ABitmap, const __int64 APTS, bool &AUpdate);


但是双击控件事件自动创建的函数中是没有的,如下

void __fastcall TForm1::fplyr1VideoHook(TObject *Sender, TBitmap *ABitmap, const __int64 APTS,
bool &AUpdate)

现在编译会出现如下错误

[BCC32 Error] Unit1.h(29): E2015 Ambiguity between 'TBitmap' and 'Windows::TBitmap'
Full parser context
Unit1.cpp(6): #include Unit1.h
Unit1.h(17): class TForm1

-------------------------------------------------------

如果手动在Unit1.h和Unit1.cpp中添加"Graphics::"编译是没问题,不过控件的onVideoHook事件自动被清空掉,可能是类型不对关联不上了吧,这个要怎么解决?

...全文
698 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyz_cs 2014-03-11
  • 打赏
  • 举报
回复
引用 16 楼 ccrun 的回复:
看。
妖哥,,
hyz_cs 2014-03-04
  • 打赏
  • 举报
回复
引用 16 楼 ccrun 的回复:
你搞一个最简单的演示工程,去除掉临时文件,和FFvcl一起打包,发给我:cbfans at 163 d0t com,我帮你看看。
对了,妖哥试的话用cb2010来试吧
ccrun.com 2014-03-03
  • 打赏
  • 举报
回复
你搞一个最简单的演示工程,去除掉临时文件,和FFvcl一起打包,发给我:cbfans at 163 d0t com,我帮你看看。
hyz_cs 2014-03-03
  • 打赏
  • 举报
回复
引用 16 楼 ccrun 的回复:
你搞一个最简单的演示工程,去除掉临时文件,和FFvcl一起打包,发给我:cbfans at 163 d0t com,我帮你看看。
已发,妖哥帮忙看看,谢谢!
hyz_cs 2014-03-01
  • 打赏
  • 举报
回复
引用 1 楼 ccrun 的回复:
设计期关联不上没有关系,用代码给挂钩就行了。
fplyr1->OmVideoHook = (TVideoHookEvent)&fplyr1VideoHook;
在增加一个新的控件(Ffencode)后,自动添加了一个Ffencode.hpp后又出现错误了. 赋值这一行提示一个错误.
fplyr1->OnVideoHook = (TVideoHookEvent)&fplyr1VideoHook ;

[BCC32 Error] Unit1.cpp(19): E2015 Ambiguity between 'TVideoHookEvent' and 'Ffmpeg::TVideoHookEvent'
  Full parser context
    Unit1.cpp(17): parsing:  _fastcall TForm1::TForm1(TComponent *)
改成这样后也不行
fplyr1->OnVideoHook = (Ffmpeg::TVideoHookEvent)&fplyr1VideoHook ;

[BCC32 Error] Unit1.cpp(19): E2034 Cannot convert 'TVideoHookEvent' to 'TVideoHookEvent'
  Full parser context
    Unit1.cpp(17): parsing:  _fastcall TForm1::TForm1(TComponent *)
ccrun.com 2014-03-01
  • 打赏
  • 举报
回复
还是老办法,代码中挂钩。将函数中ASample参数的类型定义成 Byte * 就行了,如:
void __fastcall fplyr1AudioHook(TObject *Sender, const __int64 APTS, Byte *ASample,
      int ASize, int ASampleRate, int AChannels);
hyz_cs 2014-02-28
  • 打赏
  • 举报
回复
引用 4 楼 ccrun 的回复:
[quote=引用 2 楼 hyz_cs 的回复:] 有办法改吗,因为是有源码的,不过是delphi的.
不需要改头文件什么的,仅仅就是把fplyr1的OnVideoHoo事件处理函数自己声明和定义一下,然后手动挂钩就行了。 另外,我在1楼的回复中有个字母写错了。OmVideoHook 应该是 OnVideoHook[/quote] 又有个函数出现这个错误,妖哥,这种问题有办法根治吗?
	void __fastcall fplyr1AudioHook(TObject *Sender, const __int64 APTS, ::PByte ASample,
		  int ASize, int ASampleRate, int AChannels);
[BCC32 Error] Unit1.h(44): E2015 Ambiguity between 'PByte' and 'System::PByte' Full parser context Unit1.cpp(6): #include Unit1.h Unit1.h(20): class TForm1
hyz_cs 2014-02-26
  • 打赏
  • 举报
回复
引用 11 楼 sololie 的回复:
个人用吗,还是忽然公司买的? 就标准版也¥2560,不算便宜了,能买一个标准版vs2005了。 主要看能不能保证持久稳定的技术支持售后服务,不然相比用DX SDK做也不费多少功夫
个人用,也算公司吧,自己单干一年多了.
sololie 2014-02-26
  • 打赏
  • 举报
回复
个人用吗,还是忽然公司买的? 就标准版也¥2560,不算便宜了,能买一个标准版vs2005了。 主要看能不能保证持久稳定的技术支持售后服务,不然相比用DX SDK做也不费多少功夫
hyz_cs 2014-02-26
  • 打赏
  • 举报
回复
引用 9 楼 sololie 的回复:
多少钱
Delphi FFVCL 标准版 编码转换 + 播放 源码版 2560元 (cb用户稍微打了点折)
sololie 2014-02-26
  • 打赏
  • 举报
回复
多少钱
hyz_cs 2014-02-26
  • 打赏
  • 举报
回复
引用 6 楼 sololie 的回复:
怎么会容易出错呢,出错就编译不过了,没啥隐患。只不过多谢几行代码而已嘛。
我是说几个赋值容易弄混了.我用的是源码版授权的,昨天刚买滴.前段时间也支持了一个快驴OEM的正版,支持国产,哈哈.
sololie 2014-02-26
  • 打赏
  • 举报
回复
想找个FFvcl下载,发现都是要钱的,LZ用的也是授权版么,如果是破解版给俺一个吧,没搜到
sololie 2014-02-26
  • 打赏
  • 举报
回复
怎么会容易出错呢,出错就编译不过了,没啥隐患。只不过多谢几行代码而已嘛。
hyz_cs 2014-02-26
  • 打赏
  • 举报
回复
引用 4 楼 ccrun 的回复:
[quote=引用 2 楼 hyz_cs 的回复:] 有办法改吗,因为是有源码的,不过是delphi的.
不需要改头文件什么的,仅仅就是把fplyr1的OnVideoHoo事件处理函数自己声明和定义一下,然后手动挂钩就行了。 另外,我在1楼的回复中有个字母写错了。OmVideoHook 应该是 OnVideoHook[/quote] 我知道,试过了,可以用,我是说他自动创建的函数有没有什么办法改,能改的话一次性把它改完整,以后用的时候也方便,因为一次可能要用好几个播放控件,每个都手动去关联容易出错,查看代码也不能自动跳转到相应函数.
ccrun.com 2014-02-26
  • 打赏
  • 举报
回复
引用 2 楼 hyz_cs 的回复:
有办法改吗,因为是有源码的,不过是delphi的.
不需要改头文件什么的,仅仅就是把fplyr1的OnVideoHoo事件处理函数自己声明和定义一下,然后手动挂钩就行了。 另外,我在1楼的回复中有个字母写错了。OmVideoHook 应该是 OnVideoHook
hyz_cs 2014-02-26
  • 打赏
  • 举报
回复
另个作者说cb XE4中试是没问题的,但是我用的是cb 2010
hyz_cs 2014-02-26
  • 打赏
  • 举报
回复
引用 1 楼 ccrun 的回复:
设计期关联不上没有关系,用代码给挂钩就行了。 Hook函数的声明和定义,还是使用Graphics::TBitmap,如:
void __fastcall TForm1::fplyr1VideoHook(TObject *Sender, Graphics::TBitmap *ABitmap, const __int64 APTS, bool &AUpdate)
{
...
}
然后在Form1的构造函数中:
fplyr1->OmVideoHook = (TVideoHookEvent)&fplyr1VideoHook;
有办法改吗,因为是有源码的,不过是delphi的.
ccrun.com 2014-02-26
  • 打赏
  • 举报
回复
设计期关联不上没有关系,用代码给挂钩就行了。 Hook函数的声明和定义,还是使用Graphics::TBitmap,如:
void __fastcall TForm1::fplyr1VideoHook(TObject *Sender, Graphics::TBitmap *ABitmap, const __int64 APTS, bool &AUpdate)
{
...
}
然后在Form1的构造函数中:
fplyr1->OmVideoHook = (TVideoHookEvent)&fplyr1VideoHook;

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧