Firewire cameras with DirectShow

classic Classic list List threaded Threaded
18 messages Options
Reply | Threaded
Open this post in threaded view
|

Firewire cameras with DirectShow

Phil Rendell
Hi,

I'm currently writing an application to stream video from a camera across a network under Windows. I have managed to do this successfully using various USB cameras, but when I try to do this with using two different firewire cameras I get the following error:

WARNING: erroneous pipeline: could not link dshowvideosrc0 to ffmpegcsp0

I'm using gst-launch to do this:

gst-launch -v dshowvideosrc ! ffmpegcolorspace ! directdrawsink

I'm using the GStreamer WinBuilds version 0.10.3, containing version 0.10.7 of the dshowsrcwrapper plugin and version 0.10.22 of ffmpegcolorspace.

Unfortunately there is no other output on the command line, so I'm a little stumped. When I disconnect the camera from the computer this error disappears and I get an error saying that the pipeline doesn't want to pause and the pipeline is set to NULL (as expected). Does anyone have any ideas?

Thanks,

Phil

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Julien Isorce


2009/6/25 Phil Rendell <[hidden email]>
Hi,

WARNING: erroneous pipeline: could not link dshowvideosrc0 to ffmpegcsp0

I'm using gst-launch to do this:

gst-launch -v dshowvideosrc ! ffmpegcolorspace ! directdrawsink

I'm using the GStreamer WinBuilds version 0.10.3, containing version 0.10.7 of the dshowsrcwrapper plugin and version 0.10.22 of ffmpegcolorspace.

Hi,

Could you describe (or take a screenshot) the properties you can see using "graphedit"
? (you can find graphedit on the web)
I mean, instanciate the dshow filter that is associated to your firewire camera.
It should be in the video device capture category.
Then right click on the output pin and finally tell us which formats are available.
Then we would be able to tell you if the current dshowsrcwrapper implementation supports those formats.

Sincerely

Julien



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Phil Rendell
Hi Julien,

Thanks for the quick reply.

