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