Apro questa discussione perchè con la precedente (DirectSound e temporizzazione) mi sembrava di essere ormai andato fuori tema.

Riespongo a tutti voi il mio problema e confido in un vostro aiuto.

Come si intuisce dal titolo il problema lo ho riscontrato in una procedura per risprodurre file multimediali con directshow (DirectX 8.0)
Infatti riesco a riprodurre perfettamente tutti i file video ma non riesco a riprodurre file audio, tranne i wma.
Il codice ve lo riporto di seguito:

[CODE]
Global DSAudio As IBasicAudio
Global DSVideo As IBasicVideo2
Global DSWindow As IVideoWindow
Global DSControl As IMediaControl
Global DSPos As IMediaPosition

Global Const WS_VISIBLE = &H10000000
Sub DS_OpenFile(FileName As String, Fhwnd As Long, Optional fullScreen As Boolean = False)
Dim A As Boolean
Dim rectTop As Long
Dim rectleft As Long
Dim rectWidth As Long
Dim rectHeight As Long
On Error Resume Next

Call DS_termina

Set DSControl = New FilgraphManager '
Call DSControl.RenderFile(FileName)
Set DSAudio = DSControl
DSAudio.Volume = 0
DSAudio.Balance = 0

Set DSVideo = DSControl
...
Set DSWindow = DSControl
DSWindow.WindowStyle = &H10000000
DSWindow.Top = rectTop
DSWindow.Left = rectleft
DSWindow.Width = rectWidth
DSWindow.Height = rectHeight
DSWindow.Owner = Fhwnd
DSWindow.FullScreenMode = fullScreen

Set DSPos = DSControl
DSPos.Rate = 1
A = DSPos.CanSeekForward

End Sub

L'ultima riga la ho inserita in una delle mie ultime prove per cercare di capire la natura dell'errore. E ho scoperto che tutti quei file audio che non funzionano restituiscono False al metodo CanSeekForward. Penso quindi che il problema sia centrato qui, ma non so proprio come risolverlo.

Spero che qualcuno di voi lo sappia.
Aspetto con ansia vostre notizie. A presto