[PD-cvs] externals/pidip/modules Makefile, 1.15, 1.16 pdp_ffmpeg~.c, 1.6, 1.7 pdp_live~.c, 1.5, 1.6

Yves Degoyon sevyves at users.sourceforge.net
Tue Oct 4 22:37:17 CEST 2005


Update of /cvsroot/pure-data/externals/pidip/modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23844/modules

Modified Files:
	Makefile pdp_ffmpeg~.c pdp_live~.c 
Log Message:
PiDiP 0.12.19

Index: Makefile
===================================================================
RCS file: /cvsroot/pure-data/externals/pidip/modules/Makefile,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** Makefile	9 Jul 2005 19:35:40 -0000	1.15
--- Makefile	4 Oct 2005 20:37:14 -0000	1.16
***************
*** 22,26 ****
            pdp_mapper.o pdp_theonice~.o pdp_icedthe~.o\
            pdp_fdiff.o pdp_hue.o \
!            # pdp_xcanvas.o pdp_aa.o
  
  all_modules: $(OBJECTS) 
--- 22,26 ----
            pdp_mapper.o pdp_theonice~.o pdp_icedthe~.o\
            pdp_fdiff.o pdp_hue.o \
!           pdp_live~.o pdp_ffmpeg~.o # pdp_xcanvas.o pdp_aa.o
  
  all_modules: $(OBJECTS) 

Index: pdp_ffmpeg~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/pidip/modules/pdp_ffmpeg~.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** pdp_ffmpeg~.c	2 Jan 2005 06:02:48 -0000	1.6
--- pdp_ffmpeg~.c	4 Oct 2005 20:37:14 -0000	1.7
***************
*** 113,116 ****
--- 113,138 ----
          x->x_avcontext->streams[i] = st;
   
+ #if FFMPEG_VERSION_INT >= 0x000409
+         if ( ic->streams[i]->codec->codec_type == CODEC_TYPE_UNKNOWN )
+         {
+            post( "pdp_ffmpeg~ : stream #%d # type : unknown", i ); 
+         }
+         if ( ic->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO )
+         {
+            post( "pdp_ffmpeg~ : stream #%d # type : audio # id : %d # bitrate : %d", 
+                  i, ic->streams[i]->codec->codec_id, ic->streams[i]->codec->bit_rate ); 
+            post( "pdp_ffmpeg~ : sample rate : %d # channels : %d", 
+                  ic->streams[i]->codec->sample_rate, ic->streams[i]->codec->channels ); 
+            x->x_nbaudiostreams++;
+         }
+         if ( ic->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO )
+         {
+            post( "pdp_ffmpeg~ : stream #%d # type : video # id : %d # bitrate : %d", 
+                  i, ic->streams[i]->codec->codec_id, ic->streams[i]->codec->bit_rate ); 
+            post( "pdp_ffmpeg~ : framerate : %d # width : %d # height : %d", 
+                  av_q2d( ic->streams[i]->r_frame_rate ), ic->streams[i]->codec->width, ic->streams[i]->codec->height ); 
+            x->x_nbvideostreams++;
+         }
+ #else
          if ( ic->streams[i]->codec.codec_type == CODEC_TYPE_UNKNOWN )
          {
***************
*** 133,136 ****
--- 155,159 ----
             x->x_nbvideostreams++;
          }
+ #endif
      }
  
***************
*** 189,193 ****
--- 212,220 ----
     for(i=0;i<x->x_avcontext->nb_streams;i++)
     {
+ #if FFMPEG_VERSION_INT >= 0x000409
+      avcodec_close( x->x_avcontext->streams[i]->codec );
+ #else
       avcodec_close( &x->x_avcontext->streams[i]->codec );
+ #endif
       av_free( x->x_avcontext->streams[i] );
     }
