X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=omx%2FSoftFFmpegVideo.cpp;h=101d3efc5f3b4d5e59de5ac89adf9191564f52d0;hb=4d8ed873ede86156e0b9b32b42057be6a35ff89f;hp=e91d4922ed7c7f770b09a9c6f5633513ab9a8028;hpb=d83c248fcdb423568e1777dfd1ec8e4a98c36333;p=android-x86%2Fexternal-stagefright-plugins.git diff --git a/omx/SoftFFmpegVideo.cpp b/omx/SoftFFmpegVideo.cpp index e91d492..101d3ef 100644 --- a/omx/SoftFFmpegVideo.cpp +++ b/omx/SoftFFmpegVideo.cpp @@ -93,9 +93,11 @@ void SoftFFmpegVideo::setDefaultCtx(AVCodecContext *avctx, const AVCodec *codec) avctx->error_concealment = 3; avctx->thread_count = 0; - if (fast) avctx->flags2 |= CODEC_FLAG2_FAST; - if(codec->capabilities & CODEC_CAP_DR1) + if (fast) avctx->flags2 |= AV_CODEC_FLAG2_FAST; +#ifdef CODEC_FLAG_EMU_EDGE + if (codec->capabilities & AV_CODEC_CAP_DR1) avctx->flags |= CODEC_FLAG_EMU_EDGE; +#endif } status_t SoftFFmpegVideo::initDecoder(enum AVCodecID codecID) { @@ -359,7 +361,7 @@ int32_t SoftFFmpegVideo::handleExtradata() { int orig_extradata_size = mCtx->extradata_size; mCtx->extradata_size += inHeader->nFilledLen; mCtx->extradata = (uint8_t *)realloc(mCtx->extradata, - mCtx->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); + mCtx->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); if (!mCtx->extradata) { ALOGE("ffmpeg video decoder failed to alloc extradata memory."); return ERR_OOM; @@ -369,7 +371,7 @@ int32_t SoftFFmpegVideo::handleExtradata() { inHeader->pBuffer + inHeader->nOffset, inHeader->nFilledLen); memset(mCtx->extradata + mCtx->extradata_size, 0, - FF_INPUT_BUFFER_PADDING_SIZE); + AV_INPUT_BUFFER_PADDING_SIZE); } } @@ -464,7 +466,7 @@ int32_t SoftFFmpegVideo::decodeVideo() { } if (mEOSStatus == INPUT_EOS_SEEN && (!inHeader || inHeader->nFilledLen == 0) - && !(mCtx->codec->capabilities & CODEC_CAP_DELAY)) { + && !(mCtx->codec->capabilities & AV_CODEC_CAP_DELAY)) { return ERR_FLUSHED; } @@ -484,7 +486,7 @@ int32_t SoftFFmpegVideo::decodeVideo() { if (!gotPic) { ALOGI("ffmpeg video decoder failed to get frame."); //stop sending empty packets if the decoder is finished - if ((mEOSStatus != INPUT_DATA_AVAILABLE && (mCtx->codec->capabilities & CODEC_CAP_DELAY) && + if ((mEOSStatus != INPUT_DATA_AVAILABLE && (mCtx->codec->capabilities & AV_CODEC_CAP_DELAY) && !inHeader) || inHeader->nFilledLen == 0) { ret = ERR_FLUSHED; } else { @@ -548,9 +550,12 @@ int32_t SoftFFmpegVideo::drainOneOutputBuffer() { } //process timestamps +#ifndef LIBAV_CONFIG_H if (decoder_reorder_pts == -1) { pts = av_frame_get_best_effort_timestamp(mFrame); - } else if (decoder_reorder_pts) { + } else +#endif + if (decoder_reorder_pts) { pts = mFrame->pkt_pts; } else { pts = mFrame->pkt_dts;