Ticket #13186: 011_deprecated_codec_context_options.patch

File 011_deprecated_codec_context_options.patch, 8.5 KB (added by Peter Bennett, 3 years ago)

Patch 011 - Fix deprecated AVCodecContext fields plus some other left overs.

  • mythtv/libs/libmythtv/DVD/avformatdecoderdvd.cpp

    diff --git a/mythtv/libs/libmythtv/DVD/avformatdecoderdvd.cpp b/mythtv/libs/libmythtv/DVD/avformatdecoderdvd.cpp
    index f182bf2..2199c84 100644
    a b void AvFormatDecoderDVD::StreamChangeCheck(void) 
    606606    for (uint i = 0; i < ic->nb_streams; i++)
    607607    {
    608608        AVStream *st = ic->streams[i];
    609         if (st && st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
     609        if (st && st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
    610610        {
    611611            selectedTrack[kTrackTypeVideo].av_stream_index = i;
    612612            break;
  • mythtv/libs/libmythtv/avformatdecoder.cpp

    diff --git a/mythtv/libs/libmythtv/avformatdecoder.cpp b/mythtv/libs/libmythtv/avformatdecoder.cpp
    index 0b7a8a7..c44234b 100644
    a b void AvFormatDecoder::InitVideoCodec(AVStream *stream, AVCodecContext *enc, 
    15591559    enc->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK;
    15601560    enc->idct_algo = FF_IDCT_AUTO;
    15611561    enc->debug = 0;
    1562     enc->error_rate = 0;
     1562    // enc->error_rate = 0;
    15631563
    15641564    AVCodec *codec = avcodec_find_decoder(enc->codec_id);
    15651565
    bool AvFormatDecoder::ProcessRawTextPacket(AVPacket *pkt) 
    40854085    delete dec;
    40864086
    40874087    m_parent->GetSubReader(pkt->stream_index+0x2000)->
    4088         AddRawTextSubtitle(list, pkt->convergence_duration);
     4088        AddRawTextSubtitle(list, pkt->duration);
    40894089
    40904090    return true;
    40914091}
    bool AvFormatDecoder::GetFrame(DecodeType decodetype) 
    50305030
    50315031        if (storevideoframes && codec_type == AVMEDIA_TYPE_VIDEO)
    50325032        {
    5033             av_dup_packet(pkt);
     5033            // av_dup_packet(pkt);
    50345034            storedPackets.append(pkt);
    50355035            pkt = NULL;
    50365036            continue;
  • mythtv/libs/libmythtv/avformatwriter.cpp

    diff --git a/mythtv/libs/libmythtv/avformatwriter.cpp b/mythtv/libs/libmythtv/avformatwriter.cpp
    index ed3ba0a..d12961e 100644
    a b AVStream* AVFormatWriter::AddVideoStream(void) 
    520520            (c->bit_rate > 1000000)) // 14,000 Kbps aka 14Mbps maximum permissable rate for Baseline 3.1
    521521        {
    522522            c->level = 40;
     523            // AVCodecContext AVOptions:
    523524            av_opt_set(c->priv_data, "profile", "main", 0);
    524525        }
    525526        else if ((c->height > 576) || // Approximate highest resolution supported by Baseline 3.0
    526527            (c->bit_rate > 1000000))  // 10,000 Kbps aka 10Mbps maximum permissable rate for Baseline 3.0
    527528        {
    528529            c->level = 31;
     530            // AVCodecContext AVOptions:
    529531            av_opt_set(c->priv_data, "profile", "baseline", 0);
    530532        }
    531533        else
    532534        {
    533535            c->level = 30; // Baseline 3.0 is the most widely supported, but it's limited to SD
     536            // AVCodecContext AVOptions:
    534537            av_opt_set(c->priv_data, "profile", "baseline", 0);
    535538        }
    536539
    537         c->coder_type            = 0;
     540        // AVCodecContext AVOptions:
     541        // c->coder_type            = 0;
     542        av_opt_set_int(c, "coder", FF_CODER_TYPE_VLC, 0);
    538543        c->max_b_frames          = 0;
    539544        c->slices                = 8;
    540545
    541546        c->flags                |= CODEC_FLAG_LOOP_FILTER;
    542547        c->me_cmp               |= 1;
    543         c->me_method             = ME_HEX;
     548        // c->me_method             = ME_HEX;
     549        av_opt_set_int(c, "me_method", ME_HEX, 0);
    544550        c->me_subpel_quality     = 6;
    545551        c->me_range              = 16;
    546552        c->keyint_min            = 25;
    547         c->scenechange_threshold = 40;
     553        // c->scenechange_threshold = 40;
     554        av_opt_set_int(c, "sc_threshold", 40, 0);
    548555        c->i_quant_factor        = 0.71;
    549         c->b_frame_strategy      = 1;
     556        // c->b_frame_strategy      = 1;
     557        av_opt_set_int(c, "b_strategy", 1, 0);
    550558        c->qcompress             = 0.6;
    551559        c->qmin                  = 10;
    552560        c->qmax                  = 51;
    AVStream* AVFormatWriter::AddVideoStream(void) 
    554562        c->refs                  = 3;
    555563        c->trellis               = 0;
    556564
     565        // libx264 AVOptions:
    557566        av_opt_set(c, "partitions", "i8x8,i4x4,p8x8,b8x8", 0);
    558567        av_opt_set_int(c, "direct-pred", 1, 0);
    559568        av_opt_set_int(c, "rc-lookahead", 0, 0);
    AVStream* AVFormatWriter::AddVideoStream(void) 
    562571        av_opt_set_int(c, "8x8dct", 0, 0);
    563572        av_opt_set_int(c, "weightb", 0, 0);
    564573
     574        // libx264 AVOptions:
    565575        av_opt_set(c->priv_data, "preset",
    566576                   m_encodingPreset.toLatin1().constData(), 0);
    567577        av_opt_set(c->priv_data, "tune",
    AVFrame* AVFormatWriter::AllocPicture(enum AVPixelFormat pix_fmt) 
    734744            LOC + "AllocPicture(): avcodec_alloc_frame() failed");
    735745        return NULL;
    736746    }
    737     size = avpicture_get_size(pix_fmt, m_width, m_height);
     747    size = av_image_get_buffer_size(pix_fmt, m_width, m_height, IMAGE_ALIGN);
    738748    picture_buf = (unsigned char *)av_malloc(size);
    739749    if (!picture_buf)
    740750    {
  • mythtv/libs/libmythtv/recorders/NuppelVideoRecorder.cpp

    diff --git a/mythtv/libs/libmythtv/recorders/NuppelVideoRecorder.cpp b/mythtv/libs/libmythtv/recorders/NuppelVideoRecorder.cpp
    index cf9daf8..fe1e3b2 100644
    a b bool NuppelVideoRecorder::SetupAVCodecVideo(void) 
    582582                   break;
    583583    }
    584584
     585    AVDictionary *opts = NULL;
     586
    585587    mpa_vidctx->bit_rate = usebitrate;
    586588    mpa_vidctx->bit_rate_tolerance = usebitrate * 100;
    587589    mpa_vidctx->qmin = maxquality;
    bool NuppelVideoRecorder::SetupAVCodecVideo(void) 
    593595    mpa_vidctx->qblur = 0.5;
    594596    mpa_vidctx->max_b_frames = 0;
    595597    mpa_vidctx->b_quant_factor = 0;
    596     mpa_vidctx->rc_strategy = 2;
    597     mpa_vidctx->b_frame_strategy = 0;
     598    av_dict_set(&opts, "rc_strategy", "2", 0);
     599    av_dict_set(&opts, "b_strategy", "0", 0);
    598600    mpa_vidctx->gop_size = 30;
    599601    mpa_vidctx->rc_max_rate = 0;
    600602    mpa_vidctx->rc_min_rate = 0;
    601603    mpa_vidctx->rc_buffer_size = 0;
    602     mpa_vidctx->rc_buffer_aggressivity = 1.0;
     604    // mpa_vidctx->rc_buffer_aggressivity = 1.0;
     605    // rc_buf_aggressivity is now "currently useless"
    603606    mpa_vidctx->rc_override_count = 0;
    604     mpa_vidctx->rc_initial_cplx = 0;
     607    av_dict_set(&opts, "rc_init_cplx", "0", 0);
    605608    mpa_vidctx->dct_algo = FF_DCT_AUTO;
    606609    mpa_vidctx->idct_algo = FF_IDCT_AUTO;
    607     mpa_vidctx->prediction_method = FF_PRED_LEFT;
     610    av_dict_set_int(&opts, "pred", FF_PRED_LEFT, 0);
    608611    if (videocodec.toLower() == "huffyuv" || videocodec.toLower() == "mjpeg")
    609612        mpa_vidctx->strict_std_compliance = FF_COMPLIANCE_UNOFFICIAL;
    610613    mpa_vidctx->thread_count = encoding_thread_count;
    611614
    612615    QMutexLocker locker(avcodeclock);
    613616
    614     if (avcodec_open2(mpa_vidctx, mpa_vidcodec, NULL) < 0)
     617    if (avcodec_open2(mpa_vidctx, mpa_vidcodec, &opts) < 0)
    615618    {
    616619        LOG(VB_GENERAL, LOG_ERR, LOC + QString("Unable to open FFMPEG/%1 codec")
    617620                .arg(videocodec));
  • mythtv/programs/mythtranscode/mpeg2fix.cpp

    diff --git a/mythtv/programs/mythtranscode/mpeg2fix.cpp b/mythtv/programs/mythtranscode/mpeg2fix.cpp
    index 2a85480..8248da8 100644
    a b bool MPEG2fixup::BuildFrame(AVPacket *pkt, QString fname) 
    12651265    c->pix_fmt = AV_PIX_FMT_YUV420P;
    12661266    c->max_b_frames = 0;
    12671267    c->has_b_frames = 0;
    1268     c->rc_buffer_aggressivity = 1;
     1268    // c->rc_buffer_aggressivity = 1;
     1269    // rc_buf_aggressivity is now "currently useless"
     1270
    12691271    //  c->profile = vidCC->profile;
    12701272    //  c->level = vidCC->level;
    12711273    c->rc_buffer_size = 0;
  • mythtv/programs/mythtranscode/mpeg2fix.h

    diff --git a/mythtv/programs/mythtranscode/mpeg2fix.h b/mythtv/programs/mythtranscode/mpeg2fix.h
    index b0d4cf1..30ae7aa 100644
    a b extern "C" 
    3535// MythTV
    3636#include "transcodedefs.h"
    3737#include "programtypes.h"
     38#include "mythavutil.h"
    3839
    3940enum MPFListType {
    4041    MPF_TYPE_CUTLIST = 0,
    class MPEG2fixup 
    191192    }
    192193    int GetStreamType(int id) const
    193194    {
    194         return (inputFC->streams[id]->codec->codec_id == AV_CODEC_ID_AC3) ?
     195        return (inputFC->streams[id]->codecpar->codec_id == AV_CODEC_ID_AC3) ?
    195196               AV_CODEC_ID_AC3 : AV_CODEC_ID_MP2;
    196197    }
    197198    AVCodecContext *getCodecContext(uint id)
    198199    {
    199200        if (id >= inputFC->nb_streams)
    200201            return NULL;
    201         return inputFC->streams[id]->codec;
     202        return gCodecMap->getCodecContext(inputFC->streams[id]);
    202203    }
    203204    AVCodecParserContext *getCodecParserContext(uint id)
    204205    {