Thanks a lot Matt,
 
I tried GSpot and VirtualDub yesterday and they offer features that I need exactly. However, As vidl is still under development, I can't add video processing capability into my program.
 
Marc.

Matt Leotta <matt.leotta@gmail.com> wrote:
Marc,
It's possible that your AVI file is actually encoded with MPEG2.
AVI is just a file format that encapsulates audio and video streams.
The streams themselves can be encoded with various types of codecs.
The vidl_win_avicodec uses the VFW (video for windows) API which is no
longer supported by Microsoft. So AVI files using newer DirectShow
codecs can not be decoded. The vidl_mpegcodec handles MPEG2 streams
but is known to be quite buggy and can't decode all mpeg2 files. We
are working on improving support for MPEG and other codecs by using
the FFMPEG library. However, this is still under development.
What can you do about it now? First verify that do have an MPEG2
encoded stream. You can find free software such as GSpot
(http://www.headbands.com/gspot/) that will do this. Second, you
could try to decode your video and encode it using a VFW supported
codec. Another free program called VirtualDub
(http://www.virtualdub.org/) might help with this.

Good Luck,
Matt Leotta

Brown University
Dept. of Engineering

On 5/18/05, Marc Anderson wrote:
> Hi vxl guys,
>
> I use vidl_player to decompose a video file captured with a Canon Powershot
> camera into images. But it fails.
>
> Then I try to trace the program and find that the if statement (i.e. if
> (!codec) ) in the following code segment is true.
>
> code segment from vidl_io.cxx
> //////////////////////////////////////////////////////////////////////////////////////
> for (vidl_codec_sptr* i = vidl_codec::all_codecs(); *i; ++i)
> {
> if ((*i)->probe(fname))
> {
> vidl_codec_sptr codec = (*i)->load(fname, mode);
> if (!codec)
> return 0;
>
> #ifdef HAS_MPEG2
> file://this calls the dialog box necessary for initialization
> file://of the mpeg codec.
> vidl_mpegcodec * vmp = (*i)->castto_vidl_mpegcodec();
> if (vmp) {
> assert (load_mpegcodec_callback);
> load_mpegcodec_callback(vmp);
> }
> #endif
> vidl_clip_sptr clip = new vidl_clip(codec, start, end, increment);
> vcl_cout << "vidl_io::load_move. just got a new clip.\n";
> return clip;
> }
> }
> ///////////////////////////////////////////////////////////////////////////////////////////
>
> The output info is:
>
> vgui : registered 'mfc'
> vgui : initialize 'mfc'
> -- Registered codecs --
> ImageList
> MPEG
> AVI
> ---------------------------------
> File browser loading ...
> vidl_mpegcodec::~vidl_mpegcodec. entering
> first frame number in memeory is: -842150451
> frame_buffer DTOR. entering.
> frame_buffer DTOR. exiting
>
> vidl_mpegcodec::~vidl_mpegcodec. exiting
> vgui::uninit called
>
> It seems that vidl_io::load_clip calls the wrong codec class (mpeg instead
> of avi). What can I do about it?
>
> BTW, I do this on Windows 2000 with VC++6.0.
>
> Marc
>
>
>
> ________________________________
> Yahoo! Mail
> Stay connected, organized, and protected. Take the tour
>
>

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com