You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
avcodec/mpegvideo_enc: Add AV_CODEC_CAP_DR1
The mpegvideo-based encoders do one uncommon thing with the packet's data given by ff_alloc_packet(): They potentially reallocate it. But this only affects the internal buffer and is not user-facing at all, so one can nevertheless use the AV_CODEC_CAP_DR1 for them. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
@ -98,6 +98,7 @@ const FFCodec ff_flv_encoder = {
|
|||||||
.p.type = AVMEDIA_TYPE_VIDEO,
|
.p.type = AVMEDIA_TYPE_VIDEO,
|
||||||
.p.id = AV_CODEC_ID_FLV1,
|
.p.id = AV_CODEC_ID_FLV1,
|
||||||
.p.priv_class = &ff_mpv_enc_class,
|
.p.priv_class = &ff_mpv_enc_class,
|
||||||
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.priv_data_size = sizeof(MpegEncContext),
|
.priv_data_size = sizeof(MpegEncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
||||||
@ -106,5 +107,4 @@ const FFCodec ff_flv_encoder = {
|
|||||||
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
|
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
|
||||||
AV_PIX_FMT_NONE},
|
AV_PIX_FMT_NONE},
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
|
||||||
};
|
};
|
||||||
|
@ -383,6 +383,7 @@ const FFCodec ff_h261_encoder = {
|
|||||||
.p.type = AVMEDIA_TYPE_VIDEO,
|
.p.type = AVMEDIA_TYPE_VIDEO,
|
||||||
.p.id = AV_CODEC_ID_H261,
|
.p.id = AV_CODEC_ID_H261,
|
||||||
.p.priv_class = &ff_mpv_enc_class,
|
.p.priv_class = &ff_mpv_enc_class,
|
||||||
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.priv_data_size = sizeof(H261EncContext),
|
.priv_data_size = sizeof(H261EncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
||||||
@ -391,5 +392,4 @@ const FFCodec ff_h261_encoder = {
|
|||||||
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
|
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
|
||||||
AV_PIX_FMT_NONE },
|
AV_PIX_FMT_NONE },
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
|
||||||
};
|
};
|
||||||
|
@ -922,7 +922,7 @@ const FFCodec ff_h263_encoder = {
|
|||||||
.p.pix_fmts = (const enum AVPixelFormat[]){AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE},
|
.p.pix_fmts = (const enum AVPixelFormat[]){AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE},
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.priv_class = &h263_class,
|
.p.priv_class = &h263_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
.priv_data_size = sizeof(MpegEncContext),
|
.priv_data_size = sizeof(MpegEncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
@ -954,7 +954,8 @@ const FFCodec ff_h263p_encoder = {
|
|||||||
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.priv_class = &h263p_class,
|
.p.priv_class = &h263p_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_SLICE_THREADS |
|
||||||
|
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
.priv_data_size = sizeof(MpegEncContext),
|
.priv_data_size = sizeof(MpegEncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
|
@ -669,7 +669,8 @@ FFCodec ff_mjpeg_encoder = {
|
|||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
||||||
.close = mjpeg_encode_close,
|
.close = mjpeg_encode_close,
|
||||||
.p.capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS |
|
.p.capabilities = AV_CODEC_CAP_DR1 |
|
||||||
|
AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS |
|
||||||
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_ICC_PROFILES,
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_ICC_PROFILES,
|
||||||
.p.pix_fmts = (const enum AVPixelFormat[]) {
|
.p.pix_fmts = (const enum AVPixelFormat[]) {
|
||||||
@ -696,6 +697,7 @@ const FFCodec ff_amv_encoder = {
|
|||||||
CODEC_LONG_NAME("AMV Video"),
|
CODEC_LONG_NAME("AMV Video"),
|
||||||
.p.type = AVMEDIA_TYPE_VIDEO,
|
.p.type = AVMEDIA_TYPE_VIDEO,
|
||||||
.p.id = AV_CODEC_ID_AMV,
|
.p.id = AV_CODEC_ID_AMV,
|
||||||
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.priv_data_size = sizeof(MJPEGEncContext),
|
.priv_data_size = sizeof(MJPEGEncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
FF_CODEC_ENCODE_CB(amv_encode_picture),
|
FF_CODEC_ENCODE_CB(amv_encode_picture),
|
||||||
@ -706,6 +708,5 @@ const FFCodec ff_amv_encoder = {
|
|||||||
},
|
},
|
||||||
.color_ranges = AVCOL_RANGE_JPEG,
|
.color_ranges = AVCOL_RANGE_JPEG,
|
||||||
.p.priv_class = &amv_class,
|
.p.priv_class = &amv_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -1244,7 +1244,8 @@ const FFCodec ff_mpeg1video_encoder = {
|
|||||||
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
|
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
|
||||||
AV_PIX_FMT_NONE },
|
AV_PIX_FMT_NONE },
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS |
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY |
|
||||||
|
AV_CODEC_CAP_SLICE_THREADS |
|
||||||
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
.p.priv_class = &mpeg1_class,
|
.p.priv_class = &mpeg1_class,
|
||||||
@ -1264,7 +1265,8 @@ const FFCodec ff_mpeg2video_encoder = {
|
|||||||
AV_PIX_FMT_YUV422P,
|
AV_PIX_FMT_YUV422P,
|
||||||
AV_PIX_FMT_NONE },
|
AV_PIX_FMT_NONE },
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS |
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY |
|
||||||
|
AV_CODEC_CAP_SLICE_THREADS |
|
||||||
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
.p.priv_class = &mpeg2_class,
|
.p.priv_class = &mpeg2_class,
|
||||||
|
@ -1394,7 +1394,8 @@ const FFCodec ff_mpeg4_encoder = {
|
|||||||
.close = ff_mpv_encode_end,
|
.close = ff_mpv_encode_end,
|
||||||
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS |
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY |
|
||||||
|
AV_CODEC_CAP_SLICE_THREADS |
|
||||||
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
.p.priv_class = &mpeg4enc_class,
|
.p.priv_class = &mpeg4enc_class,
|
||||||
|
@ -683,7 +683,7 @@ const FFCodec ff_msmpeg4v2_encoder = {
|
|||||||
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.priv_class = &ff_mpv_enc_class,
|
.p.priv_class = &ff_mpv_enc_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
.priv_data_size = sizeof(MSMPEG4EncContext),
|
.priv_data_size = sizeof(MSMPEG4EncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
@ -699,7 +699,7 @@ const FFCodec ff_msmpeg4v3_encoder = {
|
|||||||
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.priv_class = &ff_mpv_enc_class,
|
.p.priv_class = &ff_mpv_enc_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
.priv_data_size = sizeof(MSMPEG4EncContext),
|
.priv_data_size = sizeof(MSMPEG4EncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
@ -715,7 +715,7 @@ const FFCodec ff_wmv1_encoder = {
|
|||||||
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
|
||||||
.color_ranges = AVCOL_RANGE_MPEG,
|
.color_ranges = AVCOL_RANGE_MPEG,
|
||||||
.p.priv_class = &ff_mpv_enc_class,
|
.p.priv_class = &ff_mpv_enc_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
.priv_data_size = sizeof(MSMPEG4EncContext),
|
.priv_data_size = sizeof(MSMPEG4EncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
|
@ -71,7 +71,7 @@ const FFCodec ff_rv10_encoder = {
|
|||||||
.p.type = AVMEDIA_TYPE_VIDEO,
|
.p.type = AVMEDIA_TYPE_VIDEO,
|
||||||
.p.id = AV_CODEC_ID_RV10,
|
.p.id = AV_CODEC_ID_RV10,
|
||||||
.p.priv_class = &ff_mpv_enc_class,
|
.p.priv_class = &ff_mpv_enc_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.priv_data_size = sizeof(MpegEncContext),
|
.priv_data_size = sizeof(MpegEncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
||||||
|
@ -68,7 +68,7 @@ const FFCodec ff_rv20_encoder = {
|
|||||||
.p.type = AVMEDIA_TYPE_VIDEO,
|
.p.type = AVMEDIA_TYPE_VIDEO,
|
||||||
.p.id = AV_CODEC_ID_RV20,
|
.p.id = AV_CODEC_ID_RV20,
|
||||||
.p.priv_class = &ff_mpv_enc_class,
|
.p.priv_class = &ff_mpv_enc_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.priv_data_size = sizeof(MpegEncContext),
|
.priv_data_size = sizeof(MpegEncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
||||||
|
@ -294,7 +294,7 @@ const FFCodec ff_speedhq_encoder = {
|
|||||||
.p.type = AVMEDIA_TYPE_VIDEO,
|
.p.type = AVMEDIA_TYPE_VIDEO,
|
||||||
.p.id = AV_CODEC_ID_SPEEDHQ,
|
.p.id = AV_CODEC_ID_SPEEDHQ,
|
||||||
.p.priv_class = &ff_mpv_enc_class,
|
.p.priv_class = &ff_mpv_enc_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.priv_data_size = sizeof(SpeedHQEncContext),
|
.priv_data_size = sizeof(SpeedHQEncContext),
|
||||||
.init = ff_mpv_encode_init,
|
.init = ff_mpv_encode_init,
|
||||||
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
||||||
|
@ -243,7 +243,7 @@ const FFCodec ff_wmv2_encoder = {
|
|||||||
.p.type = AVMEDIA_TYPE_VIDEO,
|
.p.type = AVMEDIA_TYPE_VIDEO,
|
||||||
.p.id = AV_CODEC_ID_WMV2,
|
.p.id = AV_CODEC_ID_WMV2,
|
||||||
.p.priv_class = &ff_mpv_enc_class,
|
.p.priv_class = &ff_mpv_enc_class,
|
||||||
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
|
||||||
.priv_data_size = sizeof(WMV2EncContext),
|
.priv_data_size = sizeof(WMV2EncContext),
|
||||||
.init = wmv2_encode_init,
|
.init = wmv2_encode_init,
|
||||||
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
|
||||||
|
Reference in New Issue
Block a user