diff options
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/ad_ffmpeg.c | 27 | ||||
-rw-r--r-- | libmpcodecs/vd_ffmpeg.c | 36 | ||||
-rw-r--r-- | libmpcodecs/vf_lavc.c | 4 | ||||
-rw-r--r-- | libmpcodecs/vf_uspp.c | 7 |
4 files changed, 30 insertions, 44 deletions
diff --git a/libmpcodecs/ad_ffmpeg.c b/libmpcodecs/ad_ffmpeg.c index cd742cf8f8..4a5062ba00 100644 --- a/libmpcodecs/ad_ffmpeg.c +++ b/libmpcodecs/ad_ffmpeg.c @@ -23,6 +23,7 @@ #include <assert.h> #include <libavcodec/avcodec.h> +#include <libavutil/opt.h> #include "talloc.h" @@ -67,10 +68,10 @@ static int setup_format(sh_audio_t *sh_audio, { int sample_format = sh_audio->sample_format; switch (lavc_context->sample_fmt) { - case SAMPLE_FMT_U8: sample_format = AF_FORMAT_U8; break; - case SAMPLE_FMT_S16: sample_format = AF_FORMAT_S16_NE; break; - case SAMPLE_FMT_S32: sample_format = AF_FORMAT_S32_NE; break; - case SAMPLE_FMT_FLT: sample_format = AF_FORMAT_FLOAT_NE; break; + case AV_SAMPLE_FMT_U8: sample_format = AF_FORMAT_U8; break; + case AV_SAMPLE_FMT_S16: sample_format = AF_FORMAT_S16_NE; break; + case AV_SAMPLE_FMT_S32: sample_format = AF_FORMAT_S32_NE; break; + case AV_SAMPLE_FMT_FLT: sample_format = AF_FORMAT_FLOAT_NE; break; default: mp_msg(MSGT_DECAUDIO, MSGL_FATAL, "Unsupported sample format\n"); } @@ -119,10 +120,12 @@ static int init(sh_audio_t *sh_audio) struct priv *ctx = talloc_zero(NULL, struct priv); sh_audio->context = ctx; - lavc_context = avcodec_alloc_context(); + lavc_context = avcodec_alloc_context3(lavc_codec); ctx->avctx = lavc_context; - lavc_context->drc_scale = opts->drc_level; + // Always try to set - option only exists for AC3 at the moment + av_opt_set_double(lavc_context, "drc_scale", opts->drc_level, + AV_OPT_SEARCH_CHILDREN); lavc_context->sample_rate = sh_audio->samplerate; lavc_context->bit_rate = sh_audio->i_bps * 8; if (sh_audio->wf) { @@ -156,7 +159,7 @@ static int init(sh_audio_t *sh_audio) } /* open it */ - if (avcodec_open(lavc_context, lavc_codec) < 0) { + if (avcodec_open2(lavc_context, lavc_codec, NULL) < 0) { mp_tmsg(MSGT_DECAUDIO, MSGL_ERR, "Could not open codec.\n"); uninit(sh_audio); return 0; @@ -195,10 +198,10 @@ static int init(sh_audio_t *sh_audio) sh_audio->i_bps = sh_audio->wf->nAvgBytesPerSec; switch (lavc_context->sample_fmt) { - case SAMPLE_FMT_U8: - case SAMPLE_FMT_S16: - case SAMPLE_FMT_S32: - case SAMPLE_FMT_FLT: + case AV_SAMPLE_FMT_U8: + case AV_SAMPLE_FMT_S16: + case AV_SAMPLE_FMT_S32: + case AV_SAMPLE_FMT_FLT: break; default: uninit(sh_audio); @@ -215,7 +218,7 @@ static void uninit(sh_audio_t *sh) AVCodecContext *lavc_context = ctx->avctx; if (lavc_context) { - if (lavc_context->codec && avcodec_close(lavc_context) < 0) + if (avcodec_close(lavc_context) < 0) mp_tmsg(MSGT_DECVIDEO, MSGL_ERR, "Could not close codec.\n"); av_freep(&lavc_context->extradata); av_freep(&lavc_context); diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c index 0688aae7cc..cd59b05e79 100644 --- a/libmpcodecs/vd_ffmpeg.c +++ b/libmpcodecs/vd_ffmpeg.c @@ -22,13 +22,15 @@ #include <time.h> #include <stdbool.h> +#include <libavutil/common.h> +#include <libavutil/opt.h> + #include "talloc.h" #include "config.h" #include "mp_msg.h" #include "options.h" #include "av_opts.h" -#include "libavutil/common.h" #include "ffmpeg_files/intreadwrite.h" #include "mpbswap.h" #include "fmt-conversion.h" @@ -62,8 +64,6 @@ typedef struct { int do_dr1; int vo_initialized; int best_csp; - int b_age; - int ip_age[2]; int qp_stat[32]; double qp_sum; double inv_qp_sum; @@ -86,7 +86,6 @@ static void uninit(struct sh_video *sh); const m_option_t lavc_decode_opts_conf[] = { OPT_INTRANGE("bug", lavc_param.workaround_bugs, 0, -1, 999999), - OPT_INTRANGE("er", lavc_param.error_resilience, 0, 0, 99), OPT_FLAG_ON("gray", lavc_param.gray, 0), OPT_INTRANGE("idct", lavc_param.idct_algo, 0, 0, 99), OPT_INTRANGE("ec", lavc_param.error_concealment, 0, 0, 99), @@ -149,11 +148,10 @@ static int init(sh_video_t *sh) && lavc_codec->id != CODEC_ID_ROQ && lavc_codec->id != CODEC_ID_VP8 && lavc_codec->id != CODEC_ID_LAGARITH) ctx->do_dr1 = 1; - ctx->b_age = ctx->ip_age[0] = ctx->ip_age[1] = 256 * 256 * 256 * 64; ctx->ip_count = ctx->b_count = 0; ctx->pic = avcodec_alloc_frame(); - ctx->avctx = avcodec_alloc_context(); + ctx->avctx = avcodec_alloc_context3(lavc_codec); avctx = ctx->avctx; avctx->opaque = sh; avctx->codec_type = AVMEDIA_TYPE_VIDEO; @@ -209,7 +207,6 @@ static int init(sh_video_t *sh) avctx->coded_width = sh->disp_w; avctx->coded_height = sh->disp_h; avctx->workaround_bugs = lavc_param->workaround_bugs; - avctx->error_recognition = lavc_param->error_resilience; if (lavc_param->gray) avctx->flags |= CODEC_FLAG_GRAY; avctx->flags2 |= lavc_param->fast; @@ -272,7 +269,7 @@ static int init(sh_video_t *sh) * MJPG fourcc :( */ if (!sh->bih || sh->bih->biSize <= sizeof(*sh->bih)) break; - avctx->flags |= CODEC_FLAG_EXTERN_HUFF; + av_opt_set_int(avctx, "extern_huff", 1, AV_OPT_SEARCH_CHILDREN); avctx->extradata_size = sh->bih->biSize - sizeof(*sh->bih); avctx->extradata = av_mallocz(avctx->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); @@ -318,7 +315,7 @@ static int init(sh_video_t *sh) avctx->thread_count = lavc_param->threads; /* open it */ - if (avcodec_open(avctx, lavc_codec) < 0) { + if (avcodec_open2(avctx, lavc_codec, NULL) < 0) { mp_tmsg(MSGT_DECVIDEO, MSGL_ERR, "Could not open codec.\n"); uninit(sh); return 0; @@ -550,19 +547,6 @@ static int get_buffer(AVCodecContext *avctx, AVFrame *pic) pic->opaque = mpi; - if (pic->reference) { - pic->age = ctx->ip_age[0]; - - ctx->ip_age[0] = ctx->ip_age[1] + 1; - ctx->ip_age[1] = 1; - ctx->b_age++; - } else { - pic->age = ctx->b_age; - - ctx->ip_age[0]++; - ctx->ip_age[1]++; - ctx->b_age = 1; - } pic->type = FF_BUFFER_TYPE_USER; /* The libavcodec reordered_opaque functionality is implemented by @@ -708,16 +692,16 @@ static struct mp_image *decode(struct sh_video *sh, struct demux_packet *packet, all_frametime, (double)(len * 8) / sh->frametime / 1000.0, (double)(all_len * 8) / all_frametime / 1000.0); switch (pic->pict_type) { - case FF_I_TYPE: + case AV_PICTURE_TYPE_I: fprintf(fvstats, "type= I\n"); break; - case FF_P_TYPE: + case AV_PICTURE_TYPE_P: fprintf(fvstats, "type= P\n"); break; - case FF_S_TYPE: + case AV_PICTURE_TYPE_S: fprintf(fvstats, "type= S\n"); break; - case FF_B_TYPE: + case AV_PICTURE_TYPE_B: fprintf(fvstats, "type= B\n"); break; default: diff --git a/libmpcodecs/vf_lavc.c b/libmpcodecs/vf_lavc.c index ba870a8b85..b2c1dd756d 100644 --- a/libmpcodecs/vf_lavc.c +++ b/libmpcodecs/vf_lavc.c @@ -71,7 +71,7 @@ static int config(struct vf_instance *vf, vf->priv->outbuf_size=10000+width*height; // must be enough! vf->priv->outbuf = malloc(vf->priv->outbuf_size); - if (avcodec_open(&lavc_venc_context, vf->priv->codec) != 0) { + if (avcodec_open2(&lavc_venc_context, vf->priv->codec, NULL) != 0) { mp_tmsg(MSGT_VFILTER,MSGL_ERR,"Could not open codec.\n"); return 0; } @@ -143,7 +143,7 @@ static int vf_open(vf_instance_t *vf, char *args){ return 0; } - vf->priv->context=avcodec_alloc_context(); + vf->priv->context=avcodec_alloc_context3(vf->priv->codec); vf->priv->pic = avcodec_alloc_frame(); // TODO: parse args -> diff --git a/libmpcodecs/vf_uspp.c b/libmpcodecs/vf_uspp.c index 332d59ee22..ae044b19a6 100644 --- a/libmpcodecs/vf_uspp.c +++ b/libmpcodecs/vf_uspp.c @@ -222,8 +222,7 @@ static int config(struct vf_instance *vf, for(i=0; i< (1<<vf->priv->log2_count); i++){ AVCodecContext *avctx_enc; - avctx_enc= - vf->priv->avctx_enc[i]= avcodec_alloc_context(); + avctx_enc = vf->priv->avctx_enc[i] = avcodec_alloc_context3(enc); avctx_enc->width = width + BLOCK; avctx_enc->height = height + BLOCK; avctx_enc->time_base= (AVRational){1,25}; // meaningless @@ -233,8 +232,8 @@ static int config(struct vf_instance *vf, avctx_enc->flags = CODEC_FLAG_QSCALE | CODEC_FLAG_LOW_DELAY; avctx_enc->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL; avctx_enc->global_quality= 123; - avcodec_open(avctx_enc, enc); - assert(avctx_enc->codec); + int res = avcodec_open2(avctx_enc, enc, NULL); + assert(res >= 0); } vf->priv->frame= avcodec_alloc_frame(); vf->priv->frame_dec= avcodec_alloc_frame(); |