***************
*** 248,252 ****
--- 275,283 ----
     {
        AVCodec *codec;
+ #if FFMPEG_VERSION_INT >= 0x000409
+       codec = avcodec_find_encoder(x->x_avcontext->streams[i]->codec->codec_id);
+ #else
        codec = avcodec_find_encoder(x->x_avcontext->streams[i]->codec.codec_id);
+ #endif
        if (!codec) 
        {
***************
*** 256,260 ****
--- 287,295 ----
            return;
        }
+ #if FFMPEG_VERSION_INT >= 0x000409
+       if (avcodec_open(x->x_avcontext->streams[i]->codec, codec) < 0) 
+ #else
        if (avcodec_open(&x->x_avcontext->streams[i]->codec, codec) < 0) 
+ #endif
        {
            post("pdp_ffmpeg~ : error while opening codec for stream #%d - maybe incorrect parameters such as bit_rate, rate, width or height\n", i);
***************
*** 372,377 ****
           svideoindex=0;
           saudioindex=0;
!          for (i=0; i<x->x_avcontext->nb_streams; i++)
!          {
               /* convert pixel format and size if needed */
             if ( x->x_avcontext->streams[i]->codec.codec_type == CODEC_TYPE_VIDEO )
--- 407,644 ----
           svideoindex=0;
           saudioindex=0;
! #if FFMPEG_VERSION_INT >= 0x000409
!         for (i=0; i<x->x_avcontext->nb_streams; i++)
!         {
!              /* convert pixel format and size if needed */
!            if ( x->x_avcontext->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO )
!            {
!              t_int size;
! 
!              // check if the framerate has been exceeded
!              if ( gettimeofday(&etime, NULL) == -1)
!              {
!                 post("pdp_ffmpeg~ : could not read time" );
!              }
!              if ( etime.tv_sec != x->x_cursec )
!              {
!                 x->x_cursec = etime.tv_sec;
!                 outlet_float( x->x_outlet_framerate, x->x_secondcount[ svideoindex ] );
!                 for (j=0; j<x->x_nbvideostreams; j++)
!                 {
!                    x->x_secondcount[ j ] = 0;
!                 }
!              }
!              framerate = av_q2d( x->x_avcontext->streams[i]->r_frame_rate );
!              ttime = ( ( x->x_nbframes + 1 ) % framerate ) * ( 1000 / framerate );
!              atime = ( etime.tv_usec / 1000 );
!              // post("pdp_theonice~ : actual : %d, theoretical : %d", atime, ttime );
!              if ( atime < ttime )
!              {
!                 x->x_nbframes_dropped++;
!                 continue;
!              }
! 
!              if ( x->x_avcontext->streams[i]->codec->pix_fmt != PIX_FMT_YUV420P )
!              {
!                /* create temporary picture */
!                size = avpicture_get_size(x->x_avcontext->streams[i]->codec->pix_fmt, 
!                                          x->x_vwidth, x->x_vheight );  
!                if (!x->x_buf1) x->x_buf1 = (uint8_t*) malloc(size);
!                if (!x->x_buf1)
!                {
!                  post ("pdp_ffmpeg~ : severe error : could not allocate image buffer" );
!                  return;
!                }
!                x->x_formatted_picture = &x->x_picture_format;
!                avpicture_fill(x->x_formatted_picture, x->x_buf1, 
!                               x->x_avcontext->streams[i]->codec->pix_fmt, 
!                               x->x_vwidth, x->x_vheight );  
!   
!                if (img_convert(x->x_formatted_picture, 
!                           x->x_avcontext->streams[i]->codec->pix_fmt,
!                           &pdppict, PIX_FMT_YUV420P,
!                           x->x_vwidth, x->x_vheight ) < 0) 
!                {
!                  post ("pdp_ffmpeg~ : error : image conversion failed" );
!                }
!              }
!              else
!              {
!                  x->x_formatted_picture = &pdppict;
!              }
! 
!              // post ( "pdp_ffmpeg~ : resampling [%d,%d] -> [%d,%d]",
!              //        x->x_vwidth, x->x_vheight,
!              //        x->x_avcontext->streams[i]->codec->width,
!              //        x->x_avcontext->streams[i]->codec->height );
!              if ( ( x->x_avcontext->streams[i]->codec->width < x->x_vwidth ) &&
!                   ( x->x_avcontext->streams[i]->codec->height < x->x_vheight ) )
!              {
!                owidth = x->x_avcontext->streams[i]->codec->width;
!                oheight = x->x_avcontext->streams[i]->codec->height;
! 
!                if (x->x_img_resample_ctx) img_resample_close(x->x_img_resample_ctx);
! 		
! #if LIBAVCODEC_BUILD > 4715	
!                x->x_img_resample_ctx = img_resample_full_init(
!                               owidth, oheight, 
!                               x->x_vwidth, x->x_vheight, 
!                               0, 0, 0, 0,
!                               0, 0, 0, 0);
! #else
!                x->x_img_resample_ctx = img_resample_full_init(
!                               owidth, oheight, 
!                               x->x_vwidth, x->x_vheight, 0, 0, 0, 0);
! #endif
!                  
!                size = avpicture_get_size(x->x_avcontext->streams[i]->codec->pix_fmt, 
!                                          owidth, oheight );
!                if ( !x->x_buf2 ) 
!                {
!                   x->x_buf2 = (uint8_t*) malloc(size);
!                }
!                if (!x->x_buf2)
!                {
!                  post ("pdp_ffmpeg~ : severe error : could not allocate image buffer" );
!                  return;
!                }
!                x->x_final_picture = &x->x_picture_final;
!                avpicture_fill(x->x_final_picture, x->x_buf2, 
!                               x->x_avcontext->streams[i]->codec->pix_fmt, 
!                               owidth, oheight );
!   
!                img_resample(x->x_img_resample_ctx, x->x_final_picture, x->x_formatted_picture);
!     
!              }
!              else
!              {
!                x->x_final_picture = x->x_formatted_picture;
!              }
! 
!              // encode and send the picture
!              {
!                AVFrame aframe;
! #if LIBAVCODEC_BUILD > 4715	
!                AVPacket vpkt;
! #endif
!                t_int fsize, ret;
!                 
!                  memset(&aframe, 0, sizeof(AVFrame));
!                  *(AVPicture*)&aframe= *x->x_final_picture;
!                  aframe.pts = etime.tv_sec*1000000 + etime.tv_usec;
!                  aframe.quality = x->x_avcontext->streams[i]->quality;
!   
!                  fsize = avcodec_encode_video(x->x_avcontext->streams[i]->codec,
!                              x->x_video_buffer, VIDEO_BUFFER_SIZE,
!                              &aframe);
! 
! #if LIBAVCODEC_BUILD > 4715	
!                  av_init_packet(&vpkt);
! 
!                  vpkt.pts = aframe.pts;
!                  if(x->x_avcontext->streams[i]->codec->coded_frame->key_frame) 
!                         vpkt.flags |= PKT_FLAG_KEY;
!                  vpkt.stream_index= i;
!                  vpkt.data= (uint8_t *)x->x_video_buffer;
!                  vpkt.size= fsize;
! 
!                  if ( ( ret = av_write_frame( x->x_avcontext, &vpkt) ) < 0 )
! #else
!                  if ( ( ret = av_write_frame( x->x_avcontext, i, x->x_video_buffer, fsize) ) < 0 )
! #endif
!                  {
!                     post ("pdp_ffmpeg~ : error : could not send frame : (ret=%d)", ret );
!                     return;
!                  }
!                  else
!                  {
!                     x->x_nbframes++;
!                     x->x_secondcount[ svideoindex ]++;
!                     // post ("pdp_ffmpeg~ : index=%d count=%d", svideoindex, x->x_secondcount[ svideoindex ] );
!                     svideoindex++;
!                  }
!              }
!            } 
! 
!               /* convert and stream audio data */
!            if ( x->x_avcontext->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO )
!            {
!                     // we assume audio is synchronized on next video stream 
!                  if ( ( (i+1) < x->x_avcontext->nb_streams ) &&
!                       ( x->x_avcontext->streams[i+1]->codec->codec_type == CODEC_TYPE_VIDEO ) )
!                  {
!                      x->x_audio_per_frame = 
!                         // 2*( (int) sys_getsr() ) / av_q2d( x->x_avcontext->streams[i+1]->r_frame_rate ) ;
!                         AUDIO_PACKET_SIZE;
!                      // post ("pdp_ffmpeg~ : transmit %d samples", x->x_audio_per_frame );
!                  }
!                  else
!                  {
!                      post ("pdp_ffmpeg~ : can't stream audio : video stream is not found" );
!                      continue;
!                  }
!        
!                  if ( x->x_audioin_position > x->x_audio_per_frame )
!                  {
!                     size = x->x_audioin_position;
!                     if ( ( x->x_avcontext->streams[i]->codec->sample_rate != (int)sys_getsr() ) ||
!                          ( x->x_avcontext->streams[i]->codec->channels != 2 ) )
!                     {
!                       if (x->x_audio_resample_ctx) audio_resample_close(x->x_audio_resample_ctx);
!                       x->x_audio_resample_ctx = 
!                        audio_resample_init(x->x_avcontext->streams[i]->codec->channels, 2,
!                                          x->x_avcontext->streams[i]->codec->sample_rate,
!                                          (int)sys_getsr());
!                       sizeout = audio_resample(x->x_audio_resample_ctx,
!                                     x->x_audio_enc_buf, 
!                                     x->x_audio_buf,
!                                     size / (x->x_avcontext->streams[i]->codec->channels * 2));
!                       pencbuf = (short*) &x->x_audio_enc_buf;
!                       sizeout = sizeout * x->x_avcontext->streams[i]->codec->channels * 2;
!                     }
!                     else
!                     {
!                       pencbuf = (short*) &x->x_audio_buf;
!                       sizeout = size;
!                     }
! 
!                       /* output resampled raw samples */
!                     fifo_write(&x->x_audio_fifo[saudioindex], (uint8_t*)pencbuf, sizeout,
!                                &x->x_audio_fifo[saudioindex].wptr);
! 
!                     framebytes = x->x_avcontext->streams[i]->codec->frame_size * 2 * 
!                                  x->x_avcontext->streams[i]->codec->channels;
!  
!                     while (fifo_read(&x->x_audio_fifo[saudioindex], (uint8_t*)pencbuf, framebytes,
!                                      &x->x_audio_fifo[saudioindex].rptr) == 0) 
!                     {
! #if LIBAVCODEC_BUILD > 4715	
!                       AVPacket apkt;
! #endif
!                          encsize = avcodec_encode_audio(x->x_avcontext->streams[i]->codec, 
!                                        (uint8_t*)&x->x_audio_out, sizeof(x->x_audio_out),
!                                        (short *)pencbuf);
! #if LIBAVCODEC_BUILD > 4715	
!                          av_init_packet(&apkt);
! 
!                          apkt.pts = etime.tv_sec*1000000 + etime.tv_usec;
!                          if(x->x_avcontext->streams[i]->codec->coded_frame->key_frame) 
!                                   apkt.flags |= PKT_FLAG_KEY;
!                          apkt.stream_index= i;
!                          apkt.data= (uint8_t *)x->x_audio_out;
!                          apkt.size= encsize;
!                          
!                          av_write_frame(x->x_avcontext, &apkt);
! #else
!                          av_write_frame(x->x_avcontext, i, x->x_audio_out, encsize);
! #endif
!                     }
!                     saudioindex++;
!                  }
!            }
!         }
! #else
!         for (i=0; i<x->x_avcontext->nb_streams; i++)
!         {
               /* convert pixel format and size if needed */
             if ( x->x_avcontext->streams[i]->codec.codec_type == CODEC_TYPE_VIDEO )
***************
*** 602,605 ****
--- 869,873 ----
             }
          }
+ #endif
          x->x_audioin_position=0;
      }

Index: pdp_live~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/pidip/modules/pdp_live~.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** pdp_live~.c	2 Jan 2005 06:02:49 -0000	1.5
--- pdp_live~.c	4 Oct 2005 20:37:14 -0000	1.6
***************
*** 277,281 ****
--- 277,285 ----
     {
           if ( !x->x_streaming ) break;
+ #if FFMPEG_VERSION_INT >= 0x000409
+          switch(x->x_avcontext->streams[x->x_pkt.stream_index]->codec->codec_type) 
+ #else
           switch(x->x_avcontext->streams[x->x_pkt.stream_index]->codec.codec_type) 
+ #endif
           {
               case CODEC_TYPE_AUDIO:
***************
*** 285,289 ****
--- 289,297 ----
                        return 0;
                      }
+ #if FFMPEG_VERSION_INT >= 0x000409
+                     chunksize = avcodec_decode_audio(x->x_avcontext->streams[x->x_pkt.stream_index]->codec, 
+ #else
                      chunksize = avcodec_decode_audio(&x->x_avcontext->streams[x->x_pkt.stream_index]->codec, 
+ #endif
                                                 &x->x_audio_buf[0], &audiosize,
                                                 pcktptr, length);
***************
*** 317,320 ****
--- 325,343 ----
                      //                (int)sys_getsr(), 2, x->x_audioin_position );
  
+ #if FFMPEG_VERSION_INT >= 0x000409
+                     x->x_audiochannels = x->x_avcontext->streams[x->x_pkt.stream_index]->codec->channels;
+                     x->x_samplerate = x->x_avcontext->streams[x->x_pkt.stream_index]->codec->sample_rate;
+                     if (x->x_audio_resample_ctx) audio_resample_close(x->x_audio_resample_ctx);
+                     x->x_audio_resample_ctx =
+                           audio_resample_init(DEFAULT_CHANNELS, 
+                                          x->x_avcontext->streams[x->x_pkt.stream_index]->codec->channels,
+                                          (int)sys_getsr(),
+                                          x->x_avcontext->streams[x->x_pkt.stream_index]->codec->sample_rate);
+ 
+                     sizeout = audio_resample(x->x_audio_resample_ctx,
+                                     &x->x_audio_in[x->x_audioin_position],
+                                     &x->x_audio_buf[0],
+                                     audiosize/(x->x_avcontext->streams[x->x_pkt.stream_index]->codec->channels * sizeof(short)));
+ #else
                      x->x_audiochannels = x->x_avcontext->streams[x->x_pkt.stream_index]->codec.channels;
                      x->x_samplerate = x->x_avcontext->streams[x->x_pkt.stream_index]->codec.sample_rate;
***************
*** 330,333 ****
--- 353,357 ----
                                      &x->x_audio_buf[0],
                                      audiosize/(x->x_avcontext->streams[x->x_pkt.stream_index]->codec.channels * sizeof(short)));
+ #endif
                      sizeout = sizeout * DEFAULT_CHANNELS;
  
***************
*** 355,358 ****
--- 379,401 ----
               case CODEC_TYPE_VIDEO:
  
+ #if FFMPEG_VERSION_INT >= 0x000409
+                     imagesize = (x->x_avcontext->streams[x->x_pkt.stream_index]->codec->width * 
+                                  x->x_avcontext->streams[x->x_pkt.stream_index]->codec->height * 3) / 2; // yuv planar
+ 
+                     x->x_framerate = ( t_int ) av_q2d( x->x_avcontext->streams[x->x_pkt.stream_index]->r_frame_rate );
+                     if ( x->x_framerate == 0 ) x->x_framerate = DEFAULT_FRAME_RATE;
+                     x->x_videoindex = x->x_pkt.stream_index; 
+ 
+                     chunksize = avcodec_decode_video(
+                                    x->x_avcontext->streams[x->x_pkt.stream_index]->codec,
+                                    &frame, &pictureok, 
+                                    pcktptr, length);
+                     if ( x->x_avcontext->streams[x->x_pkt.stream_index]->codec->pix_fmt != PIX_FMT_YUV420P )
+                     {
+                        post( "pdp_live~ : unsupported image format : %d", 
+                               x->x_avcontext->streams[x->x_pkt.stream_index]->codec->pix_fmt ); 
+                        pictureok = 0;
+                     }
+ #else
                      imagesize = (x->x_avcontext->streams[x->x_pkt.stream_index]->codec.width * 
                                   x->x_avcontext->streams[x->x_pkt.stream_index]->codec.height * 3) / 2; // yuv planar
***************
*** 372,384 ****
                         pictureok = 0;
                      }
!                     // post( "pdp_live~ : decoded new frame : type=%d format=%d (w=%d) (h=%d) (linesizes=%d,%d,%d,%d)", 
!                     //           frame.pict_type,
!                     //           x->x_avcontext->streams[x->x_pkt.stream_index]->codec.pix_fmt, 
!                     //           x->x_avcontext->streams[x->x_pkt.stream_index]->codec.width, 
!                     //           x->x_avcontext->streams[x->x_pkt.stream_index]->codec.height, 
!                     //           frame.linesize[0],
!                     //           frame.linesize[1],
!                     //           frame.linesize[2],
!                     //           frame.linesize[3] );
                      x->x_picture_decoded = *(AVPicture*)&frame;
                      x->x_avcontext->streams[x->x_pkt.stream_index]->quality= frame.quality;
--- 415,419 ----
                         pictureok = 0;
                      }
