mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:3767回复:22

视频捕捉的问题!

楼主#
更多 发布于:2003-03-05 15:40
用878捕捉到的视频帧由奇偶场组成,要显示这种video应怎么处理奇偶数据呢?请高手赐教

最新喜欢:

XmanXman
ppl
ppl
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2006-05-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-05 23:33
read direct sdk documnet about videomixer or overlaymixer or
serach msdn with keyword \"bob\" or \"weave\" or
google dscaler and read the source code.
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-06 16:07
谢谢ppl的回答!
昨天sunbeam也告诉我一个不错的方法!
就是在risc指令中直接按帧的形式来捕捉!:)
kxgchina
驱动小牛
驱动小牛
  • 注册日期2002-04-01
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-07 21:45
谢谢ppl的回答!
昨天sunbeam也告诉我一个不错的方法!
就是在risc指令中直接按帧的形式来捕捉!:)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请问怎么实现???我刚开始接触,不太明白!!
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-07 22:34
kxgchina:
你再写risc指令的时候,odd 和even的write指令的地址都是跳跃式的交叉这样就可以实现odd even field在物理上的合成一帧!
我已经实现了!很不错的方法!
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-08 01:05
“你再写risc指令的时候,odd 和even的write指令的地址都是跳跃式的交叉这样就可以实现odd even field在物理上的合成一帧!
我已经实现了!很不错的方法!”

怎么可以这样做呢?这样不是把一幅画面变成两幅画面了,图象质量大打折扣。建议读一本电视原理之类的书就懂了,也知道该怎么做了。
Sunbeam
驱动小牛
驱动小牛
  • 注册日期2001-10-29
  • 最后登录2010-01-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-10 10:01
电视原理就是一帧图像由奇、偶两场合成的,所以用RISC代码把奇偶两场合成一帧,是正确的。

当然现在所谓的逐行扫描电视,我没有仔细看过。我想它的原理也是一样,它显示数字视频信号时不须多说,但在显示以前的模拟电视信号时,要做到逐行的话,还是得把奇、偶场信号都存储下来后,才能逐行扫描。

说得对不对,望大家继续商榷!
堂堂正正做人,明明白白做事
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-03-10 10:56
sunbeam 终于出现了!
我同意你的观点!而且事实也是这个样子的!
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-03-11 00:17
当然现在所谓的逐行扫描电视,我没有仔细看过。

就是要你看这部分
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-03-11 09:22
“你再写risc指令的时候,odd 和even的write指令的地址都是跳跃式的交叉这样就可以实现odd even field在物理上的合成一帧!
我已经实现了!很不错的方法!”

怎么可以这样做呢?这样不是把一幅画面变成两幅画面了,图象质量大打折扣。建议读一本电视原理之类的书就懂了,也知道该怎么做了。

x_ray你把合成一帧叫做把一幅图像变成两幅图像?图像质量由怎么会打折扣呢?电视原理里也没有将一个field当成一幅图像啊!请明示!还有隔行扫描和逐行扫描只是两种图像显示方式而已跟图像的物理结构本无关系啊!
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-03-12 00:12
还有隔行扫描和逐行扫描只是两种图像显示方式而已跟图像的物理结构本无关系啊!

错!
为什么行频不是帧频的整数倍?
为了提高图象质量,前辈花了很大的精力发明隔行扫描,你一句话带过,他们要气死了。
jr0jr
驱动牛犊
驱动牛犊
  • 注册日期2001-11-29
  • 最后登录2005-10-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-03-14 02:40
x光说得不错,有空聊聊,我伯伯是电视台的总工,传授给我一些粗浅的道理。
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-03-14 13:43
还有隔行扫描和逐行扫描只是两种图像显示方式而已跟图像的物理结构本无关系啊!

错!
为什么行频不是帧频的整数倍?
为了提高图象质量,前辈花了很大的精力发明隔行扫描,你一句话带过,他们要气死了。