There is only one filter under the Video Capture Sources group: the Microsoft DV Camera and VCR. There are two output pins: DV A/V Out and DV Vid Out. All of the properties in DV A/V Out are disabled and are either empty or set to 'None', with the exception of the color space/compression (which is probably the one we're interested in) which is set to dvsd.

The properties for DV Vid Out are the same as above, but without the color space/compression set.

If it would help I could piece together a screenshot of the contents of the filter from the 'Insert Filters' dialog, although it doesn't look like it will provide much more information.

Thanks again,

Phil

2009/6/25 Julien Isorce <[hidden email]>


2009/6/25 Phil Rendell <[hidden email]>
Hi,


WARNING: erroneous pipeline: could not link dshowvideosrc0 to ffmpegcsp0

I'm using gst-launch to do this:

gst-launch -v dshowvideosrc ! ffmpegcolorspace ! directdrawsink

I'm using the GStreamer WinBuilds version 0.10.3, containing version 0.10.7 of the dshowsrcwrapper plugin and version 0.10.22 of ffmpegcolorspace.

Hi,

Could you describe (or take a screenshot) the properties you can see using "graphedit"
? (you can find graphedit on the web)
I mean, instanciate the dshow filter that is associated to your firewire camera.
It should be in the video device capture category.
Then right click on the output pin and finally tell us which formats are available.
Then we would be able to tell you if the current dshowsrcwrapper implementation supports those formats.

Sincerely

Julien



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Julien Isorce


2009/6/25 Phil Rendell <[hidden email]>

There is only one filter under the Video Capture Sources group: the Microsoft DV Camera and VCR. There are two output pins: DV A/V Out and DV Vid Out. All of the properties in DV A/V Out are disabled and are either empty or set to 'None', with the exception of the color space/compression (which is probably the one we're interested in) which is set to dvsd.

The properties for DV Vid Out are the same as above, but without the color space/compression set.


Then I think gst-launch-0.10 dshowvideosrc ! fakesink can play (I should ask you first) because dvsd is ok with the current implementation.
But in this case I can see from the implementation that dshowvideosrc outputs
video/x-dv
You should see it using -v option.
Anyway, ffmpegcolorspace doest not handle video/x-dv, that's why you got
"WARNING: erroneous pipeline: could not link dshowvideosrc0 to ffmpegcsp0"

Then you could try to insert a ffdec_dvvideo (if you have it) bettween dshowvideosrc and ffmpegcolorspace.
(note that I do not know if gstreamer has a dv decoder that does not come from gst-ffmpeg)

Sincerely

Julien

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Phil Rendell
Thanks. That explains why the two plugins can't speak to each other. I do have ffdec_dvvideo, but I can't get gst-launch-0.10 dshowvideosrc ! fakesink to work as this causes gst-launch to crash, again without anything useful being outputted on the command line, even with the -v option. If I recreate the pipeline in my application I get an integer division by zero exception sometime during the call to gst_element_link_many.

I know that dshowvideosrc can find the camera because when I set the device-name property to be the wrong camera name the pipeline falls through without an exception being thrown. I've had a look at the other properties I could set on dshowvideosrc, but can't see anything that jumps out at me that I should configure.

Is there anything else that you can think of that I could do?

Phil


2009/6/25 Julien Isorce <[hidden email]>


2009/6/25 Phil Rendell <[hidden email]>

There is only one filter under the Video Capture Sources group: the Microsoft DV Camera and VCR. There are two output pins: DV A/V Out and DV Vid Out. All of the properties in DV A/V Out are disabled and are either empty or set to 'None', with the exception of the color space/compression (which is probably the one we're interested in) which is set to dvsd.

The properties for DV Vid Out are the same as above, but without the color space/compression set.


Then I think gst-launch-0.10 dshowvideosrc ! fakesink can play (I should ask you first) because dvsd is ok with the current implementation.
But in this case I can see from the implementation that dshowvideosrc outputs
video/x-dv
You should see it using -v option.
Anyway, ffmpegcolorspace doest not handle video/x-dv, that's why you got
"WARNING: erroneous pipeline: could not link dshowvideosrc0 to ffmpegcsp0"

Then you could try to insert a ffdec_dvvideo (if you have it) bettween dshowvideosrc and ffmpegcolorspace.
(note that I do not know if gstreamer has a dv decoder that does not come from gst-ffmpeg)

Sincerely

Julien

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Julien Isorce


2009/6/25 Phil Rendell <[hidden email]>
Thanks. That explains why the two plugins can't speak to each other. I do have ffdec_dvvideo, but I can't get gst-launch-0.10 dshowvideosrc ! fakesink to work as this causes gst-launch to crash, again without anything useful being outputted on the command line, even with the -v option. If I recreate the pipeline in my application I get an integer division by zero exception sometime during the call to gst_element_link_many.

I know that dshowvideosrc can find the camera because when I set the device-name property to be the wrong camera name the pipeline falls through without an exception being thrown. I've had a look at the other properties I could set on dshowvideosrc, but can't see anything that jumps out at me that I should configure.

Is there anything else that you can think of that I could do?

You could tell us the output you get with the 2 following pipelines:

gst-launch-0.10 -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink

and

gst-launch-0.10 -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink

One should fail with a link error. The other one should lead to the crash you got.

Then about the crash and the division by zero. I have some ideas but could you tell us
if there is any framerate (fps) infos in the page properties of the filter and the outpins using graphedit.
Finally right click on the output pin and then select render pin. Then play the graph.
Does it play correctly?

Julien
 

Phil


2009/6/25 Julien Isorce <[hidden email]>


2009/6/25 Phil Rendell <[hidden email]>

There is only one filter under the Video Capture Sources group: the Microsoft DV Camera and VCR. There are two output pins: DV A/V Out and DV Vid Out. All of the properties in DV A/V Out are disabled and are either empty or set to 'None', with the exception of the color space/compression (which is probably the one we're interested in) which is set to dvsd.

The properties for DV Vid Out are the same as above, but without the color space/compression set.


Then I think gst-launch-0.10 dshowvideosrc ! fakesink can play (I should ask you first) because dvsd is ok with the current implementation.
But in this case I can see from the implementation that dshowvideosrc outputs
video/x-dv
You should see it using -v option.
Anyway, ffmpegcolorspace doest not handle video/x-dv, that's why you got
"WARNING: erroneous pipeline: could not link dshowvideosrc0 to ffmpegcsp0"

Then you could try to insert a ffdec_dvvideo (if you have it) bettween dshowvideosrc and ffmpegcolorspace.
(note that I do not know if gstreamer has a dv decoder that does not come from gst-ffmpeg)

Sincerely

Julien



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Phil Rendell

2009/6/25 Julien Isorce <[hidden email]>
You could tell us the output you get with the 2 following pipelines:

gst-launch-0.10 -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink

and

gst-launch-0.10 -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
 
One should fail with a link error. The other one should lead to the crash you got.
 
Sorry, no joy with this. Both complained about an erroneous pipeline. I don't think this could be the same error as before with feeding dshowvideosrc into ffmpegcolorspace, as if I remover the systemstream property, or set it to either true or false, gst-launch crashes. Setting it to anything else appears to cause the erroneous pipeline error.
 
 D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=2" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! fakesink
Setting pipeline to PAUSED ...
<Crash>
D:\Camera\Common\GStreamer\bin>
 

Then about the crash and the division by zero. I have some ideas but could you tell us
if there is any framerate (fps) infos in the page properties of the filter and the outpins using graphedit.
Finally right click on the output pin and then select render pin. Then play the graph.
Does it play correctly?
 
 
There does not appear to be any frame rate information in either output pin, nor information about the output size, or compression information. The same goes for either output pin. Rendering the DV A/V Out pin results in DV Splitter, DV Video Decoder, Video Renderer and Default DirectSound Device filters being created. Playing this results in the output from the camera being displayed on screen.
 
I was wondering if I set the other attributes such as format, width, height and framerate to see if this makes a difference, but am a little puzzled about the output:
 
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0
<Crash>
 
 
Phil
 
 

Julien
 

Phil


2009/6/25 Julien Isorce <[hidden email]>


2009/6/25 Phil Rendell <[hidden email]>

There is only one filter under the Video Capture Sources group: the Microsoft DV Camera and VCR. There are two output pins: DV A/V Out and DV Vid Out. All of the properties in DV A/V Out are disabled and are either empty or set to 'None', with the exception of the color space/compression (which is probably the one we're interested in) which is set to dvsd.

The properties for DV Vid Out are the same as above, but without the color space/compression set.


Then I think gst-launch-0.10 dshowvideosrc ! fakesink can play (I should ask you first) because dvsd is ok with the current implementation.
But in this case I can see from the implementation that dshowvideosrc outputs
video/x-dv
You should see it using -v option.
Anyway, ffmpegcolorspace doest not handle video/x-dv, that's why you got
"WARNING: erroneous pipeline: could not link dshowvideosrc0 to ffmpegcsp0"

Then you could try to insert a ffdec_dvvideo (if you have it) bettween dshowvideosrc and ffmpegcolorspace.
(note that I do not know if gstreamer has a dv decoder that does not come from gst-ffmpeg)

Sincerely

Julien



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Julien Isorce


2009/6/26 Phil Rendell <[hidden email]>

Sorry, no joy with this. Both complained about an erroneous pipeline. I don't think this could be the same error as before with feeding dshowvideosrc into ffmpegcolorspace, as if I remover the systemstream property, or set it to either true or false, gst-launch crashes. Setting it to anything else appears to cause the erroneous pipeline error.
 
 D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=2" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! fakesink
Setting pipeline to PAUSED ...
<Crash>
D:\Camera\Common\GStreamer\bin>

I am not sure t follow you. You said "as if I remover the systemstream property, or set it to either true or false"
but you got a link error with "video/x-dv, systemstream=1". Then a crash ?

 
 

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0
<Crash>
 

Could you try to add systemstream property as following:

gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=1" ! fakesink
and
gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=0" ! fakesink

The thing I know is that dshowvideosrc implementation goes in a wrong way in case of "video/x-dv, systemstream=1".
I mean it uses FORMAT_VideoInfos fields while it should use FORMAT_DvInfo fields.
Even if I have no dv camera I could try something but
first I really have to know if it's systemstream=0 or 1.

Sincerely

Julien


------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Phil Rendell

2009/6/26 Julien Isorce <[hidden email]>

2009/6/26 Phil Rendell <[hidden email]>

Sorry, no joy with this. Both complained about an erroneous pipeline. I don't think this could be the same error as before with feeding dshowvideosrc into ffmpegcolorspace, as if I remover the systemstream property, or set it to either true or false, gst-launch crashes. Setting it to anything else appears to cause the erroneous pipeline error.
 
 D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=2" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! fakesink
Setting pipeline to PAUSED ...
<Crash>
D:\Camera\Common\GStreamer\bin>

I am not sure t follow you. You said "as if I remover the systemstream property, or set it to either true or false"
but you got a link error with "video/x-dv, systemstream=1". Then a crash ?

Sorry, I probably should have laid that out clearer. I actually executed 4 commands there - one for systemstream=0, one for systemstream=1, one for systemstream=2 and the other as before.

If I do a gst-inspect on dshowvideosrc I can see that systemstream is set to true in one case and false in another. No matter what I set it to I always got a crash. However, now when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true" ! fakesink' I get a lot of console output, which I assume means everything works fine. I'm really not sure what I'm doing differently now though.

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0
<Crash>

Could you try to add systemstream property as following:

gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=1" ! fakesink
and
gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=0" ! fakesink

I think my attempts at experimenting are a little bit of a red herring. gst-launch crashes whenever I pass in the format argument. If  I run gst-launch without this property set I still get the warning about the desired video size being invalid and the same type of console output I experienced just setting the caps to "video/x-dv, systemstream=true":

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0

/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "preroll   *******"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "event   ******* E(type: 102, GstEventNewsegment, update=(boolean)false, rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_BYTES, start=(gint64)0, stop=(gint64)-1, position=(gint64)0;) 013379C0"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.078125000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 32) 044D3320"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.125000000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 0) 044D3378"
...

Again, it doesn't appear to work when I set systemstream to 0, 1, or 2, only booleans.

For some reason when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! ffdec_dvvideo ! directdrawsink' I get the link error saying that it cannot link dshowvideosrc0 to ffdec_dvvideo0. Could this be something to do with the format parameter being missing?
 

The thing I know is that dshowvideosrc implementation goes in a wrong way in case of "video/x-dv, systemstream=1".
I mean it uses FORMAT_VideoInfos fields while it should use FORMAT_DvInfo fields.
Even if I have no dv camera I could try something but
first I really have to know if it's systemstream=0 or 1.
You probably don't need it now, but I've attached a screenshot of the filter dialog in graphedit, which might be able to tell you which systemstream is being used.

Thanks,

Phil

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

Firewire filters.png (42K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Julien Isorce
First I do not understand why you get a difference bettween
systemstream=true and systemstream=1
it should be the same thing.

****Can someone else help us on this exact question:
If a propriety is a boolean, then set it to 1 or True, is the same thing ?

Forgot this problem then we will use true and false, instead of 0 and 1. Sorry for waste of time.
Well if I resume:

gst-launch-0.10.exe dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! fakesink
works fine (goes to playing state without crash) except the two warnings.

Then gst-inspect-0.10 ffdec_dvvideo shows that ffdec_dvvideo only accepts systemstream=false.

***Can someone else help us on this other question:
Does gstreamer have a decoder for "video/x-dv, systemstream=true" ? Does it make sense ?

Phil, can you tell me if
gst-launch-0.10.exe dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=10" ! fakesink
leads to the same result as true ?

About the screenshot. I can see that only the pin00 can be handled by dshowvideosrc because it's
MEDIATYPE_Video and MEDIASUBTYPE_dvsd
but unfortunatelly grapedit does not tell us if it's FORMAT_DvInfo (case systemstream=true)
or FORMAT_VideoInfo (case systemstream=false)
About the warnings, do not care about it, it seems that granularityVideoWidth/Height are not set by your camera driver.
Or has no sense in case of systemstream=true.

Anyway, for now I just do not know how to decode or render a video/x-dv, systemstream=true.
I am sure someone else knows ?

Julien




2009/6/26 Phil Rendell <[hidden email]>

2009/6/26 Julien Isorce <[hidden email]>


2009/6/26 Phil Rendell <[hidden email]>

Sorry, no joy with this. Both complained about an erroneous pipeline. I don't think this could be the same error as before with feeding dshowvideosrc into ffmpegcolorspace, as if I remover the systemstream property, or set it to either true or false, gst-launch crashes. Setting it to anything else appears to cause the erroneous pipeline error.
 
 D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=2" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! fakesink
Setting pipeline to PAUSED ...
<Crash>
D:\Camera\Common\GStreamer\bin>

I am not sure t follow you. You said "as if I remover the systemstream property, or set it to either true or false"
but you got a link error with "video/x-dv, systemstream=1". Then a crash ?

Sorry, I probably should have laid that out clearer. I actually executed 4 commands there - one for systemstream=0, one for systemstream=1, one for systemstream=2 and the other as before.

If I do a gst-inspect on dshowvideosrc I can see that systemstream is set to true in one case and false in another. No matter what I set it to I always got a crash. However, now when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true" ! fakesink' I get a lot of console output, which I assume means everything works fine. I'm really not sure what I'm doing differently now though.

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0
<Crash>

Could you try to add systemstream property as following:

gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=1" ! fakesink
and
gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=0" ! fakesink

I think my attempts at experimenting are a little bit of a red herring. gst-launch crashes whenever I pass in the format argument. If  I run gst-launch without this property set I still get the warning about the desired video size being invalid and the same type of console output I experienced just setting the caps to "video/x-dv, systemstream=true":

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0

/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "preroll   *******"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "event   ******* E(type: 102, GstEventNewsegment, update=(boolean)false, rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_BYTES, start=(gint64)0, stop=(gint64)-1, position=(gint64)0;) 013379C0"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.078125000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 32) 044D3320"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.125000000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 0) 044D3378"
...

Again, it doesn't appear to work when I set systemstream to 0, 1, or 2, only booleans.

For some reason when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! ffdec_dvvideo ! directdrawsink' I get the link error saying that it cannot link dshowvideosrc0 to ffdec_dvvideo0. Could this be something to do with the format parameter being missing?
 

The thing I know is that dshowvideosrc implementation goes in a wrong way in case of "video/x-dv, systemstream=1".
I mean it uses FORMAT_VideoInfos fields while it should use FORMAT_DvInfo fields.
Even if I have no dv camera I could try something but
first I really have to know if it's systemstream=0 or 1.
You probably don't need it now, but I've attached a screenshot of the filter dialog in graphedit, which might be able to tell you which systemstream is being used.

Thanks,

Phil

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Julien Isorce
oh there is ffdemux_dv to demux systemstream=true.

So you can try:

gst-launch-0.10.exe dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! ffdemux_dv ! ffmpegcolorspace ! directdrawsink

Julien

2009/6/26 Julien Isorce <[hidden email]>
First I do not understand why you get a difference bettween
systemstream=true and systemstream=1
it should be the same thing.

****Can someone else help us on this exact question:
If a propriety is a boolean, then set it to 1 or True, is the same thing ?

Forgot this problem then we will use true and false, instead of 0 and 1. Sorry for waste of time.
Well if I resume:

gst-launch-0.10.exe dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! fakesink
works fine (goes to playing state without crash) except the two warnings.

Then gst-inspect-0.10 ffdec_dvvideo shows that ffdec_dvvideo only accepts systemstream=false.

***Can someone else help us on this other question:
Does gstreamer have a decoder for "video/x-dv, systemstream=true" ? Does it make sense ?

Phil, can you tell me if
gst-launch-0.10.exe dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=10" ! fakesink
leads to the same result as true ?

About the screenshot. I can see that only the pin00 can be handled by dshowvideosrc because it's
MEDIATYPE_Video and MEDIASUBTYPE_dvsd
but unfortunatelly grapedit does not tell us if it's FORMAT_DvInfo (case systemstream=true)
or FORMAT_VideoInfo (case systemstream=false)
About the warnings, do not care about it, it seems that granularityVideoWidth/Height are not set by your camera driver.
Or has no sense in case of systemstream=true.

Anyway, for now I just do not know how to decode or render a video/x-dv, systemstream=true.
I am sure someone else knows ?

Julien




2009/6/26 Phil Rendell <[hidden email]>

2009/6/26 Julien Isorce <[hidden email]>


2009/6/26 Phil Rendell <[hidden email]>

Sorry, no joy with this. Both complained about an erroneous pipeline. I don't think this could be the same error as before with feeding dshowvideosrc into ffmpegcolorspace, as if I remover the systemstream property, or set it to either true or false, gst-launch crashes. Setting it to anything else appears to cause the erroneous pipeline error.
 
 D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=2" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! fakesink
Setting pipeline to PAUSED ...
<Crash>
D:\Camera\Common\GStreamer\bin>

I am not sure t follow you. You said "as if I remover the systemstream property, or set it to either true or false"
but you got a link error with "video/x-dv, systemstream=1". Then a crash ?

Sorry, I probably should have laid that out clearer. I actually executed 4 commands there - one for systemstream=0, one for systemstream=1, one for systemstream=2 and the other as before.

If I do a gst-inspect on dshowvideosrc I can see that systemstream is set to true in one case and false in another. No matter what I set it to I always got a crash. However, now when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true" ! fakesink' I get a lot of console output, which I assume means everything works fine. I'm really not sure what I'm doing differently now though.

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0
<Crash>

Could you try to add systemstream property as following:

gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=1" ! fakesink
and
gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=0" ! fakesink

I think my attempts at experimenting are a little bit of a red herring. gst-launch crashes whenever I pass in the format argument. If  I run gst-launch without this property set I still get the warning about the desired video size being invalid and the same type of console output I experienced just setting the caps to "video/x-dv, systemstream=true":

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0

/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "preroll   *******"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "event   ******* E(type: 102, GstEventNewsegment, update=(boolean)false, rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_BYTES, start=(gint64)0, stop=(gint64)-1, position=(gint64)0;) 013379C0"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.078125000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 32) 044D3320"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.125000000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 0) 044D3378"
...

Again, it doesn't appear to work when I set systemstream to 0, 1, or 2, only booleans.

For some reason when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! ffdec_dvvideo ! directdrawsink' I get the link error saying that it cannot link dshowvideosrc0 to ffdec_dvvideo0. Could this be something to do with the format parameter being missing?
 

The thing I know is that dshowvideosrc implementation goes in a wrong way in case of "video/x-dv, systemstream=1".
I mean it uses FORMAT_VideoInfos fields while it should use FORMAT_DvInfo fields.
Even if I have no dv camera I could try something but
first I really have to know if it's systemstream=0 or 1.
You probably don't need it now, but I've attached a screenshot of the filter dialog in graphedit, which might be able to tell you which systemstream is being used.

Thanks,

Phil

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel




------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Phil Rendell
In reply to this post by Julien Isorce


2009/6/26 Julien Isorce <[hidden email]>
Forgot this problem then we will use true and false, instead of 0 and 1. Sorry for waste of time.
 
No problem - without your help I would be completely stuck and end up being forced to do something drastic like hunt around in the source code before giving up!
 
 
Phil, can you tell me if
gst-launch-0.10.exe dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=10" ! fakesink
leads to the same result as true ?
 
No, it doesn't. It gives me the usual link error:
 
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=30" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
 
 
About the screenshot. I can see that only the pin00 can be handled by dshowvideosrc because it's
MEDIATYPE_Video and MEDIASUBTYPE_dvsd
but unfortunatelly grapedit does not tell us if it's FORMAT_DvInfo (case systemstream=true)
or FORMAT_VideoInfo (case systemstream=false)
About the warnings, do not care about it, it seems that granularityVideoWidth/Height are not set by your camera driver.
Or has no sense in case of systemstream=true.
 
Ok, thanks.
 
Anyway, for now I just do not know how to decode or render a video/x-dv, systemstream=true.
I am sure someone else knows ?
 
Good idea with the ffdemux_dv. The command you suggested didn't quite work, but once I added the dv decoder you suggested in a previous email and added a deinterlacer I managed to get something to display, although I ended up with a pretty bad 0.5-1 fps. Could I be doing something wrong?
 
Thanks,
 
Phil
 
 
Without the decoder (runs straight through with no visual output):
 
D:\rendell_p\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=720, height=576, framerate=25" ! ffdemux_dv ! ffmpegcolorspace ! directdrawsink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2500): WARNING **: your desired video size is not valid : 720 mod 1244160 !=0
** (gst-launch-0.10:2500): WARNING **: your desired video size is not valid : 576 mod 1577311108 !=0
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv,systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
ERROR: from element /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0: Internal data stream error.
Additional debug info:
..\..\ext\ffmpeg\gstffmpegdemux.c(1456): gst_ffmpegdemux_loop (): /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0:
streaming stopped, reason not-linked
Execution ended after 187550000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_01: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
FREEING pipeline ...
 
 
With the decoder and deinterlacing (NOTE: there are no errors until I close the window):
 
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=720, height=576, framerate=25" ! ffdemux_dv ! ffdec_dvvideo ! ffdeinterlace ! ffmpegcolorspace ! directdrawsink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:432): WARNING **: your desired video size is not valid : 720 mod 1244160 !=0
** (gst-launch-0.10:432): WARNING **: your desired video size is not valid : 576 mod 1577311108 !=0
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv,systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:sink: caps = video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, systemstream=(boolean)false, format=(fourcc)I420
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:src: caps= video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-rgb, width=(int)720, height=(int)576, framerate=(fraction)25/1, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstDirectDrawSink:directdrawsink0.GstPad:sink: caps = video/x-raw-rgb, width=(int)720, height=(int)576, framerate=(fraction)25/1, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216
ERROR: from element /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0: Internal data stream error.
Additional debug info:
..\..\ext\ffmpeg\gstffmpegdemux.c(1456): gst_ffmpegdemux_loop (): /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0:streaming stopped, reason error
Execution ended after 6375163000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstDirectDrawSink:directdrawsink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:src: caps= NULL
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_01: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
FREEING pipeline ...
 
 
 
 


Julien




2009/6/26 Phil Rendell <[hidden email]>

2009/6/26 Julien Isorce <[hidden email]>


2009/6/26 Phil Rendell <[hidden email]>

Sorry, no joy with this. Both complained about an erroneous pipeline. I don't think this could be the same error as before with feeding dshowvideosrc into ffmpegcolorspace, as if I remover the systemstream property, or set it to either true or false, gst-launch crashes. Setting it to anything else appears to cause the erroneous pipeline error.
 
 D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=2" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! fakesink
Setting pipeline to PAUSED ...
<Crash>
D:\Camera\Common\GStreamer\bin>

I am not sure t follow you. You said "as if I remover the systemstream property, or set it to either true or false"
but you got a link error with "video/x-dv, systemstream=1". Then a crash ?

Sorry, I probably should have laid that out clearer. I actually executed 4 commands there - one for systemstream=0, one for systemstream=1, one for systemstream=2 and the other as before.

If I do a gst-inspect on dshowvideosrc I can see that systemstream is set to true in one case and false in another. No matter what I set it to I always got a crash. However, now when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true" ! fakesink' I get a lot of console output, which I assume means everything works fine. I'm really not sure what I'm doing differently now though.

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0
<Crash>

Could you try to add systemstream property as following:

gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=1" ! fakesink
and
gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=0" ! fakesink

I think my attempts at experimenting are a little bit of a red herring. gst-launch crashes whenever I pass in the format argument. If  I run gst-launch without this property set I still get the warning about the desired video size being invalid and the same type of console output I experienced just setting the caps to "video/x-dv, systemstream=true":

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0

/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "preroll   *******"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "event   ******* E(type: 102, GstEventNewsegment, update=(boolean)false, rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_BYTES, start=(gint64)0, stop=(gint64)-1, position=(gint64)0;) 013379C0"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.078125000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 32) 044D3320"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.125000000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 0) 044D3378"
...

Again, it doesn't appear to work when I set systemstream to 0, 1, or 2, only booleans.

For some reason when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! ffdec_dvvideo ! directdrawsink' I get the link error saying that it cannot link dshowvideosrc0 to ffdec_dvvideo0. Could this be something to do with the format parameter being missing?
 

The thing I know is that dshowvideosrc implementation goes in a wrong way in case of "video/x-dv, systemstream=1".
I mean it uses FORMAT_VideoInfos fields while it should use FORMAT_DvInfo fields.
Even if I have no dv camera I could try something but
first I really have to know if it's systemstream=0 or 1.
You probably don't need it now, but I've attached a screenshot of the filter dialog in graphedit, which might be able to tell you which systemstream is being used.

Thanks,

Phil

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Julien Isorce
ok so your firewire camera only supports systemstream=true.

try with the default width, height and framerate, and without deinterlacing:
gst-launch-0.10 dshowvideosrc ! "video/x-dv, systemstream=true" ! ffdemux_dv ! ffdec_dvvideo ! ffmpegcolorspace ! directdrawsink

If still low fps, you could try to set lower width, height and framerate, or qdd a queue before ffmpegcolorspace.

You could also try:

gst-launch-0.10 dshowvideosrc ! "video/x-dv, systemstream=true" ! decodebin ! ffmpegcolorspace ! directdrawsink
and
gst-launch-0.10 dshowvideosrc ! decodebin ! ffmpegcolorspace ! directdrawsink

About the crash I think it came from:  format=dvsd
the right way is: format=(fourcc)dvsd

Julien

2009/6/26 Phil Rendell <[hidden email]>


2009/6/26 Julien Isorce <[hidden email]>
Forgot this problem then we will use true and false, instead of 0 and 1. Sorry for waste of time.
 
No problem - without your help I would be completely stuck and end up being forced to do something drastic like hunt around in the source code before giving up!
 
 
Phil, can you tell me if
gst-launch-0.10.exe dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=10" ! fakesink
leads to the same result as true ?
 
No, it doesn't. It gives me the usual link error:
 
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=30" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
 
 
About the screenshot. I can see that only the pin00 can be handled by dshowvideosrc because it's

MEDIATYPE_Video and MEDIASUBTYPE_dvsd
but unfortunatelly grapedit does not tell us if it's FORMAT_DvInfo (case systemstream=true)
or FORMAT_VideoInfo (case systemstream=false)
About the warnings, do not care about it, it seems that granularityVideoWidth/Height are not set by your camera driver.
Or has no sense in case of systemstream=true.
 
Ok, thanks.
 
Anyway, for now I just do not know how to decode or render a video/x-dv, systemstream=true.
I am sure someone else knows ?
 
Good idea with the ffdemux_dv. The command you suggested didn't quite work, but once I added the dv decoder you suggested in a previous email and added a deinterlacer I managed to get something to display, although I ended up with a pretty bad 0.5-1 fps. Could I be doing something wrong?
 
Thanks,
 
Phil
 
 
Without the decoder (runs straight through with no visual output):
 
D:\rendell_p\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=720, height=576, framerate=25" ! ffdemux_dv ! ffmpegcolorspace ! directdrawsink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2500): WARNING **: your desired video size is not valid : 720 mod 1244160 !=0
** (gst-launch-0.10:2500): WARNING **: your desired video size is not valid : 576 mod 1577311108 !=0
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25

Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv,systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
ERROR: from element /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0: Internal data stream error.
Additional debug info:
..\..\ext\ffmpeg\gstffmpegdemux.c(1456): gst_ffmpegdemux_loop (): /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0:
streaming stopped, reason not-linked
Execution ended after 187550000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_01: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
FREEING pipeline ...
 
 
With the decoder and deinterlacing (NOTE: there are no errors until I close the window):
 
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=720, height=576, framerate=25" ! ffdemux_dv ! ffdec_dvvideo ! ffdeinterlace ! ffmpegcolorspace ! directdrawsink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:432): WARNING **: your desired video size is not valid : 720 mod 1244160 !=0
** (gst-launch-0.10:432): WARNING **: your desired video size is not valid : 576 mod 1577311108 !=0
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25

Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv,systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:sink: caps = video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, systemstream=(boolean)false, format=(fourcc)I420
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:src: caps= video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-rgb, width=(int)720, height=(int)576, framerate=(fraction)25/1, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstDirectDrawSink:directdrawsink0.GstPad:sink: caps = video/x-raw-rgb, width=(int)720, height=(int)576, framerate=(fraction)25/1, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216
ERROR: from element /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0: Internal data stream error.
Additional debug info:
..\..\ext\ffmpeg\gstffmpegdemux.c(1456): gst_ffmpegdemux_loop (): /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0:streaming stopped, reason error
Execution ended after 6375163000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstDirectDrawSink:directdrawsink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:src: caps= NULL
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_01: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
FREEING pipeline ...
 
 
 
 


Julien




2009/6/26 Phil Rendell <[hidden email]>

2009/6/26 Julien Isorce <[hidden email]>


2009/6/26 Phil Rendell <[hidden email]>

Sorry, no joy with this. Both complained about an erroneous pipeline. I don't think this could be the same error as before with feeding dshowvideosrc into ffmpegcolorspace, as if I remover the systemstream property, or set it to either true or false, gst-launch crashes. Setting it to anything else appears to cause the erroneous pipeline error.
 
 D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=2" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! fakesink
Setting pipeline to PAUSED ...
<Crash>
D:\Camera\Common\GStreamer\bin>

I am not sure t follow you. You said "as if I remover the systemstream property, or set it to either true or false"
but you got a link error with "video/x-dv, systemstream=1". Then a crash ?

Sorry, I probably should have laid that out clearer. I actually executed 4 commands there - one for systemstream=0, one for systemstream=1, one for systemstream=2 and the other as before.

If I do a gst-inspect on dshowvideosrc I can see that systemstream is set to true in one case and false in another. No matter what I set it to I always got a crash. However, now when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true" ! fakesink' I get a lot of console output, which I assume means everything works fine. I'm really not sure what I'm doing differently now though.

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0
<Crash>

Could you try to add systemstream property as following:

gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=1" ! fakesink
and
gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=0" ! fakesink

I think my attempts at experimenting are a little bit of a red herring. gst-launch crashes whenever I pass in the format argument. If  I run gst-launch without this property set I still get the warning about the desired video size being invalid and the same type of console output I experienced just setting the caps to "video/x-dv, systemstream=true":

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0

/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "preroll   *******"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "event   ******* E(type: 102, GstEventNewsegment, update=(boolean)false, rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_BYTES, start=(gint64)0, stop=(gint64)-1, position=(gint64)0;) 013379C0"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.078125000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 32) 044D3320"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.125000000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 0) 044D3378"
...

Again, it doesn't appear to work when I set systemstream to 0, 1, or 2, only booleans.

For some reason when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! ffdec_dvvideo ! directdrawsink' I get the link error saying that it cannot link dshowvideosrc0 to ffdec_dvvideo0. Could this be something to do with the format parameter being missing?
 

The thing I know is that dshowvideosrc implementation goes in a wrong way in case of "video/x-dv, systemstream=1".
I mean it uses FORMAT_VideoInfos fields while it should use FORMAT_DvInfo fields.
Even if I have no dv camera I could try something but
first I really have to know if it's systemstream=0 or 1.
You probably don't need it now, but I've attached a screenshot of the filter dialog in graphedit, which might be able to tell you which systemstream is being used.

Thanks,

Phil

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Phil Rendell
Thanks for the suggestions. Unfortunately they didn't have any noticeable effect, and the decodebin couldn't find a the demuxer ('A Digital Video (DV) System Stream demuxer plugin is required to play this stream, but not installed' error).

I also tried setting the lowres property of ffdec_dvvideo to 1/4 size to see if that would make a difference, but again, no luck, which leads me to believe that it's not a problem with decoding the stream.

It's just a shame there's not a windows port of libdv, otherwise I could try building dvdemux. I don't know if there's anything else I could try?

Phil

2009/6/26 Julien Isorce <[hidden email]>
ok so your firewire camera only supports systemstream=true.

try with the default width, height and framerate, and without deinterlacing:
gst-launch-0.10 dshowvideosrc ! "video/x-dv, systemstream=true" ! ffdemux_dv ! ffdec_dvvideo ! ffmpegcolorspace ! directdrawsink

If still low fps, you could try to set lower width, height and framerate, or qdd a queue before ffmpegcolorspace.

You could also try:

gst-launch-0.10 dshowvideosrc ! "video/x-dv, systemstream=true" ! decodebin ! ffmpegcolorspace ! directdrawsink
and
gst-launch-0.10 dshowvideosrc ! decodebin ! ffmpegcolorspace ! directdrawsink

About the crash I think it came from:  format=dvsd
the right way is: format=(fourcc)dvsd


Julien

2009/6/26 Phil Rendell <[hidden email]>


2009/6/26 Julien Isorce <[hidden email]>
Forgot this problem then we will use true and false, instead of 0 and 1. Sorry for waste of time.
 
No problem - without your help I would be completely stuck and end up being forced to do something drastic like hunt around in the source code before giving up!
 
 
Phil, can you tell me if
gst-launch-0.10.exe dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=10" ! fakesink
leads to the same result as true ?
 
No, it doesn't. It gives me the usual link error:
 
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=30" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
 
 
About the screenshot. I can see that only the pin00 can be handled by dshowvideosrc because it's

MEDIATYPE_Video and MEDIASUBTYPE_dvsd
but unfortunatelly grapedit does not tell us if it's FORMAT_DvInfo (case systemstream=true)
or FORMAT_VideoInfo (case systemstream=false)
About the warnings, do not care about it, it seems that granularityVideoWidth/Height are not set by your camera driver.
Or has no sense in case of systemstream=true.
 
Ok, thanks.
 
Anyway, for now I just do not know how to decode or render a video/x-dv, systemstream=true.
I am sure someone else knows ?
 
Good idea with the ffdemux_dv. The command you suggested didn't quite work, but once I added the dv decoder you suggested in a previous email and added a deinterlacer I managed to get something to display, although I ended up with a pretty bad 0.5-1 fps. Could I be doing something wrong?
 
Thanks,
 
Phil
 
 
Without the decoder (runs straight through with no visual output):
 
D:\rendell_p\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=720, height=576, framerate=25" ! ffdemux_dv ! ffmpegcolorspace ! directdrawsink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2500): WARNING **: your desired video size is not valid : 720 mod 1244160 !=0
** (gst-launch-0.10:2500): WARNING **: your desired video size is not valid : 576 mod 1577311108 !=0
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25

Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv,systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
ERROR: from element /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0: Internal data stream error.
Additional debug info:
..\..\ext\ffmpeg\gstffmpegdemux.c(1456): gst_ffmpegdemux_loop (): /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0:
streaming stopped, reason not-linked
Execution ended after 187550000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_01: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
FREEING pipeline ...
 
 
With the decoder and deinterlacing (NOTE: there are no errors until I close the window):
 
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=720, height=576, framerate=25" ! ffdemux_dv ! ffdec_dvvideo ! ffdeinterlace ! ffmpegcolorspace ! directdrawsink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:432): WARNING **: your desired video size is not valid : 720 mod 1244160 !=0
** (gst-launch-0.10:432): WARNING **: your desired video size is not valid : 576 mod 1577311108 !=0
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25

Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv,systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:sink: caps = video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, systemstream=(boolean)false, format=(fourcc)I420
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:src: caps= video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-rgb, width=(int)720, height=(int)576, framerate=(fraction)25/1, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstDirectDrawSink:directdrawsink0.GstPad:sink: caps = video/x-raw-rgb, width=(int)720, height=(int)576, framerate=(fraction)25/1, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216
ERROR: from element /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0: Internal data stream error.
Additional debug info:
..\..\ext\ffmpeg\gstffmpegdemux.c(1456): gst_ffmpegdemux_loop (): /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0:streaming stopped, reason error
Execution ended after 6375163000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstDirectDrawSink:directdrawsink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:src: caps= NULL
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_01: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
FREEING pipeline ...
 
 
 
 


Julien




2009/6/26 Phil Rendell <[hidden email]>

2009/6/26 Julien Isorce <[hidden email]>


2009/6/26 Phil Rendell <[hidden email]>

Sorry, no joy with this. Both complained about an erroneous pipeline. I don't think this could be the same error as before with feeding dshowvideosrc into ffmpegcolorspace, as if I remover the systemstream property, or set it to either true or false, gst-launch crashes. Setting it to anything else appears to cause the erroneous pipeline error.
 
 D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=2" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! fakesink
Setting pipeline to PAUSED ...
<Crash>
D:\Camera\Common\GStreamer\bin>

I am not sure t follow you. You said "as if I remover the systemstream property, or set it to either true or false"
but you got a link error with "video/x-dv, systemstream=1". Then a crash ?

Sorry, I probably should have laid that out clearer. I actually executed 4 commands there - one for systemstream=0, one for systemstream=1, one for systemstream=2 and the other as before.

If I do a gst-inspect on dshowvideosrc I can see that systemstream is set to true in one case and false in another. No matter what I set it to I always got a crash. However, now when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true" ! fakesink' I get a lot of console output, which I assume means everything works fine. I'm really not sure what I'm doing differently now though.

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0
<Crash>

Could you try to add systemstream property as following:

gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=1" ! fakesink
and
gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=0" ! fakesink

I think my attempts at experimenting are a little bit of a red herring. gst-launch crashes whenever I pass in the format argument. If  I run gst-launch without this property set I still get the warning about the desired video size being invalid and the same type of console output I experienced just setting the caps to "video/x-dv, systemstream=true":

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0

/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "preroll   *******"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "event   ******* E(type: 102, GstEventNewsegment, update=(boolean)false, rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_BYTES, start=(gint64)0, stop=(gint64)-1, position=(gint64)0;) 013379C0"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.078125000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 32) 044D3320"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.125000000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 0) 044D3378"
...

