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 <[email protected]>: > 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 > [email protected] > http://lists.blender.org/mailman/listinfo/bf-blender-cvs _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
