LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

What determines which AVI codecs are available in LabView

I need to stream video from several webcams in parallel and I'm looking for ways to speed up the AVI saving part, since that seems to be the bottleneck right now.

 

I am not clear on what exactly determines which AVI codecs are available in LabView. Currently I'm using an xvid codec through ffdshow, which works ok, but I'd like to switch to a hardware accelarated codec (using QuickSync). I've installed the Intel Media SDK, which installs a few DirectShow filters, but none of them show up in the AVI codec list. I've tried both 32 and 64 bit filters and both 32 and 64 bit LabView. The documentation on this is extremely sparse, so I hope someone here can help.

 

Thanks!

Ulf

Message 1 of 14
(4,041 Views)

The OS determines that. Have a look at the following discussion:

http://forums.ni.com/t5/Machine-Vision/DirectX-Error-playing-AVI-file/m-p/1089274/

Adnan Zafar
Certified LabVIEW Architect
Coleman Technologies
0 Kudos
Message 2 of 14
(4,025 Views)

I looked at that thread, but didn't see anything particularly relevant to my question. I don't have any issues with crashes, I'm just trying to figure it out what exactly it is about a DirectShow (supposedly) filter that makes it show up in the Labview list. Specifically, I installed the Intel Media SDK which comes with a few example decoder and encoder DirectShow filters, but none of them show up in the list.

0 Kudos
Message 3 of 14
(4,021 Views)

Hey Ulf,

 

If the codec does not show up in the list it could mean that it was not installed correctly or it is not supported. We are constantly working to have as many codecs supported as possible but it may not be supported at this time.

Patrick H | National Instruments | Software Engineer
0 Kudos
Message 4 of 14
(3,997 Views)

Hi Patrick,

 

I can see/use the codecs in other applications, so it seems to be installed correctly.

 

Could you please provide a little more information about what determines whether a codec is supported or not?

Does that mean that not all DirectShow codecs are supported? If that is the case, having a list of supported ones would be very helpful...

 

Thanks,

Ulf

0 Kudos
Message 5 of 14
(3,995 Views)

Hey ULF,

 

If you open a new VI and put IMAQ AVI Get Filter Names on the block diagram. Then wire an indicator from the output, the VI will return a list of supported codecs you have installed. Since you have installed the codec in question correctly and use it in other applications then it will show up if it is supported.

 

 

Patrick H | National Instruments | Software Engineer
0 Kudos
Message 6 of 14
(3,985 Views)

Yes, I've done that. The codec in question does not show up.

 

Could you PLEASE provide some more information about what makes a codec "supported" and/or a list of supported codecs?

0 Kudos
Message 7 of 14
(3,983 Views)

Certain codecs being supported is based off the resources available in out R&D department and the direction our Marketing Engineers want to take this product. We are constantly trying to support more codecs but it appears at this time the codec in question has not been implemented. I apologize for the inconvenience.

Patrick H | National Instruments | Software Engineer
0 Kudos
Message 8 of 14
(3,967 Views)

I'm sorry, but this is getting a little ridiculous. Why is no one ever giving a straight answer to the encoder question? There are numerous similar posts, but I have not found a single real answer to any of the two questions.

 

1. What determines whether an encoder is "supported", i.e. available in LabView. Some posts suggested that any DirectShow filter/encoder is supported, but a) that does not seem to be true empirically and b) if you had a generic DirectShow interface, you wouldn't need to do any extra work to "support" other/new encoders.

 

2. Assuming there is something beyond being a DirectShow filter/encoder that's needed for it to be available in LabView, what is that property?

  a) Do you hard-code a list of supported codecs into your routines? In that case why don't you release a list?

  b) If it is some programmatic determination, what is that? Given the dismal support on this matter, you are driving people into considering writing their own codecs, but in that case you could at least say what one has to do in order to get the self-written encoder to be available.

 

To be clear, all the applications engineers I've ever worked with were really helpful and I do not doubt any of their abilities, but this continued stream of non-answers is not only very frustrating, but rather suspicious, making it seem like they're somehow not "allowed" to give a real answer.

 

Ulf

Message 9 of 14
(3,959 Views)

The Get Filter Names VI returns only the filters that are able to work with the AVI functions. The VI gets the list of filters from the DirectShow software, and then it tests each one with a sample frame to see if it can compress the image or not. The function then returns a list of the codecs that work. This does not mean that the function works only with Microsoft approved codecs. So if the custom codec can align with the DirectShow architecture, then your codec should be detected by the IMAQ AVI functions.

 

Here is a list of default filters:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd375464(v=vs.85).aspx

 

Further information on developing a custom DirectShow filter:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd390354(v=vs.85).aspx

 

DylanC

 

0 Kudos
Message 10 of 14
(3,940 Views)