Again, it doesn't appear to work when I set systemstream to 0, 1, or 2, only booleans.

For some reason when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! ffdec_dvvideo ! directdrawsink' I get the link error saying that it cannot link dshowvideosrc0 to ffdec_dvvideo0. Could this be something to do with the format parameter being missing?
 

The thing I know is that dshowvideosrc implementation goes in a wrong way in case of "video/x-dv, systemstream=1".
I mean it uses FORMAT_VideoInfos fields while it should use FORMAT_DvInfo fields.
Even if I have no dv camera I could try something but
first I really have to know if it's systemstream=0 or 1.
You probably don't need it now, but I've attached a screenshot of the filter dialog in graphedit, which might be able to tell you which systemstream is being used.

Thanks,

Phil

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Julien Isorce


2009/6/29 Phil Rendell <[hidden email]>

I also tried setting the lowres property of ffdec_dvvideo to 1/4 size to see if that would make a difference, but again, no luck, which leads me to believe that it's not a problem with decoding the stream.

Ok maybe ffdec_dv and ffdemux_dv are poor quality.
 


It's just a shame there's not a windows port of libdv, otherwise I could try building dvdemux. I don't know if there's anything else I could try?

You could ask libdv mailing list if someone has already tried to compile or port libdv on win32.
You could try by your self to compile libdv using msys and mingw. (maybe it's already ported)

(http://libdv.sourceforge.net/)

You could also try to update the libavcodec.dll libavformat.dll with a newer ffmpeg build,
to see if ffdemux_dv and ffdec_dv have been improved. (or see their git web)
 
Julien



Phil


2009/6/26 Julien Isorce <[hidden email]>
ok so your firewire camera only supports systemstream=true.

try with the default width, height and framerate, and without deinterlacing:
gst-launch-0.10 dshowvideosrc ! "video/x-dv, systemstream=true" ! ffdemux_dv ! ffdec_dvvideo ! ffmpegcolorspace ! directdrawsink

If still low fps, you could try to set lower width, height and framerate, or qdd a queue before ffmpegcolorspace.

You could also try:

gst-launch-0.10 dshowvideosrc ! "video/x-dv, systemstream=true" ! decodebin ! ffmpegcolorspace ! directdrawsink
and
gst-launch-0.10 dshowvideosrc ! decodebin ! ffmpegcolorspace ! directdrawsink

About the crash I think it came from:  format=dvsd
the right way is: format=(fourcc)dvsd


Julien

2009/6/26 Phil Rendell <[hidden email]>


2009/6/26 Julien Isorce <[hidden email]>
Forgot this problem then we will use true and false, instead of 0 and 1. Sorry for waste of time.
 
No problem - without your help I would be completely stuck and end up being forced to do something drastic like hunt around in the source code before giving up!
 
 
Phil, can you tell me if
gst-launch-0.10.exe dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=10" ! fakesink
leads to the same result as true ?
 
No, it doesn't. It gives me the usual link error:
 
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=false, width=640, height=480, framerate=30" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
 
 
About the screenshot. I can see that only the pin00 can be handled by dshowvideosrc because it's

MEDIATYPE_Video and MEDIASUBTYPE_dvsd
but unfortunatelly grapedit does not tell us if it's FORMAT_DvInfo (case systemstream=true)
or FORMAT_VideoInfo (case systemstream=false)
About the warnings, do not care about it, it seems that granularityVideoWidth/Height are not set by your camera driver.
Or has no sense in case of systemstream=true.
 
Ok, thanks.
 
Anyway, for now I just do not know how to decode or render a video/x-dv, systemstream=true.
I am sure someone else knows ?
 
Good idea with the ffdemux_dv. The command you suggested didn't quite work, but once I added the dv decoder you suggested in a previous email and added a deinterlacer I managed to get something to display, although I ended up with a pretty bad 0.5-1 fps. Could I be doing something wrong?
 
Thanks,
 
Phil
 
 
Without the decoder (runs straight through with no visual output):
 
D:\rendell_p\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=720, height=576, framerate=25" ! ffdemux_dv ! ffmpegcolorspace ! directdrawsink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2500): WARNING **: your desired video size is not valid : 720 mod 1244160 !=0
** (gst-launch-0.10:2500): WARNING **: your desired video size is not valid : 576 mod 1577311108 !=0
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25

Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv,systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
ERROR: from element /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0: Internal data stream error.
Additional debug info:
..\..\ext\ffmpeg\gstffmpegdemux.c(1456): gst_ffmpegdemux_loop (): /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0:
streaming stopped, reason not-linked
Execution ended after 187550000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_01: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
FREEING pipeline ...
 
 
With the decoder and deinterlacing (NOTE: there are no errors until I close the window):
 
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=720, height=576, framerate=25" ! ffdemux_dv ! ffdec_dvvideo ! ffdeinterlace ! ffmpegcolorspace ! directdrawsink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:432): WARNING **: your desired video size is not valid : 720 mod 1244160 !=0
** (gst-launch-0.10:432): WARNING **: your desired video size is not valid : 576 mod 1577311108 !=0
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25

Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv,systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)720, height=(int)576, framerate=(int)25
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:sink: caps = video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, systemstream=(boolean)false, format=(fourcc)I420
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:src: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:src: caps= video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-rgb, width=(int)720, height=(int)576, framerate=(fraction)25/1, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(fourcc)I420
/GstPipeline:pipeline0/GstDirectDrawSink:directdrawsink0.GstPad:sink: caps = video/x-raw-rgb, width=(int)720, height=(int)576, framerate=(fraction)25/1, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216
ERROR: from element /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0: Internal data stream error.
Additional debug info:
..\..\ext\ffmpeg\gstffmpegdemux.c(1456): gst_ffmpegdemux_loop (): /GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0:streaming stopped, reason error
Execution ended after 6375163000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstDirectDrawSink:directdrawsink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:src: caps= NULL
/GstPipeline:pipeline0/GstFFMpegDeinterlace:ffmpegdeinterlace0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/ffdec_dvvideo:ffdec_dvvideo0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_01: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/ffdemux_dv:ffdemux_dv0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
FREEING pipeline ...
 
 
 
 


Julien




2009/6/26 Phil Rendell <[hidden email]>

2009/6/26 Julien Isorce <[hidden email]>


2009/6/26 Phil Rendell <[hidden email]>

Sorry, no joy with this. Both complained about an erroneous pipeline. I don't think this could be the same error as before with feeding dshowvideosrc into ffmpegcolorspace, as if I remover the systemstream property, or set it to either true or false, gst-launch crashes. Setting it to anything else appears to cause the erroneous pipeline error.
 
 D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=0" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=1" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=2" ! fakesink
WARNING: erroneous pipeline: could not link dshowvideosrc0 to fakesink0
D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! fakesink
Setting pipeline to PAUSED ...
<Crash>
D:\Camera\Common\GStreamer\bin>

I am not sure t follow you. You said "as if I remover the systemstream property, or set it to either true or false"
but you got a link error with "video/x-dv, systemstream=1". Then a crash ?

Sorry, I probably should have laid that out clearer. I actually executed 4 commands there - one for systemstream=0, one for systemstream=1, one for systemstream=2 and the other as before.

If I do a gst-inspect on dshowvideosrc I can see that systemstream is set to true in one case and false in another. No matter what I set it to I always got a crash. However, now when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true" ! fakesink' I get a lot of console output, which I assume means everything works fine. I'm really not sure what I'm doing differently now though.

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...
** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:2448): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0
<Crash>

