int fast = 1;
avctx->workaround_bugs = 1;
- avctx->lowres = 0;
- if(avctx->lowres > codec->max_lowres){
- ALOGW("The maximum value for lowres supported by the decoder is %d",
- codec->max_lowres);
- avctx->lowres= codec->max_lowres;
- }
avctx->idct_algo = 0;
avctx->skip_frame = AVDISCARD_DEFAULT;
avctx->skip_idct = AVDISCARD_DEFAULT;
avctx->error_concealment = 3;
avctx->thread_count = 0;
- if(avctx->lowres) avctx->flags |= CODEC_FLAG_EMU_EDGE;
- 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) {
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;
inHeader->pBuffer + inHeader->nOffset,
inHeader->nFilledLen);
memset(mCtx->extradata + mCtx->extradata_size, 0,
- FF_INPUT_BUFFER_PADDING_SIZE);
+ AV_INPUT_BUFFER_PADDING_SIZE);
}
}
}
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;
}
AVPacket pkt;
initPacket(&pkt, inHeader);
- av_frame_unref(mFrame);
-
err = avcodec_decode_video2(mCtx, mFrame, &gotPic, &pkt);
av_packet_unref(&pkt);
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 {
}
//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;