The patch.
diff -aur avifile-0.7.48~20090503.ds.orig/lib/aviread/FFReadHandler.cpp avifile-0.7.48~20090503.ds/lib/aviread/FFReadHandler.cpp --- avifile-0.7.48~20090503.ds.orig/lib/aviread/FFReadHandler.cpp 2009-05-01 20:56:45.000000000 +0200 +++ avifile-0.7.48~20090503.ds/lib/aviread/FFReadHandler.cpp 2011-08-20 12:07:23.000000000 +0200 @@ -122,8 +122,8 @@ uint_t cnt = 0; switch (type) { - case IStream::Audio: t = CODEC_TYPE_AUDIO; break; - case IStream::Video: t = CODEC_TYPE_VIDEO; break; + case IStream::Audio: t = AVMEDIA_TYPE_AUDIO; break; + case IStream::Video: t = AVMEDIA_TYPE_VIDEO; break; default: return 0; } @@ -147,8 +147,8 @@ switch (type) { - case IStream::Audio: t = CODEC_TYPE_AUDIO; break; - case IStream::Video: t = CODEC_TYPE_VIDEO; break; + case IStream::Audio: t = AVMEDIA_TYPE_AUDIO; break; + case IStream::Video: t = AVMEDIA_TYPE_VIDEO; break; default: return 0; } @@ -228,7 +228,7 @@ p->SetPos(s.m_uiPosition); p->SetTimestamp(((pkt.pts != (int64_t)AV_NOPTS_VALUE) ? pkt.pts : pkt.dts) * AV_TIME_BASE * ast.time_base.num / ast.time_base.den - s.GetStartTime()); - if (pkt.flags & PKT_FLAG_KEY) + if (pkt.flags & AV_PKT_FLAG_KEY) p->SetFlags(p->GetFlags() | KEYFRAME); if (p->GetTimestamp() < 0) @@ -237,16 +237,16 @@ //AVM_WRITE("FF reader", "st:%d n/d:%d/%d ts:%" PRId64 " d:%" PRId64 " dur:%d p:%" PRId64 "\n", // pkt.stream_index, ast.time_base.num, ast.time_base.den, // p->timestamp, pkt.dts, pkt.duration, pkt.pts); - //if (ast->codec.codec_type == CODEC_TYPE_VIDEO) printf("FRATE %d pts:%lld %d %d t:%lld\n", p->position, pkt.pts,ast->codec.frame_rate_base, ast->codec.frame_rate, p->timestamp); + //if (ast->codec.codec_type == AVMEDIA_TYPE_VIDEO) printf("FRATE %d pts:%lld %d %d t:%lld\n", p->position, pkt.pts,ast->codec.frame_rate_base, ast->codec.frame_rate, p->timestamp); //else printf("Bitrate %d\n", ast->codec.bit_rate); //printf("TIMESTAMP %" PRId64 " pts: %" PRId64 " dts: %" PRId64 "\n", p->timestamp, pkt.pts, pkt.dts); switch (ast.codec->codec_type) { - case CODEC_TYPE_AUDIO: + case AVMEDIA_TYPE_AUDIO: s.m_uiPosition += pkt.size; break; - case CODEC_TYPE_VIDEO: + case AVMEDIA_TYPE_VIDEO: default: s.m_uiPosition++; break; diff -aur avifile-0.7.48~20090503.ds.orig/lib/aviread/FFReadStream.cpp avifile-0.7.48~20090503.ds/lib/aviread/FFReadStream.cpp --- avifile-0.7.48~20090503.ds.orig/lib/aviread/FFReadStream.cpp 2009-05-03 10:56:34.000000000 +0200 +++ avifile-0.7.48~20090503.ds/lib/aviread/FFReadStream.cpp 2011-08-20 12:07:23.000000000 +0200 @@ -70,7 +70,7 @@ if (codec && avcodec_open(m_pAvContext, codec) == 0) { m_pAvContext->flags |= CODEC_FLAG_TRUNCATED; - m_pAvContext->hurry_up = 5; + m_pAvContext->skip_frame = AVDISCARD_NONKEY; //printf("Opened hurryup decoder %p %p\n", codec, m_pAvContext->codec->decode); } else @@ -157,7 +157,7 @@ switch (avs->codec->codec_type) { - case CODEC_TYPE_AUDIO: + case AVMEDIA_TYPE_AUDIO: m_StreamInfo.m_p->setAudio(avs->codec->channels, avs->codec->sample_rate, avs->codec->frame_bits); @@ -166,7 +166,7 @@ AVM_WRITE("FF stream", "Audio Format: %.4s (0x%x)\n", (const char*)&avs->codec->codec_tag, avs->codec->codec_tag); break; - case CODEC_TYPE_VIDEO: + case AVMEDIA_TYPE_VIDEO: m_StreamInfo.m_p->setVideo(avs->codec->width, avs->codec->height, 0, (float)avs->codec->sample_aspect_ratio.num / (float)avs->codec->sample_aspect_ratio.den); @@ -205,8 +205,8 @@ { switch (m_pHandler->m_pContext->streams[m_uiSId]->codec->codec_type) { - case CODEC_TYPE_AUDIO: return IStream::Audio; - case CODEC_TYPE_VIDEO: return IStream::Video; + case AVMEDIA_TYPE_AUDIO: return IStream::Audio; + case AVMEDIA_TYPE_VIDEO: return IStream::Video; default: return IStream::Other; } } @@ -218,7 +218,7 @@ int tag = get_fcc(avs->codec->codec_id); switch (avs->codec->codec_type) { - case CODEC_TYPE_AUDIO: + case AVMEDIA_TYPE_AUDIO: if (format && size >= sizeof(WAVEFORMATEX)) { WAVEFORMATEX& wfx = *(WAVEFORMATEX*)format; @@ -264,7 +264,7 @@ } return (tag ? sizeof(WAVEFORMATEX) : sizeof(FFMPEGWAVEFORMATEX)) + ((avs->codec->extradata) ? avs->codec->extradata_size : 0); - case CODEC_TYPE_VIDEO: + case AVMEDIA_TYPE_VIDEO: if (format && size >= sizeof(BITMAPINFOHEADER)) { memset(format, 0, sizeof(BITMAPINFOHEADER)); @@ -354,7 +354,7 @@ return m_pHandler->seek(time); if (time < 1.) { - if (m_pAvStream->codec->codec_type == CODEC_TYPE_AUDIO) + if (m_pAvStream->codec->codec_type == AVMEDIA_TYPE_AUDIO) // check if more streams are available // and seek only with the video return 0;