Could you try to add systemstream property as following:

gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=1" ! fakesink
and
gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, format=dvsd, width=640, height=480, framerate=10, systemstream=0" ! fakesink

I think my attempts at experimenting are a little bit of a red herring. gst-launch crashes whenever I pass in the format argument. If  I run gst-launch without this property set I still get the warning about the desired video size being invalid and the same type of console output I experienced just setting the caps to "video/x-dv, systemstream=true":

D:\Camera\Common\GStreamer\bin>gst-launch-0.10.exe -v dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! fakesink
Setting pipeline to PAUSED ...

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 640 mod 1244160 !=0

** (gst-launch-0.10:3556): WARNING **: your desired video size is not valid : 480 mod 1577311108 !=0

/GstPipeline:pipeline0/GstDshowVideoSrc:dshowvideosrc0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-dv, systemstream=(boolean)true, width=(int)640, height=(int)480, framerate=(int)10
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "preroll   *******"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "event   ******* E(type: 102, GstEventNewsegment, update=(boolean)false, rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_BYTES, start=(gint64)0, stop=(gint64)-1, position=(gint64)0;) 013379C0"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.078125000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 32) 044D3320"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* <(144000 bytes, timestamp: 0:00:00.125000000, duration: 0:00:00.040000000, offset: -1, offset_end: -1, flags: 0) 044D3378"
...