! #endif
                      x->x_picture_decoded = *(AVPicture*)&frame;
                      x->x_avcontext->streams[x->x_pkt.stream_index]->quality= frame.quality;
***************
*** 404,409 ****
--- 439,449 ----
                          }
                          x->x_newpicture=1;
+ #if FFMPEG_VERSION_INT >= 0x000409
+                         x->x_vwidth = x->x_avcontext->streams[x->x_pkt.stream_index]->codec->width;
+                         x->x_vheight = x->x_avcontext->streams[x->x_pkt.stream_index]->codec->height;
+ #else
                          x->x_vwidth = x->x_avcontext->streams[x->x_pkt.stream_index]->codec.width;
                          x->x_vheight = x->x_avcontext->streams[x->x_pkt.stream_index]->codec.height;
+ #endif
                          x->x_vsize = x->x_vwidth*x->x_vheight;
  
***************
*** 544,548 ****
      x->x_avparameters.sample_rate = sys_getsr();
      x->x_avparameters.channels = DEFAULT_CHANNELS;
-     x->x_avparameters.frame_rate = DEFAULT_FRAME_RATE;
      x->x_avparameters.width = DEFAULT_WIDTH;
      if ( x->x_framerate = 0 ) x->x_framerate = DEFAULT_FRAME_RATE;
