acmStreamOpen总是因MMSYSERR_INVALFLAG而失败么? [英] acmStreamOpen always fails with MMSYSERR_INVALFLAG Why?

查看:86
本文介绍了acmStreamOpen总是因MMSYSERR_INVALFLAG而失败么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我正在尝试在VB.NET中使用acm API。 acmStreamOpen总是返回

MMSYSERR_INVALFLAG。这就是我如何使用它:


声明是:


声明自动功能acmStreamOpen Lib" MsAcm32.dll" (ByRef phas As IntPtr,

ByVal有As Long,ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT,ByRef pm_wfxDst As

WAVEFORMATEX,ByRef pwfltr As Long,ByRef dwCallback As Long,ByRef

dwinstance As Long,ByVal fdwOpen As Int32)As Int32


这样使用:


res = acmStreamOpen(m_has ,0&,m_MP3wfxSrc,m_wfxDst,0&,0&,0&,

ACM_STREAMOPENF_NONREALTIME)


它返回10,所以无效标志......只有指定的标志是NonRealtime所以

它几乎适用于任何编解码器。我正在尝试从Mp3转换为Wave

(PCM)所以我真的不明白为什么它会失败。有谁可以帮助我吗?我不认为这是一个与.NET相关的错误,但是我在.net组中发帖

无论如何都是这样的。如果确实如此。


谢谢


ThunderMusic

Hi,
I''m trying to use the acm APIs in VB.NET. acmStreamOpen always returns
MMSYSERR_INVALFLAG. Here''s how I use it :

declaration is :