目前我用sunbeam的方法是可行的!不过从原理上来讲这种按帧显示的频率确实没有按场的频率快。
可是如果我们要想在pc机中显示这种odd 、even的电视video你有什么其他方法呢?


[编辑 -  3/14/03 by  mike_wang]
hands
驱动牛犊
驱动牛犊
  • 注册日期2001-07-11
  • 最后登录2007-12-18
  • 粉丝0
  • 关注0
  • 积分56分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-10-18 01:31
我想图像质量不会差。奇偶场合在一起应该没什么问题。

电视信号PAL所用的隔行扫描方式。其帧频也只有25。只是因为采用了隔行扫描的方式,这样一来,场频上升一倍,减少了闪烁感。
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-10-21 11:11
我想图像质量不会差。奇偶场合在一起应该没什么问题。

电视信号PAL所用的隔行扫描方式。其帧频也只有25。只是因为采用了隔行扫描的方式,这样一来,场频上升一倍,减少了闪烁感。

兄弟说得很对!
oe2002
驱动牛犊
驱动牛犊
  • 注册日期2003-10-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-10-23 18:16
PAL制式的每秒25帧,如果逐行扫描,人眼还是感到有闪烁感,如果用50帧每秒,则可以消除闪烁感,同时因为与电网频率相同,可以较容易的抑制电网上的干扰。

但50帧每秒数据率太大,对带宽有要求。因此改为隔行扫描,这样“场频”是50,消除了闪烁感,却没有增加带宽。

又因为显示器荧光粉的余辉效应人眼的视觉暂留,图像质量主观感觉没有大的损失。
hong
驱动小牛
驱动小牛
  • 注册日期2001-09-19
  • 最后登录2005-12-16
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-10-23 22:23
\"\"
PAL制式的每秒25帧,如果逐行扫描,人眼还是感到有闪烁感,如果用50帧每秒,则可以消除闪烁感,同时因为与电网频率相同,可以较容易的抑制电网上的干扰。

但50帧每秒数据率太大,对带宽有要求。因此改为隔行扫描,这样“场频”是50,消除了闪烁感,却没有增加带宽。

又因为显示器荧光粉的余辉效应人眼的视觉暂留,图像质量主观感觉没有大的损失。
\"\"
this is correct for TV.
this is not necessary for PC\'s monitor since PC\'s monitor is much faster than TV screen in terms of scan frequency.
as a conclusion, to display live video on PC\'s screen there is no difference between \"隔行扫描\" and \"逐行扫描\", either way is fine.  
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-10-28 11:10
我顺便请教一下大虾们

对于 驱动中的有关 Interlace 的流如何描述
有关 interlace 的一些属性在 KS_DATARANGE_VIDEO2 格式中描述。
我不管怎样描述,用Amcap.exe 测试都有 “This graph cannot preview”的错误。

我的流格式描述如下

大虾检查一下有无问题

#define D_X 756
#define D_Y 480

