DirectMedia FilterGraph & VB

MarbleMad - 19 oct. 2000 à 20:25
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 1 août 2007 à 08:32
désolé pour l'english

hi,

sorry for my english, I'm a french man

I'm working on Visual Basic program for multiplexing a AVI with 2 MP3 audio track using directmedia filtergraph

I have a problem with filtergraph "file write" and "AVI Mux"

1 : in "AVI Mux", I have only 2 pins : "AVI Out" and "Input 01" but I want 2 more pins for Audio track : "Input 02" and "Input 03". My question is : How to Add Input pin to a IFilterInfo object ?

2 : I don't know assignate a path&filename to the composant "file write"
I'm testing pFileWriter.filename = .. but it's don't work

this is my little part of my code.

Global g_objVideoWindow As IVideoWindow 'VideoWindow Object
Global g_objMediaControl As IMediaControl 'MediaControl Object
Global g_objBasicAudio As IBasicAudio 'Basic Audio Object
Global g_objBasicVideo As IBasicVideo 'Basic Video Object
Global g_objMC As IMediaControl ' from the General Declarations section

Global pSourceFilter As IFilterInfo ' AVI Source Filter; has two pins
Global pSourceFilter2 As IFilterInfo ' AVI Source Filter; has two pins
Global SourceOutputPin As IPinInfo 'Source Filter output pin
Global SourceOutputPin2 As IPinInfo 'Source Filter output pin

Global pAVIMux As IFilterInfo ' AVI Splitter
Global AVIOut As IPinInfo ' AVI Splitter pin "Input"
Global AVIMux00 As IPinInfo ' AVI Splitter pin "Input"
Global AVIMux01 As IPinInfo ' AVI Splitter pin "Input"
Global AVIMux02 As IPinInfo ' AVI Splitter pin "Input"

Global pFileWriter As IFilterInfo ' AVI Splitter
Global pFileWriterIn As IPinInfo

Global pAVISplitter As IFilterInfo ' AVI Splitter
Global pAVISplitter2 As IFilterInfo ' AVI Splitter
Global SplitterInPin As IPinInfo ' AVI Splitter pin "Input"
Global SplitterInPin2 As IPinInfo ' AVI Splitter pin "Input"

Global SplitterOut00Pin As IPinInfo ' AVI Splitter pin "Stream 00"
Global SplitterOut00Pin2 As IPinInfo ' AVI Splitter pin "Stream 00"
Global SplitterOut01Pin As IPinInfo ' AVI Splitter pin "Stream 01"
Global SplitterOut01Pin2 As IPinInfo ' AVI Splitter pin "Stream 01"
Global SplitterOut02Pin As IPinInfo ' AVI Splitter pin "Stream 02"

Global pVideoDECFilter As IFilterInfo ' AVI Decompressor; has two pins
Global VideoDECInPin As IPinInfo 'AVI Decompressor pin "XForm In"
Global VideoDECOutPin As IPinInfo ' AVI Decompressor pin "XForm Out"

Global pOverlayDECFilter As IFilterInfo
Global pOverlayDECInPin As IPinInfo
Global pOverlayDECOutPin As IPinInfo

Global pAudioDECFilter As IFilterInfo ' MP3 Decompressor; has two pins
Global AudioDECInPin As IPinInfo 'MP3 Decompressor pin "XForm In"
Global AudioDECOutPin As IPinInfo ' MP3 Decompressor pin "XForm Out"


Global pVidRenderer As IFilterInfo ' Video Renderer, has one pin
Global VidRendInPin As IPinInfo ' Video Renderer pin "Input"

Global pAudioRenderer As IFilterInfo 'Audio Renderer, has one pin
Global AudioRendInPin As IPinInfo ' Audio Renderer pin "Input"

Sub CreateFinal(g_strFileName As String, g_strFileName2 As String)

' create the new filter graph
Set g_objMC = New FilgraphManager
Set g_objMC2 = New FilgraphManager

' create the source filter using IMediaControl.AddSourceFilter
'g_objMC.AddSourceFilter g_strFileName, pSourceFilter
'g_objMC2.AddSourceFilter g_strFileName2, pSourceFilter2

'split file
AddFilter "AVI/WAV File Source", pSourceFilter
pSourceFilter.filename = g_strFileName

AddFilter "AVI/WAV File Source", pSourceFilter2
pSourceFilter.filename = g_strFileName2

' Print out list of pins on avi splitter filter
For Each pPin In pSourceFilter.Pins
Debug.Print pPin.Name
' save specific pins to connect them
' pin 0, pin 1
If InStr(pPin.Name, "Vidéo") > 0 Then
Set SplitterOut00Pin = pPin
Else
Set SplitterOut01Pin = pPin
End If

Next pPin

' Print out list of pins on avi splitter filter
For Each pPin In pSourceFilter2.Pins
Debug.Print pPin.Name
' save specific pins to connect them
' pin 0, pin 1
If InStr(pPin.Name, "Vidéo") > 0 Then
Set SplitterOut00Pin2 = pPin
Else
Set SplitterOut01Pin2 = pPin
End If
Next pPin


'AVI Mux
AddFilter "AVI Mux", pAVIMux

'File Writer
AddFilter "File writer", pFileWriter

' Print out list of pins on avi splitter filter
For Each pPin In pAVIMux.Pins
Debug.Print pPin.Name
' save specific pins to connect them
' pin 0, pin 1
If pPin.Name = "AVI Out" Then
Set AVIOut = pPin
End If
If pPin.Name = "Input 01" Then
Set AVIMuxIn00 = pPin
SplitterOut00Pin.Connect AVIMuxIn00
End If
If pPin.Name = "Input 02" Then
Set AVIMuxIn01 = pPin
SplitterOut01Pin.Connect AVIMuxIn01
End If
If pPin.Name = "Input 03" Then
Set AVIMuxIn02 = pPin
SplitterOut01Pin2.Connect AVIMuxIn02
End If

Next pPin

' Print out list of pins on avi splitter filter
For Each pPin In pFileWriter.Pins
Debug.Print pPin.Name
' save specific pins to connect them
' pin 0, pin 1
If pPin.Name = "in" Then
Set pFileWriterIn = pPin
End If

Next pPin

AVIOut.Connect pFileWriterIn
pFileWriter.filename = App.Path & " est.avi" <--- HERE

End Sub

Thanks for your Help

--
Best Regard, MarbleMad
http://www.marblemad.com
http://www.graphinews.com

1 réponse

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
1 août 2007 à 08:32
Cette discussion a été cloturée. Veuillez lancer une nouvelle discussion si votre question est toujours d'actualite.

Merci

E.B.
0
Rejoignez-nous