mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-06 06:44:29 +00:00
avcodec/mfenc: set variable frame size flag.
Default avctx->frame_size is 0 which led to init failure for
audio MediaFoundation encoders since 827d6fe73d
.
The MF audio encoders accept variable frame size input buffers.
Fixes #9802
This commit is contained in:
parent
b7f6a933fa
commit
56419428a8
@ -1220,7 +1220,7 @@ static int mf_init(AVCodecContext *avctx)
|
||||
|
||||
#define OFFSET(x) offsetof(MFContext, x)
|
||||
|
||||
#define MF_ENCODER(MEDIATYPE, NAME, ID, OPTS, EXTRA) \
|
||||
#define MF_ENCODER(MEDIATYPE, NAME, ID, OPTS, FMTS, CAPS) \
|
||||
static const AVClass ff_ ## NAME ## _mf_encoder_class = { \
|
||||
.class_name = #NAME "_mf", \
|
||||
.item_name = av_default_item_name, \
|
||||
@ -1237,9 +1237,8 @@ static int mf_init(AVCodecContext *avctx)
|
||||
.init = mf_init, \
|
||||
.close = mf_close, \
|
||||
FF_CODEC_RECEIVE_PACKET_CB(mf_receive_packet), \
|
||||
EXTRA \
|
||||
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HYBRID | \
|
||||
AV_CODEC_CAP_DR1, \
|
||||
FMTS \
|
||||
CAPS \
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | \
|
||||
FF_CODEC_CAP_INIT_CLEANUP, \
|
||||
};
|
||||
@ -1247,10 +1246,13 @@ static int mf_init(AVCodecContext *avctx)
|
||||
#define AFMTS \
|
||||
.p.sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, \
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
#define ACAPS \
|
||||
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HYBRID | \
|
||||
AV_CODEC_CAP_DR1 | AV_CODEC_CAP_VARIABLE_FRAME_SIZE,
|
||||
|
||||
MF_ENCODER(AUDIO, aac, AAC, NULL, AFMTS);
|
||||
MF_ENCODER(AUDIO, ac3, AC3, NULL, AFMTS);
|
||||
MF_ENCODER(AUDIO, mp3, MP3, NULL, AFMTS);
|
||||
MF_ENCODER(AUDIO, aac, AAC, NULL, AFMTS, ACAPS);
|
||||
MF_ENCODER(AUDIO, ac3, AC3, NULL, AFMTS, ACAPS);
|
||||
MF_ENCODER(AUDIO, mp3, MP3, NULL, AFMTS, ACAPS);
|
||||
|
||||
#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
|
||||
static const AVOption venc_opts[] = {
|
||||
@ -1283,6 +1285,9 @@ static const AVOption venc_opts[] = {
|
||||
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, \
|
||||
AV_PIX_FMT_YUV420P, \
|
||||
AV_PIX_FMT_NONE },
|
||||
#define VCAPS \
|
||||
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HYBRID | \
|
||||
AV_CODEC_CAP_DR1,
|
||||
|
||||
MF_ENCODER(VIDEO, h264, H264, venc_opts, VFMTS);
|
||||
MF_ENCODER(VIDEO, hevc, HEVC, venc_opts, VFMTS);
|
||||
MF_ENCODER(VIDEO, h264, H264, venc_opts, VFMTS, VCAPS);
|
||||
MF_ENCODER(VIDEO, hevc, HEVC, venc_opts, VFMTS, VCAPS);
|
||||
|
Loading…
Reference in New Issue
Block a user