社区
多媒体/流媒体开发
帖子详情
初学者问题:如何重写 GetMediaType ,才能使 CBaseOutputPin 派生类的媒体类型为MEDIASUBTYPE_YUYV ?
sungengyu
2005-03-09 05:29:00
如何重写 GetMediaType ,才能使 CBaseOutputPin 派生类的媒体类型为MEDIASUBTYPE_YUYV ?
郁闷。
谢谢了。
...全文
179
5
打赏
收藏
初学者问题:如何重写 GetMediaType ,才能使 CBaseOutputPin 派生类的媒体类型为MEDIASUBTYPE_YUYV ?
如何重写 GetMediaType ,才能使 CBaseOutputPin 派生类的媒体类型为MEDIASUBTYPE_YUYV ? 郁闷。 谢谢了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sungengyu
2005-03-24
打赏
举报
回复
HRESULT CBallStream::GetMediaType(int iPosition, CMediaType *pmt)
{
int width = m_ball.GetImageWidth() ;
int height = m_ball.GetImageHeight() ;
CAutoLock lockit(m_pFilter->pStateLock());
if (iPosition != 0)
{
return E_INVALIDARG;
}
pmt->SetType(&MEDIATYPE_Video);
pmt->SetSubtype(&MEDIASUBTYPE_UYVY) ;
pmt->SetFormatType(&FORMAT_VideoInfo);
pmt->SetSampleSize(width*height*2);
pmt->SetTemporalCompression(FALSE);
VIDEOINFOHEADER info;
ZeroMemory(&info, sizeof(VIDEOINFOHEADER));
info.bmiHeader.biPlanes = 1;
info.bmiHeader.biSizeImage = width*height*2 ;
info.bmiHeader.biClrImportant = 0;
info.AvgTimePerFrame = this->m_iDefaultRepeatTime ; //UNITS / SRC_FRAME_RATE;
info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
info.bmiHeader.biHeight = height ;
info.bmiHeader.biWidth = width;
info.bmiHeader.biCompression = mmioFOURCC('U','Y','V','Y');
info.bmiHeader.biBitCount = 16 ; // sungengyu
pmt->SetFormat((BYTE*)&info, sizeof(VIDEOINFOHEADER));
return NOERROR;
}
sungengyu
2005-03-17
打赏
举报
回复
终于能连上了,可是输出数据是错的。 :(
资料太少了,《DirectShow开发指南》也太不详细。
sungengyu
2005-03-11
打赏
举报
回复
还是连不上
调试跟踪到 CBasePin::TryMediaTypes(IPin *pReceivePin, const CMediaType *pmt,IEnumMediaTypes *pEnum) 中,
hr = AttemptConnection(pReceivePin, pMediaType);
hr的返回值是错的。
如果直接连 Video Renderer ,hr 的返回值是 0x8004022a (ReceiveConnection 拒绝传入的媒体类型。)
如果连结 AVI Decompressor,hr的返回值是 0x80040255(无法回放视频流:无法找到合适的解压程序。)
pMediaType 中的值是
majortype {73646976-0000-0010-8000-00AA00389B71} (MEDIATYPE_Video)
subtype {56595559-0000-0010-8000-00AA00389B71} (MEDIASUBTYPE_YUYV)
bFixedSizeSamples 0x00000001
bTemporalCompression 0x00000000
lSampleSize 0x00000001
formattype {05589F80-C356-11CE-BF01-00AA0055595A} (FORMAT_VideoInfo)
pUnk 0x00000000
cbFormat 0x00000058
pbFormat 0x00166cd0
happydeer
2005-03-10
打赏
举报
回复
#define SRC_IMG_WIDTH 352
#define SRC_IMG_HEIGHT 288
#define SRC_FRAME_RATE 25
HRESULT CYourPin::GetMediaType(int iPosition, CMediaType *pmt)
{
CAutoLock lockit(m_pFilter->pStateLock());
if (iPosition != 0)
{
return E_INVALIDARG;
}
pmt->SetType(&MEDIATYPE_Video);
pmt->SetSubtype(&MEDIASUBTYPE_YUYV);
pmt->SetFormatType(&FORMAT_VideoInfo);
pmt->SetSampleSize(1);
pmt->SetTemporalCompression(FALSE);
VIDEOINFOHEADER info;
ZeroMemory(&info, sizeof(VIDEOINFOHEADER));
info.AvgTimePerFrame = UNITS / SRC_FRAME_RATE;
info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
info.bmiHeader.biHeight = SRC_IMG_HEIGHT;
info.bmiHeader.biWidth = SRC_IMG_WIDTH;
info.bmiHeader.biCompression = mmioFOURCC('Y','U','Y','V');
pmt->SetFormat((BYTE*)&info, sizeof(VIDEOINFOHEADER));
return NOERROR;
}
sungengyu
2005-03-10
打赏
举报
回复
我在小球的例子上修改的。我希望输出媒体类型为MEDIASUBTYPE_YUYV,试了好久还是连不上。我不知道怎么重写 HRESULT CBallStream::GetMediaType(int iPosition, CMediaType *pmt) , 这里是不是应该填充 AM_MEDIA_TYPE 结构?
在网上搜索也找不到例子,两天了,郁闷至极,
兄弟们拉我一把吧,可怜可怜我吧,555555555555555
经典的虚拟摄像头程序
搜寻了好久了,经典的例子,模拟摄像头的实现 在amcap和graphedit中点属性页可以调整。
DirectShow --TEnum
Media
Type
--Get
Media
Type
Description
if IsEqualGUID(
Media
Type
.
sub
type
,
MEDIA
SUB
TYPE
_
YUYV
) then result := result+'
YUYV
' else if IsEqualGUID(
Media
Type
.
sub
type
,
MEDIA
SUB
TYPE
_IYUV) then result := result+'IYUV' else if IsEqualGUID(
Media
...
深入浅出DirectShow Filter(一)(学习里面有关
媒体
类型
定义)
文章来源: http://hqtech.nease.net 原文作者: 陆其明 整理日期: ... 1. Filter概述 ...Filter文件的扩展名为.ax,但也可以是.dll。Filter根据其包含Input
pin
或
Output
pin
的情况(或在Filter Graph的位置),大致可
java
media
type
属性_基于ServletRequest实现请求获取内容
类型
的
媒体
类型
Media
Type
、字符集Charset的工具类Content
Type
Util...
一、源码说明基于springframework的org.springframework.http.
Media
Type
通过ServletRequest对象分别获取到
媒体
类型
、字符集
类型
,具体工具类Content
Type
Util实现代码如下importjava.nio.charset.Charset;@b@...
Get
Media
Type
设置Filter输出
类型
的设置方法
//设置输出的
类型
及尺寸,只支持输出rgb24 32 565 三种,只显示当前的HRESULT CFilter::Get
Media
Type
(int iPosition, C
Media
Type
*p
Media
Type
){ if(m_
pIn
put->IsConnected() == FALSE) { return E_UNEXPECTED;...
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章