--- 584,587 ----
***************
*** 585,588 ****
--- 624,652 ----
        AVStream *st;
  
+ #if FFMPEG_VERSION_INT >= 0x000409
+         if ( x->x_avcontext->streams[i]->codec->codec_type == CODEC_TYPE_UNKNOWN )
+         {
+            post( "pdp_live~ : stream #%d # type : unknown", i ); 
+         }
+         if ( x->x_avcontext->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO )
+         {
+            post( "pdp_live~ : stream #%d # type : audio # id : %d # bitrate : %d", 
+                  i, x->x_avcontext->streams[i]->codec->codec_id, x->x_avcontext->streams[i]->codec->bit_rate ); 
+            post( "pdp_live~ : sample rate : %d # channels : %d", 
+                  x->x_avcontext->streams[i]->codec->sample_rate, x->x_avcontext->streams[i]->codec->channels ); 
+            x->x_nbaudiostreams++;
+         }
+         if ( x->x_avcontext->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO )
+         {
+            post( "pdp_live~ : stream #%d # type : video # id : %d # bitrate : %d", 
+                  i, x->x_avcontext->streams[i]->codec->codec_id, 
+                  x->x_avcontext->streams[i]->codec->bit_rate ); 
+            post( "pdp_live~ : framerate : %d # width : %d # height : %d", 
+                  av_q2d( x->x_avcontext->streams[i]->r_frame_rate )/10000, 
+                  x->x_avcontext->streams[i]->codec->width, 
+                  x->x_avcontext->streams[i]->codec->height ); 
+            x->x_nbvideostreams++;
+         }
+ #else
          if ( x->x_avcontext->streams[i]->codec.codec_type == CODEC_TYPE_UNKNOWN )
          {
***************
*** 608,611 ****
--- 672,676 ----
             x->x_nbvideostreams++;
          }