Declare Auto Function acmStreamOpen Lib "MsAcm32.dll" (ByRef phas As IntPtr,
ByVal had As Long, ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As
WAVEFORMATEX, ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32

Used like this :

res = acmStreamOpen(m_has, 0&, m_MP3wfxSrc, m_wfxDst, 0&, 0&, 0&,
ACM_STREAMOPENF_NONREALTIME)

It returns 10, so Invalid Flag... the only specified flag is NonRealtime so
it should work for almost any codec. I''m trying to convert from Mp3 to Wave
(PCM) so I really don''t see why it fails. Can someone help me please? I
don''t think this is a .NET related error, but I''m posting in .net groups
anyway, in case it does.

Thanks

ThunderMusic

推荐答案

ThunderMusic写道:
ThunderMusic wrote:
我正在尝试在VB.NET中使用acm API。 acmStreamOpen
始终返回MMSYSERR_INVALFLAG。这是我如何使用它:

声明是​​:

声明自动功能acmStreamOpen Lib" MsAcm32.dll"
(ByRef phas As IntPtr,ByVal有了As Long,ByRef pwfxSrc
作为MPEGLAYER3WAVEFORMAT,ByRef pm_wfxDst作为WAVEFORMATEX,
ByRef pwfltr As Long,ByRef dwCallback As Long,ByRef
dwinstance As Long,ByVal fdwOpen As Int32)As Int32
像这样使用:

res = acmStreamOpen(m_has,0&,m_MP3wfxSrc,m_wfxDst,0&,
0&,0&,ACM_STREAMOPENF_NONREALTIME)
I''m trying to use the acm APIs in VB.NET. acmStreamOpen
always returns MMSYSERR_INVALFLAG. Here''s how I use it :

declaration is :

Declare Auto Function acmStreamOpen Lib "MsAcm32.dll"
(ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc
As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX,
ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32
Used like this :

res = acmStreamOpen(m_has, 0&, m_MP3wfxSrc, m_wfxDst, 0&,
0&, 0&, ACM_STREAMOPENF_NONREALTIME)




试试这个:


声明自动功能acmStreamOpen Lib" MsAcm32.dll"

(ByRef phas As IntPtr,

ByVal有As IntPtr,

ByRef pwfxSrc作为MPEGLAYER3WAVEFORMAT,

ByRef pm_wfxDst作为WAVEFORMATEX,

ByVal pwfltr作为IntPtr,

ByVal dwCallback作为IntPtr,

ByVal dwinstance作为IntPtr,

ByVal fdwOpen作为Int32)作为Int32


res = acmStre amOpen(m_has,0,m_MP3wfxSrc,m_wfxDst,

0,0,0,ACM_STREAMOPENF_NONREALTIME)


如果它不喜欢0,请使用IntPtr。零。

-

// Alessandro Angeli

// MVP ::数字媒体

// a dot angeli at psynet dot net



Try this:

Declare Auto Function acmStreamOpen Lib "MsAcm32.dll"
(ByRef phas As IntPtr,
ByVal had As IntPtr,
ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT,
ByRef pm_wfxDst As WAVEFORMATEX,
ByVal pwfltr As IntPtr,
ByVal dwCallback As IntPtr,
ByVal dwinstance As IntPtr,
ByVal fdwOpen As Int32) As Int32

res = acmStreamOpen(m_has, 0, m_MP3wfxSrc, m_wfxDst,
0, 0, 0, ACM_STREAMOPENF_NONREALTIME)

If it doesn''t like 0, use IntPtr.Zero.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net


ThunderMusic写道:
ThunderMusic wrote:
我正在尝试在VB.NET中使用acm API 。 acmStreamOpen
始终返回MMSYSERR_INVALFLAG。这是我如何使用它:

声明是​​:

声明自动功能acmStreamOpen Lib" MsAcm32.dll"
(ByRef phas As IntPtr,ByVal有了As Long,ByRef pwfxSrc
作为MPEGLAYER3WAVEFORMAT,ByRef pm_wfxDst作为WAVEFORMATEX,
ByRef pwfltr As Long,ByRef dwCallback As Long,ByRef
dwinstance As Long,ByVal fdwOpen As Int32)As Int32
像这样使用:

res = acmStreamOpen(m_has,0&,m_MP3wfxSrc,m_wfxDst,0&,
0&,0&,ACM_STREAMOPENF_NONREALTIME)
I''m trying to use the acm APIs in VB.NET. acmStreamOpen
always returns MMSYSERR_INVALFLAG. Here''s how I use it :

declaration is :

Declare Auto Function acmStreamOpen Lib "MsAcm32.dll"
(ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc
As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX,
ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32
Used like this :

res = acmStreamOpen(m_has, 0&, m_MP3wfxSrc, m_wfxDst, 0&,
0&, 0&, ACM_STREAMOPENF_NONREALTIME)




试试这个:


声明自动功能acmStreamOpen Lib" MsAcm32.dll"

(ByRef phas As IntPtr,

ByVal有As IntPtr,

ByRef pwfxSrc作为MPEGLAYER3WAVEFORMAT,

ByRef pm_wfxDst作为WAVEFORMATEX,

ByVal pwfltr作为IntPtr,

ByVal dwCallback作为IntPtr,

ByVal dwinstance作为IntPtr,

ByVal fdwOpen作为Int32)作为Int32


res = acmStre amOpen(m_has,0,m_MP3wfxSrc,m_wfxDst,

0,0,0,ACM_STREAMOPENF_NONREALTIME)


如果它不喜欢0,请使用IntPtr。零。

-

// Alessandro Angeli

// MVP ::数字媒体

// a dot angeli at psynet dot net



Try this:

Declare Auto Function acmStreamOpen Lib "MsAcm32.dll"
(ByRef phas As IntPtr,
ByVal had As IntPtr,
ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT,
ByRef pm_wfxDst As WAVEFORMATEX,
ByVal pwfltr As IntPtr,
ByVal dwCallback As IntPtr,
ByVal dwinstance As IntPtr,
ByVal fdwOpen As Int32) As Int32

res = acmStreamOpen(m_has, 0, m_MP3wfxSrc, m_wfxDst,
0, 0, 0, ACM_STREAMOPENF_NONREALTIME)

If it doesn''t like 0, use IntPtr.Zero.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net


hi,

现在它返回512,我不知道这意味着什么...


" Alessandro Angeli [MVP :: DigitalMedia]" <无**** @ nowhere.in.the.net> aécrit

dans le message de news: ev **** *********@TK2MSFTNGP10.phx.gbl ...
ThunderMusic写道:
ThunderMusic wrote:
我正在尝试在VB.NET中使用acm API。 acmStreamOpen
始终返回MMSYSERR_INVALFLAG。这是我如何使用它:

声明是​​:

声明自动功能acmStreamOpen Lib" MsAcm32.dll"
(ByRef phas As IntPtr,ByVal有了As Long,ByRef pwfxSrc
作为MPEGLAYER3WAVEFORMAT,ByRef pm_wfxDst作为WAVEFORMATEX,
ByRef pwfltr As Long,ByRef dwCallback As Long,ByRef
dwinstance As Long,ByVal fdwOpen As Int32)As Int32
像这样使用:

res = acmStreamOpen(m_has,0&,m_MP3wfxSrc,m_wfxDst,0&,
0&,0&,ACM_STREAMOPENF_NONREALTIME)
I''m trying to use the acm APIs in VB.NET. acmStreamOpen
always returns MMSYSERR_INVALFLAG. Here''s how I use it :

declaration is :

Declare Auto Function acmStreamOpen Lib "MsAcm32.dll"
(ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc
As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX,
ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32
Used like this :

res = acmStreamOpen(m_has, 0&, m_MP3wfxSrc, m_wfxDst, 0&,
0&, 0&, ACM_STREAMOPENF_NONREALTIME)



试试这个:

声明自动功能acmStreamOpen Lib" MsAcm32.dll"
(ByRef phas As IntPtr,
ByVal有As IntPtr,
ByRef pwfxSrc作为MPEGLAYER3WAVEFORMAT,
ByRef pm_wfxDst作为WAVEFORMATEX,
ByVal pwfltr作为IntPtr,
ByVal dwCallback作为IntPtr,
ByVal dwinstance作为IntPtr,
ByVal fdwOpen As Int32)As Int32

res = acmStreamOpen(m_has,0,m_MP3wfxSrc,m_wfx Dst,
0,0,0,ACM_STREAMOPENF_NONREALTIME)

如果它不喜欢0,请使用IntPtr.Zero。

-
// Alessandro Angeli
// MVP ::数字媒体
// psynet dot net的点缀angeli



Try this:

Declare Auto Function acmStreamOpen Lib "MsAcm32.dll"
(ByRef phas As IntPtr,
ByVal had As IntPtr,
ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT,
ByRef pm_wfxDst As WAVEFORMATEX,
ByVal pwfltr As IntPtr,
ByVal dwCallback As IntPtr,
ByVal dwinstance As IntPtr,
ByVal fdwOpen As Int32) As Int32

res = acmStreamOpen(m_has, 0, m_MP3wfxSrc, m_wfxDst,
0, 0, 0, ACM_STREAMOPENF_NONREALTIME)

If it doesn''t like 0, use IntPtr.Zero.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net



这篇关于acmStreamOpen总是因MMSYSERR_INVALFLAG而失败么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