[Ffmpeg-devel] nb_streams is never initialized?

Gerald Dalley dalleyg
Tue Feb 28 17:20:59 CET 2006

The nb_streams field does not seem to be initialized.  I downloaded the 
latest source from CVS on 28 Feb 2006 and ran

    ./configure --enable-encoder=vc9 --enable-libogg --enable-vorbis 
--enable-theora --enable-faad --enable-xvid --enable-dts --enable-pp 
--enable-pthreads --enable-gpl
    sudo make install

If I then just start using the recommended "using libavcodec" style 
instructions, but look at the nb_streams, I see bogus values.  I'm 
attaching an example of the problem since the mplayer ftp server is not 
allowing me to create a directory as instructed.  I've attaching 
"badNbStreams.cpp" and a data file "cinepak.avi" (it's small--13k) that 
show the problem.  To run it, do the following:

    g++ badNbStreams.cpp -I/usr/local/include -L/usr/local/lib 
-lavformat -lavcodec

And I get the following printed to the console

    There are 134556816 streams after opening the file.
    Input #0, avi, from 'cinepak.avi':
      Duration: 00:00:00.3, bitrate: 345 kb/s
      Stream #0.0: Video: cinepak, 160x120, 29.97 fps
    There are 134556816 streams after finding stream info.

Note that the number of streams is wrong.  This file was created with 
VirtualDub by taking 9 image frames and encoding them using the default 
Cinepak arguments. 

I've grepped the ffmpeg source tree, and as far as I can tell, 
nb_streams is only ever initialized when using ffm.c.  I did

    cd ffmpeg
    grep nb_streams */*.c */*.h | less

and looked through each line one at a time.  Except for ffm.c, I could 
only fine code that reads the value.

Thanks in advance.

--Gerald Dalley
  dalleyg at mit.edu
---------8<---cut here------8<------------------------
#include <stdio.h>
#include <assert.h>
#include <ffmpeg/avcodec.h>
#include <ffmpeg/avformat.h>

int main(int argc, const char **argv)

  AVFormatContext *pFormatCtx;
  const char      *filename="cinepak.avi";
  assert(av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL) == 0);
  assert(pFormatCtx != NULL);
  printf("There are %d streams after opening the file.\n", pFormatCtx->nb_streams);
  assert(av_find_stream_info(pFormatCtx) >= 0);
  dump_format(pFormatCtx, 0, filename, false);
  printf("There are %d streams after finding stream info.\n", pFormatCtx->nb_streams);

  return 0;

-------------- next part --------------
A non-text attachment was scrubbed...
Name: cinepak.avi
Type: video/avi
Size: 12984 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20060228/8c8c8b5b/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dalleyg.vcf
Type: text/x-vcard
Size: 99 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20060228/8c8c8b5b/attachment.vcf>

More information about the ffmpeg-devel mailing list