// for interlace
KS_DATARANGE_VIDEO2 StreamFormatRGB24_2 =
{
//KSDATARANGE
{
sizeof (KS_DATARANGE_VIDEO2), // FormatSize
0, // Flags
D_X * (D_Y/2) * 3, // SampleSize
0, // Reserved

// aka. MEDIATYPE_Video
STATIC_KSDATAFORMAT_TYPE_VIDEO,
//MEDIASUBTYPE_RGB24,
0xe436eb7d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70,
// aka. FORMAT_VideoInfo
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2
},
TRUE,//BOOL,bFixedSizeSamples (all samples same size?)
TRUE,//BOOL,bTemporalCompression (all I frames?)
// Reserved (was StreamDescriptionFlags)
KS_VIDEOSTREAM_PREVIEW,
0,// Reserved (was MemoryAllocationFlags )

// _KS_VIDEO_STREAM_CONFIG_CAPS
{
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2, // GUID
KS_AnalogVideo_NTSC_M |
KS_AnalogVideo_PAL_M,// AnalogVideoStandard
// InputSize, (the inherent size of the incoming signal
// with every digitized pixel unique)
D_X,(D_Y/2),
// MinCroppingSize, smallest rcSrc cropping rect allowed
D_X,(D_Y/2),
// MaxCroppingSize, largest rcSrc cropping rect allowed
D_X,(D_Y/2),
1,// CropGranularityX, granularity of cropping size
1,// CropGranularityY
1,// CropAlignX, alignment of cropping rect
1,// CropAlignY;
// MinOutputSize, smallest bitmap stream can produce
D_X,(D_Y/2),
// MaxOutputSize, largest bitmap stream can produce
D_X,(D_Y/2),
// OutputGranularityX, granularity of output bitmap size
1,
1, // OutputGranularityY;
// StretchTapsX (0 no stretch, 1 pix dup, 2 interp...)
0,
0,// StretchTapsY
2,// ShrinkTapsX
2,// ShrinkTapsY
(333333 / 2),// MinFrameInterval, 100 nS units
640000000, // MaxFrameInterval, 100 nS units
8 * 3 * 30 * D_X * D_Y,// MinBitsPerSecond;
8 * 3 * 30 * D_X * D_Y// MaxBitsPerSecond;
},

// KS_VIDEOINFOHEADER2 (default format)
{
0,0,0,0, // RECT rcSource;
0,0,0,0, // RECT rcTarget;
D_X * D_Y * 3 * 30, // DWORD dwBitRate;
0L, // DWORD dwBitErrorRate;
(333333 / 2),// REFERENCE_TIME AvgTimePerFrame
// use AMINTERLACE_* defines. Reject connection if
// undefined bits are not 0
KS_INTERLACE_IsInterlaced | \\
KS_INTERLACE_Field1First | \\
KS_INTERLACE_DisplayModeBobOrWeave | \\
KS_INTERLACE_FieldPatBothRegular ,
// use AMCOPYPROTECT_* defines. Reject connection if
// undefined bits are not 0
0,
// X dimension of picture aspect ratio,
// e.g. 16 for 16x9 display
4,
// Y dimension of picture aspect ratio,
//e.g. 9 for 16x9 display
3,
0,// must be 0; reject connection otherwise
0,// must be 0; reject connection otherwise

// KS_BITMAPINFOHEADER
{
sizeof (KS_BITMAPINFOHEADER),// DWORD biSize;
D_X, // LONG biWidth;
(D_Y/2), // LONG biHeight;
1, // WORD biPlanes;
24, // WORD biBitCount;
KS_BI_RGB, // DWORD biCompression;
D_X * (D_Y/2) * 3, // DWORD biSizeImage;
0, // LONG biXPelsPerMeter;
0, // LONG biYPelsPerMeter;
0, // DWORD biClrUsed;
0 // DWORD biClrImportant;
}
}
};

你的认可是对我最大的鼓励!
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-11-04 16:10
楼上的兄弟
其实俺对你所说的这个东西没有仔细研究过
不过看你到处贴这个问题
俺就斗胆跟你分析一下
俺觉得你所写的信息只是stream描述结构体的信息
这些信息有很多例子程序可以对照一下。
如果还有问题,那么你是否看一下你的risc指令再写data buffer的时候是否将odd,even分开来写,并且buffer传给sample的地址,大小是否正确。
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-11-05 13:02
谢谢 mike_wang 的回答。

我用的是DDK 中的例子 TESTCAP,是一个虚拟的驱动,没有相关的硬件。
我是想参考它来开发一个 TV CARD 的驱动。你说的对,我贴的是一个流格式的描述,想用这个格式来支持interlace,DirectShow 是支持interlace流格式的,要求这种格式用 KS_DATARANGE_VIDEO2  来描述。

目前的问题是,我描述的格式DirectShow不能把奇偶帧合成一副完整的图象显示,而是把每个半帧分别扩成一帧显示的。
你的认可是对我最大的鼓励!
上一页
游客

返回顶部