Again, it doesn't appear to work when I set systemstream to 0, 1, or 2, only booleans.

For some reason when I execute 'gst-launch dshowvideosrc ! "video/x-dv, systemstream=true, width=640, height=480, framerate=10" ! ffdec_dvvideo ! directdrawsink' I get the link error saying that it cannot link dshowvideosrc0 to ffdec_dvvideo0. Could this be something to do with the format parameter being missing?
 

The thing I know is that dshowvideosrc implementation goes in a wrong way in case of "video/x-dv, systemstream=1".
I mean it uses FORMAT_VideoInfos fields while it should use FORMAT_DvInfo fields.
Even if I have no dv camera I could try something but
first I really have to know if it's systemstream=0 or 1.
You probably don't need it now, but I've attached a screenshot of the filter dialog in graphedit, which might be able to tell you which systemstream is being used.

Thanks,

Phil

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Julien Isorce


2009/6/29 Julien Isorce <[hidden email]>


2009/6/29 Phil Rendell <[hidden email]>


I also tried setting the lowres property of ffdec_dvvideo to 1/4 size to see if that would make a difference, but again, no luck, which leads me to believe that it's not a problem with decoding the stream.

Ok maybe ffdec_dv and ffdemux_dv are poor quality.

I have downloaded pond.dv   video sample file from  http://libdv.sourceforge.net/