+ #endif
      }
  
***************
*** 615,619 ****
--- 680,688 ----
        AVCodec *codec;
        post("pdp_live~ : opening decoder for stream #%d", i);
+ #if FFMPEG_VERSION_INT >= 0x000409
+       codec = avcodec_find_decoder(x->x_avcontext->streams[i]->codec->codec_id);
+ #else
        codec = avcodec_find_decoder(x->x_avcontext->streams[i]->codec.codec_id);
+ #endif
        if (!codec) 
        {
***************
*** 625,629 ****
--- 694,702 ----
            pthread_exit(NULL);
        }
+ #if FFMPEG_VERSION_INT >= 0x000409
+       if (avcodec_open(x->x_avcontext->streams[i]->codec, codec) < 0) 
+ #else
        if (avcodec_open(&x->x_avcontext->streams[i]->codec, codec) < 0) 
+ #endif
        {
            post("pdp_live~ : error while opening codec for stream #%d - maybe incorrect parameters such as bit_rate, rate, width or height\n", i);
***************
*** 704,708 ****
--- 777,785 ----
       for(i=0;i<x->x_avcontext->nb_streams;i++) 
       {
+ #if FFMPEG_VERSION_INT >= 0x000409
+        if (avcodec_close(x->x_avcontext->streams[i]->codec) < 0) 
+ #else
         if (avcodec_close(&x->x_avcontext->streams[i]->codec) < 0) 
+ #endif
         {
             post("pdp_live~ : error while closing codec for stream #%d", i);





More information about the Pd-cvs mailing list