Hi, this commit breaks building on opensuse 11.4/64 with scons, system  
ffmpeg is 0.62.

http://www.pasteall.org/21955

Cheers, mib.



Am 26.05.2011, 23:57 Uhr, schrieb Peter Schlaile <pe...@schlaile.de>:

> Revision: 36934
>           
> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36934
> Author:   schlaile
> Date:     2011-05-26 21:57:02 +0000 (Thu, 26 May 2011)
> Log Message:
> -----------
> == FFMPEG ==
>
> * removed a lot of old cruft code for ancient ffmpeg versions
> * made it compile again against latest ffmpeg / libav GIT
>   (also shouldn't break distro ffmpegs, since those API changes
>   have been introduced over a year ago. If it nevertheless breaks,
>   please send me an email)
>
> Modified Paths:
> --------------
>     trunk/blender/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
>     trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c
>     trunk/blender/source/blender/imbuf/intern/anim_movie.c
>     trunk/blender/source/blender/imbuf/intern/util.c
>     trunk/blender/source/blender/makesrna/intern/rna_scene.c
>     trunk/blender/source/gameengine/VideoTexture/VideoFFmpeg.cpp
>     trunk/blender/source/gameengine/VideoTexture/VideoFFmpeg.h
>
> Modified: trunk/blender/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
> ===================================================================
> ---  
> trunk/blender/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp    2011-05-26  
> 21:04:01 UTC (rev 36933)
> +++  
> trunk/blender/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp    2011-05-26  
> 21:57:02 UTC (rev 36934)
> @@ -52,6 +52,10 @@
>       int read_length, data_size;
> +     AVPacket tmp_pkt;
> +     
> +     av_init_packet(&tmp_pkt);
> +
>       // as long as there is still data in the package
>       while(audio_pkg_size > 0)
>       {
> @@ -64,16 +68,15 @@
>               // read samples from the packet
>               data_size = buf_size - buf_pos;
> -             /*read_length = avcodec_decode_audio3(m_codecCtx,
> -                     (int16_t*)(((data_t*)buffer.getBuffer())+buf_pos),
> -                     &data_size,
> -                     packet);*/
> -             read_length = avcodec_decode_audio2(m_codecCtx,
> -                                             
> (int16_t*)(((data_t*)buffer.getBuffer()) + buf_pos),
> -                                             &data_size,
> -                                             audio_pkg_data,
> -                                             audio_pkg_size);
> +             tmp_pkt.data = audio_pkg_data;
> +             tmp_pkt.size = audio_pkg_size;
> +
> +             read_length = avcodec_decode_audio3(
> +                     m_codecCtx,
> +                     (int16_t*)(((data_t*)buffer.getBuffer()) + buf_pos),
> +                     &data_size, &tmp_pkt);
> +
>               // read error, next packet!
>               if(read_length < 0)
>                       break;
> @@ -112,7 +115,7 @@
>       for(unsigned int i = 0; i < m_formatCtx->nb_streams; i++)
>       {
> -             if((m_formatCtx->streams[i]->codec->codec_type == 
> CODEC_TYPE_AUDIO)
> +             if((m_formatCtx->streams[i]->codec->codec_type == 
> AVMEDIA_TYPE_AUDIO)
>                       && (m_stream < 0))
>               {
>                       m_stream=i;
>
> Modified: trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c
> ===================================================================
> ---  
> trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c  2011-05-26  
> 21:04:01 UTC (rev 36933)
> +++  
> trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c  2011-05-26  
> 21:57:02 UTC (rev 36934)
> @@ -39,19 +39,6 @@
>  #include <libswscale/swscale.h>
>  #include <libavcodec/opt.h>
> -#if LIBAVFORMAT_VERSION_INT < (49 << 16)
> -#define FFMPEG_OLD_FRAME_RATE 1
> -#else
> -#define FFMPEG_CODEC_IS_POINTER 1
> -#define FFMPEG_CODEC_TIME_BASE  1
> -#endif
> -
> -#if LIBAVFORMAT_VERSION_INT >= (52 << 16)
> -#define OUTFILE_PB (outfile->pb)
> -#else
> -#define OUTFILE_PB (&outfile->pb)
> -#endif
> -
>  #if defined(WIN32) && (!(defined snprintf))
>  #define snprintf _snprintf
>  #endif
> @@ -114,24 +101,12 @@
>       }
>  }
> -#ifdef FFMPEG_CODEC_IS_POINTER
> -static AVCodecContext* get_codec_from_stream(AVStream* stream)
> -{
> -     return stream->codec;
> -}
> -#else
> -static AVCodecContext* get_codec_from_stream(AVStream* stream)
> -{
> -     return &stream->codec;
> -}
> -#endif
> -
>  static int write_audio_frame(void)
>  {
>       AVCodecContext* c = NULL;
>       AVPacket pkt;
> -     c = get_codec_from_stream(audio_stream);
> +     c = audio_stream->codec;
>       av_init_packet(&pkt);
>       pkt.size = 0;
> @@ -153,17 +128,15 @@
>       if(c->coded_frame && c->coded_frame->pts != AV_NOPTS_VALUE)
>       {
> -#ifdef FFMPEG_CODEC_TIME_BASE
>               pkt.pts = av_rescale_q(c->coded_frame->pts,
> -                                        c->time_base, 
> audio_stream->time_base);
> -#else
> -             pkt.pts = c->coded_frame->pts;
> -#endif
> +                                    c->time_base, audio_stream->time_base);
>               fprintf(stderr, "Audio Frame PTS: %d\n", (int)pkt.pts);
>       }
>       pkt.stream_index = audio_stream->index;
> -     pkt.flags |= PKT_FLAG_KEY;
> +
> +     pkt.flags |= AV_PKT_FLAG_KEY;
> +
>       if (av_interleaved_write_frame(outfile, &pkt) != 0) {
>               fprintf(stderr, "Error writing audio packet!\n");
>               return -1;
> @@ -263,10 +236,10 @@
>  {
>       int outsize = 0;
>       int ret, success= 1;
> -     AVCodecContext* c = get_codec_from_stream(video_stream);
> -#ifdef FFMPEG_CODEC_TIME_BASE
> +     AVCodecContext* c = video_stream->codec;
> +
>       frame->pts = rd->cfra - rd->sfra;
> -#endif
> +
>       if (rd->mode & R_FIELDS) {
>               frame->top_field_first = ((rd->mode & R_ODDFIELD) != 0);
>       }
> @@ -278,19 +251,15 @@
>               av_init_packet(&packet);
>               if (c->coded_frame->pts != AV_NOPTS_VALUE) {
> -#ifdef FFMPEG_CODEC_TIME_BASE
>                       packet.pts = av_rescale_q(c->coded_frame->pts,
>                                                 c->time_base,
>                                                 video_stream->time_base);
> -#else
> -                     packet.pts = c->coded_frame->pts;
> -#endif
>                       fprintf(stderr, "Video Frame PTS: %d\n", 
> (int)packet.pts);
>               } else {
>                       fprintf(stderr, "Video Frame PTS: not set\n");
>               }
>               if (c->coded_frame->key_frame)
> -                     packet.flags |= PKT_FLAG_KEY;
> +                     packet.flags |= AV_PKT_FLAG_KEY;
>               packet.stream_index = video_stream->index;
>               packet.data = video_buffer;
>               packet.size = outsize;
> @@ -312,7 +281,7 @@
>  {
>       uint8_t* rendered_frame;
> -     AVCodecContext* c = get_codec_from_stream(video_stream);
> +     AVCodecContext* c = video_stream->codec;
>       int width = c->width;
>       int height = c->height;
>       AVFrame* rgb_frame;
> @@ -396,7 +365,7 @@
>       switch(prop->type) {
>       case IDP_STRING:
>               fprintf(stderr, "%s.\n", IDP_String(prop));
> -             rv = av_set_string(c, prop->name, IDP_String(prop));
> +             av_set_string3(c, prop->name, IDP_String(prop), 1, &rv);
>               break;
>       case IDP_FLOAT:
>               fprintf(stderr, "%g.\n", IDP_Float(prop));
> @@ -407,7 +376,7 @@
>               
>               if (param) {
>                       if (IDP_Int(prop)) {
> -                             rv = av_set_string(c, name, param);
> +                             av_set_string3(c, name, param, 1, &rv);
>                       } else {
>                               return;
>                       }
> @@ -459,9 +428,9 @@
>       /* Set up the codec context */
>       
> -     c = get_codec_from_stream(st);
> +     c = st->codec;
>       c->codec_id = codec_id;
> -     c->codec_type = CODEC_TYPE_VIDEO;
> +     c->codec_type = AVMEDIA_TYPE_VIDEO;
>       /* Get some values from the current render settings */
> @@ -469,7 +438,6 @@
>       c->width = rectx;
>       c->height = recty;
> -#ifdef FFMPEG_CODEC_TIME_BASE
>       /* FIXME: Really bad hack (tm) for NTSC support */
>       if (ffmpeg_type == FFMPEG_DV && rd->frs_sec != 25) {
>               c->time_base.den = 2997;
> @@ -482,20 +450,6 @@
>               c->time_base.den = rd->frs_sec * 100000;
>               c->time_base.num = ((double) rd->frs_sec_base) * 100000;
>       }
> -#else
> -     /* FIXME: Really bad hack (tm) for NTSC support */
> -     if (ffmpeg_type == FFMPEG_DV && rd->frs_sec != 25) {
> -             c->frame_rate = 2997;
> -             c->frame_rate_base = 100;
> -     } else if ((double) ((int) rd->frs_sec_base) ==
> -                rd->frs_sec_base) {
> -             c->frame_rate = rd->frs_sec;
> -             c->frame_rate_base = rd->frs_sec_base;
> -     } else {
> -             c->frame_rate = rd->frs_sec * 100000;
> -             c->frame_rate_base = ((double) rd->frs_sec_base)*100000;
> -     }
> -#endif
>       
>       c->gop_size = ffmpeg_gop_size;
>       c->bit_rate = ffmpeg_video_bitrate*1000;
> @@ -519,7 +473,7 @@
>               c->pix_fmt = PIX_FMT_YUV422P;
>       }
> -     if (codec_id == CODEC_ID_XVID) {
> +     if (ffmpeg_type == FFMPEG_XVID) {
>               /* arghhhh ... */
>               c->pix_fmt = PIX_FMT_YUV420P;
>               c->codec_tag = (('D'<<24) + ('I'<<16) + ('V'<<8) + 'X');
> @@ -586,9 +540,9 @@
>       st = av_new_stream(of, 1);
>       if (!st) return NULL;
> -     c = get_codec_from_stream(st);
> +     c = st->codec;
>       c->codec_id = codec_id;
> -     c->codec_type = CODEC_TYPE_AUDIO;
> +     c->codec_type = AVMEDIA_TYPE_AUDIO;
>       c->sample_rate = rd->ffcodecdata.audio_mixrate;
>       c->bit_rate = ffmpeg_audio_bitrate*1000;
> @@ -666,13 +620,13 @@
>               BKE_report(reports, RPT_ERROR, "No valid formats found.");
>               return 0;
>       }
> -     fmt = guess_format(NULL, exts[0], NULL);
> +     fmt = av_guess_format(NULL, exts[0], NULL);
>       if (!fmt) {
>               BKE_report(reports, RPT_ERROR, "No valid formats found.");
>               return 0;
>       }
> -     of = av_alloc_format_context();
> +     of = avformat_alloc_context();
>       if (!of) {
>               BKE_report(reports, RPT_ERROR, "Error opening output file");
>               return 0;
> @@ -713,7 +667,7 @@
>               fmt->video_codec = CODEC_ID_H264;
>               break;
>       case FFMPEG_XVID:
> -             fmt->video_codec = CODEC_ID_XVID;
> +             fmt->video_codec = CODEC_ID_MPEG4;
>               break;
>       case FFMPEG_FLV:
>               fmt->video_codec = CODEC_ID_FLV1;
> @@ -772,7 +726,7 @@
>               return 0;
>       }
>       if (!(fmt->flags & AVFMT_NOFILE)) {
> -             if (url_fopen(&of->pb, name, URL_WRONLY) < 0) {
> +             if (avio_open(&of->pb, name, AVIO_FLAG_WRITE) < 0) {
>                       BKE_report(reports, RPT_ERROR, "Could not open file for 
> writing.");
>                       return 0;
>               }
> @@ -780,7 +734,7 @@
>       av_write_header(of);
>       outfile = of;
> -     dump_format(of, 0, name, 1);
> +     av_dump_format(of, 0, name, 1);
>       return 1;
>  }
> @@ -807,7 +761,7 @@
>       int outsize = 0;
>       int ret = 0;
>       
> -     AVCodecContext* c = get_codec_from_stream(video_stream);
> +     AVCodecContext* c = video_stream->codec;
>       /* get the delayed frames */
>       while (1) {
>               AVPacket packet;
> @@ -822,19 +776,15 @@
>                       break;
>               }
>               if (c->coded_frame->pts != AV_NOPTS_VALUE) {
> -#ifdef FFMPEG_CODEC_TIME_BASE
>                       packet.pts = av_rescale_q(c->coded_frame->pts,
>                                                 c->time_base,
>                                                 video_stream->time_base);
> -#else
> -                     packet.pts = c->coded_frame->pts;
> -#endif
>                       fprintf(stderr, "Video Frame PTS: %d\n", 
> (int)packet.pts);
>               } else {
>                       fprintf(stderr, "Video Frame PTS: not set\n");
>               }
>               if (c->coded_frame->key_frame) {
> -                     packet.flags |= PKT_FLAG_KEY;
> +                     packet.flags |= AV_PKT_FLAG_KEY;
>               }
>               packet.stream_index = video_stream->index;
>               packet.data = video_buffer;
> @@ -845,7 +795,7 @@
>                       break;
>               }
>       }
> -     avcodec_flush_buffers(get_codec_from_stream(video_stream));
> +     avcodec_flush_buffers(video_stream->codec);
>  }
> /* **********************************************************************
> @@ -902,7 +852,7 @@
>       if(audio_stream)
>       {
> -             AVCodecContext* c = get_codec_from_stream(audio_stream);
> +             AVCodecContext* c = audio_stream->codec;
>               AUD_DeviceSpecs specs;
>               specs.channels = c->channels;
>               specs.format = AUD_FORMAT_S16;
> @@ -945,7 +895,7 @@
>               success= (avframe && write_video_frame(rd, avframe, reports));
>               if (ffmpeg_autosplit) {
> -                     if (url_ftell(OUTFILE_PB) > FFMPEG_AUTOSPLIT_SIZE) {
> +                     if (avio_tell(outfile->pb) > FFMPEG_AUTOSPLIT_SIZE) {
>                               end_ffmpeg();
>                               ffmpeg_autosplit_count++;
>                               success &= start_ffmpeg_impl(rd, rectx, recty, 
> reports);
> @@ -974,7 +924,7 @@
>               audio_mixdown_device = 0;
>       }
>       
> -     if (video_stream && get_codec_from_stream(video_stream)) {
> +     if (video_stream && video_stream->codec) {
>               fprintf(stderr, "Flushing delayed frames...\n");
>               flush_ffmpeg ();                
>       }
> @@ -985,8 +935,8 @@
>       
>       /* Close the video codec */
> -     if (video_stream && get_codec_from_stream(video_stream)) {
> -             avcodec_close(get_codec_from_stream(video_stream));
> +     if (video_stream && video_stream->codec) {
> +             avcodec_close(video_stream->codec);
>               printf("zero video stream %p\n", video_stream);
>               video_stream = 0;
>       }
> @@ -1007,7 +957,7 @@
>       }
>       if (outfile && outfile->oformat) {
>               if (!(outfile->oformat->flags & AVFMT_NOFILE)) {
> -                     url_fclose(OUTFILE_PB);
> +                     avio_close(outfile->pb);
>               }
>       }
>       if (outfile) {
> @@ -1101,12 +1051,12 @@
>       switch (o->type) {
>       case FF_OPT_TYPE_INT:
>       case FF_OPT_TYPE_INT64:
> -             val.i = o->default_val;
> +             val.i = o->default_val.i64;
>               idp_type = IDP_INT;
>               break;
>       case FF_OPT_TYPE_DOUBLE:
>       case FF_OPT_TYPE_FLOAT:
> -             val.f = o->default_val;
> +             val.f = o->default_val.dbl;
>               idp_type = IDP_FLOAT;
>               break;
>       case FF_OPT_TYPE_STRING:
> @@ -1314,7 +1264,7 @@
>
> @@ Diff output truncated at 10240 characters. @@
> _______________________________________________
> Bf-blender-cvs mailing list
> bf-blender-...@blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
_______________________________________________
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers

Reply via email to