X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmjpegenc.c;h=0ade66bc5f0946f7d5632d4d7ea07b235b582d8d;hb=a247ac640df3da573cd661065bf53f37863e2b46;hp=e5d2e24d66c256ea4caac574d939f48077123962;hpb=d0dcfaef517105cf5f43f686bf2827c412c351ab;p=ffmpeg diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c index e5d2e24d66c..0ade66bc5f0 100644 --- a/libavcodec/mjpegenc.c +++ b/libavcodec/mjpegenc.c @@ -261,9 +261,16 @@ static int alloc_huffman(MpegEncContext *s) av_cold int ff_mjpeg_encode_init(MpegEncContext *s) { MJpegContext *m; + int ret; av_assert0(s->slice_context_count == 1); + /* The following check is automatically true for AMV, + * but it doesn't hurt either. */ + ret = ff_mjpeg_encode_check_pix_fmt(s->avctx); + if (ret < 0) + return ret; + if (s->width > 65500 || s->height > 65500) { av_log(s, AV_LOG_ERROR, "JPEG does not support resolutions above 65500x65500\n"); return AVERROR(EINVAL); @@ -586,6 +593,12 @@ FF_MPV_COMMON_OPTS { "huffman", "Huffman table strategy", OFFSET(huffman), AV_OPT_TYPE_INT, { .i64 = HUFFMAN_TABLE_OPTIMAL }, 0, NB_HUFFMAN_TABLE_OPTION - 1, VE, "huffman" }, { "default", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = HUFFMAN_TABLE_DEFAULT }, INT_MIN, INT_MAX, VE, "huffman" }, { "optimal", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = HUFFMAN_TABLE_OPTIMAL }, INT_MIN, INT_MAX, VE, "huffman" }, +{ "force_duplicated_matrix", "Always write luma and chroma matrix for mjpeg, useful for rtp streaming.", OFFSET(force_duplicated_matrix), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, VE }, +#if FF_API_MPEGVIDEO_OPTS +FF_MPV_DEPRECATED_MPEG_QUANT_OPT +FF_MPV_DEPRECATED_A53_CC_OPT +FF_MPV_DEPRECATED_BFRAME_OPTS +#endif { NULL}, }; @@ -597,7 +610,7 @@ static const AVClass mjpeg_class = { .version = LIBAVUTIL_VERSION_INT, }; -AVCodec ff_mjpeg_encoder = { +const AVCodec ff_mjpeg_encoder = { .name = "mjpeg", .long_name = NULL_IF_CONFIG_SMALL("MJPEG (Motion JPEG)"), .type = AVMEDIA_TYPE_VIDEO, @@ -609,7 +622,9 @@ AVCodec ff_mjpeg_encoder = { .capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]) { - AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_NONE + AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, + AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, + AV_PIX_FMT_NONE }, .priv_class = &mjpeg_class, .profiles = NULL_IF_CONFIG_SMALL(ff_mjpeg_profiles), @@ -624,7 +639,7 @@ static const AVClass amv_class = { .version = LIBAVUTIL_VERSION_INT, }; -AVCodec ff_amv_encoder = { +const AVCodec ff_amv_encoder = { .name = "amv", .long_name = NULL_IF_CONFIG_SMALL("AMV Video"), .type = AVMEDIA_TYPE_VIDEO,