Then:

with lastest gstreamer git, on linux

[fail] gst-launch-0.10 filesrc location=pond.dv ! ffdemux_dv ! ffdec_dvvideo ! xvimagesink
[fail] gst-launch-0.10 filesrc location=pond.dv ! dvdemux ! ffdec_dvideo ! xvimagesink
[fail] gst-launch-0.10 filesrc location=pond.dv ! ffdemux_dv ! dvdec ! xvimagesink
[success] gst-launch-0.10 filesrc location=pond.dv ! dvdemux ! dvdec ! xvimagesink
[success] ffplay pond.dv

So "ffmpeg" can play it but "gst-ffmpeg" cannot.

 

 


It's just a shame there's not a windows port of libdv, otherwise I could try building dvdemux. I don't know if there's anything else I could try?

You could ask libdv mailing list if someone has already tried to compile or port libdv on win32.
You could try by your self to compile libdv using msys and mingw. (maybe it's already ported)

(http://libdv.sourceforge.net/)

It seems that libdv cannot be compiled with mingw:
see: http://www.nabble.com/dv-support-on-windows-td20035798.html

(note that there is a win32 port for pthread)

Julien


------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Phil Rendell
2009/6/29 Julien Isorce <[hidden email]>

2009/6/29 Phil Rendell <[hidden email]>


I also tried setting the lowres property of ffdec_dvvideo to 1/4 size to see if that would make a difference, but again, no luck, which leads me to believe that it's not a problem with decoding the stream.

Ok maybe ffdec_dv and ffdemux_dv are poor quality.

I have downloaded pond.dv   video sample file from  http://libdv.sourceforge.net/

Then:

with lastest gstreamer git, on linux

[fail] gst-launch-0.10 filesrc location=pond.dv ! ffdemux_dv ! ffdec_dvvideo ! xvimagesink
[fail] gst-launch-0.10 filesrc location=pond.dv ! dvdemux ! ffdec_dvideo ! xvimagesink
[fail] gst-launch-0.10 filesrc location=pond.dv ! ffdemux_dv ! dvdec ! xvimagesink
[success] gst-launch-0.10 filesrc location=pond.dv ! dvdemux ! dvdec ! xvimagesink
[success] ffplay pond.dv

So "ffmpeg" can play it but "gst-ffmpeg" cannot.

Thanks for trying that - attempting the upgrade was next on my list.
 

It's just a shame there's not a windows port of libdv, otherwise I could try building dvdemux. I don't know if there's anything else I could try?

You could ask libdv mailing list if someone has already tried to compile or port libdv on win32.
You could try by your self to compile libdv using msys and mingw. (maybe it's already ported)

(http://libdv.sourceforge.net/)

It seems that libdv cannot be compiled with mingw:
see: http://www.nabble.com/dv-support-on-windows-td20035798.html

(note that there is a win32 port for pthread)

I might give this a try. This is probably going to be a massively complicated and silly idea, but do you have any idea how complicated it would be to create an extension of the dshowvideosrc plugin to include some of the other elements in the DirectX pipeline? It's probably too difficult, particularly as I'm not a DirectX expert, but I was wondering about doing this being as I know that they work well in graphedit.

I'll try to have a look into how difficult it is to port libdv sometime tomorrow.

Thanks,

Phil

------------------------------------------------------------------------------

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Firewire cameras with DirectShow

Andoni Morales
Hi,

We are currently working on a new release of GStreamer-Winbuilds
(0.10.4) wich will comes with support for the following modules:
  *gstreamer-0.10.23
  *gst-plugins-base-0.10.23
  *gst-plugins-good-0.10.15
  *gst-plugins-bad-0.10.13
  *gst-plugins-ugly-0.10.12
  *gst-ffmpeg-0.10.8
  *gnonlin-0.10.11
  *gsy-python-0.10.15
  *gst-gl-0.10
  *farsight2

I tryed to play pond.dv but I get the following erro:  ffmpeg .:0::
Can't determine profile of DV input stream
Instead SMPTEBars.dv, wich is also in the libdv examples plays well.

You can download a preview of the new release here:
http://forja.rediris.es/frs/download.php/1381/GStreamer-WinBuild-0.10.4-preview1.7z

Delete the old c:\gstreamer folder and extract the contents of the 7z
file in c:\ (The old binaries are imcompatibles with the ones of the
next release because the are linked against different CRT's)

Andoni

2009/6/29 Phil Rendell <[hidden email]>:

> 2009/6/29 Julien Isorce <[hidden email]>
>>
>>> 2009/6/29 Phil Rendell <[hidden email]>
>>>>
>>>> I also tried setting the lowres property of ffdec_dvvideo to 1/4 size to
>>>> see if that would make a difference, but again, no luck, which leads me to
>>>> believe that it's not a problem with decoding the stream.
>>>
>>> Ok maybe ffdec_dv and ffdemux_dv are poor quality.
>>
>> I have downloaded pond.dv   video sample file from
>> http://libdv.sourceforge.net/
>>
>> Then:
>>
>> with lastest gstreamer git, on linux
>>
>> [fail] gst-launch-0.10 filesrc location=pond.dv ! ffdemux_dv !
>> ffdec_dvvideo ! xvimagesink
>> [fail] gst-launch-0.10 filesrc location=pond.dv ! dvdemux ! ffdec_dvideo !
>> xvimagesink
>> [fail] gst-launch-0.10 filesrc location=pond.dv ! ffdemux_dv ! dvdec !
>> xvimagesink
>> [success] gst-launch-0.10 filesrc location=pond.dv ! dvdemux ! dvdec !
>> xvimagesink
>> [success] ffplay pond.dv
>>
>> So "ffmpeg" can play it but "gst-ffmpeg" cannot.
>
> Thanks for trying that - attempting the upgrade was next on my list.
>
>
>>>> It's just a shame there's not a windows port of libdv, otherwise I could
>>>> try building dvdemux. I don't know if there's anything else I could try?
>>>
>>> You could ask libdv mailing list if someone has already tried to compile
>>> or port libdv on win32.
>>> You could try by your self to compile libdv using msys and mingw. (maybe
>>> it's already ported)
>>>
>>> (http://libdv.sourceforge.net/)
>>
>> It seems that libdv cannot be compiled with mingw:
>> see: http://www.nabble.com/dv-support-on-windows-td20035798.html
>>
>> (note that there is a win32 port for pthread)
>
> I might give this a try. This is probably going to be a massively
> complicated and silly idea, but do you have any idea how complicated it
> would be to create an extension of the dshowvideosrc plugin to include some
> of the other elements in the DirectX pipeline? It's probably too difficult,
> particularly as I'm not a DirectX expert, but I was wondering about doing
> this being as I know that they work well in graphedit.
>
> I'll try to have a look into how difficult it is to port libdv sometime
> tomorrow.
>
> Thanks,
>
> Phil
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>



--
Andoni Morales Alastruey

LongoMatch:The Digital Coach
http://www.longomatch.ylatuya.es

------------------------------------------------------------------------------
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel