libx264: Add support for the MPEG2 encoder
This commit is contained in:
		
							parent
							
								
									0cf5588d69
								
							
						
					
					
						commit
						e1319aa1c1
					
				
							
								
								
									
										6
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								configure
									
									
									
									
										vendored
									
									
								
							@ -1607,6 +1607,7 @@ CONFIG_EXTRA="
 | 
			
		||||
    imdct15
 | 
			
		||||
    intrax8
 | 
			
		||||
    jpegtables
 | 
			
		||||
    libx262
 | 
			
		||||
    lgplv3
 | 
			
		||||
    lpc
 | 
			
		||||
    me_cmp
 | 
			
		||||
@ -2108,6 +2109,7 @@ libvpx_vp9_decoder_deps="libvpx"
 | 
			
		||||
libvpx_vp9_encoder_deps="libvpx"
 | 
			
		||||
libwavpack_encoder_deps="libwavpack"
 | 
			
		||||
libwebp_encoder_deps="libwebp"
 | 
			
		||||
libx262_encoder_deps="libx262"
 | 
			
		||||
libx264_encoder_deps="libx264"
 | 
			
		||||
libx265_encoder_deps="libx265"
 | 
			
		||||
libxavs_encoder_deps="libxavs"
 | 
			
		||||
@ -4351,7 +4353,9 @@ enabled libwavpack        && require libwavpack wavpack/wavpack.h WavpackOpenFil
 | 
			
		||||
enabled libwebp           && require_pkg_config libwebp webp/encode.h WebPGetEncoderVersion
 | 
			
		||||
enabled libx264           && require_pkg_config x264 "stdint.h x264.h" x264_encoder_encode &&
 | 
			
		||||
                             { check_cpp_condition x264.h "X264_BUILD >= 118" ||
 | 
			
		||||
                               die "ERROR: libx264 version must be >= 0.118."; }
 | 
			
		||||
                               die "ERROR: libx264 version must be >= 0.118."; } &&
 | 
			
		||||
                             { check_cpp_condition x264.h "X264_MPEG2" &&
 | 
			
		||||
                               enable libx262; }
 | 
			
		||||
enabled libx265           && require_pkg_config x265 x265.h x265_api_get &&
 | 
			
		||||
                             { check_cpp_condition x265.h "X265_BUILD >= 57" ||
 | 
			
		||||
                               die "ERROR: libx265 version must be >= 57."; }
 | 
			
		||||
 | 
			
		||||
@ -671,6 +671,7 @@ OBJS-$(CONFIG_LIBVPX_VP9_DECODER)         += libvpxdec.o libvpx.o
 | 
			
		||||
OBJS-$(CONFIG_LIBVPX_VP9_ENCODER)         += libvpxenc.o libvpx.o
 | 
			
		||||
OBJS-$(CONFIG_LIBWAVPACK_ENCODER)         += libwavpackenc.o
 | 
			
		||||
OBJS-$(CONFIG_LIBWEBP_ENCODER)            += libwebpenc.o
 | 
			
		||||
OBJS-$(CONFIG_LIBX262_ENCODER)            += libx264.o
 | 
			
		||||
OBJS-$(CONFIG_LIBX264_ENCODER)            += libx264.o
 | 
			
		||||
OBJS-$(CONFIG_LIBX265_ENCODER)            += libx265.o
 | 
			
		||||
OBJS-$(CONFIG_LIBXAVS_ENCODER)            += libxavs.o
 | 
			
		||||
 | 
			
		||||
@ -473,6 +473,7 @@ void avcodec_register_all(void)
 | 
			
		||||
    REGISTER_ENCDEC (LIBVPX_VP9,        libvpx_vp9);
 | 
			
		||||
    REGISTER_ENCODER(LIBWAVPACK,        libwavpack);
 | 
			
		||||
    REGISTER_ENCODER(LIBWEBP,           libwebp);
 | 
			
		||||
    REGISTER_ENCODER(LIBX262,           libx262);
 | 
			
		||||
    REGISTER_ENCODER(LIBX264,           libx264);
 | 
			
		||||
    REGISTER_ENCODER(LIBX265,           libx265);
 | 
			
		||||
    REGISTER_ENCODER(LIBXAVS,           libxavs);
 | 
			
		||||
 | 
			
		||||
@ -323,7 +323,14 @@ static av_cold int X264_init(AVCodecContext *avctx)
 | 
			
		||||
{
 | 
			
		||||
    X264Context *x4 = avctx->priv_data;
 | 
			
		||||
 | 
			
		||||
#if CONFIG_LIBX262_ENCODER
 | 
			
		||||
    if (avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO) {
 | 
			
		||||
        x4->params.b_mpeg2 = 1;
 | 
			
		||||
        x264_param_default_mpeg2(&x4->params);
 | 
			
		||||
    } else
 | 
			
		||||
#else
 | 
			
		||||
    x264_param_default(&x4->params);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    x4->params.b_deblocking_filter         = avctx->flags & CODEC_FLAG_LOOP_FILTER;
 | 
			
		||||
 | 
			
		||||
@ -663,13 +670,6 @@ static const AVOption options[] = {
 | 
			
		||||
    { NULL },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static const AVClass class = {
 | 
			
		||||
    .class_name = "libx264",
 | 
			
		||||
    .item_name  = av_default_item_name,
 | 
			
		||||
    .option     = options,
 | 
			
		||||
    .version    = LIBAVUTIL_VERSION_INT,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static const AVCodecDefault x264_defaults[] = {
 | 
			
		||||
    { "b",                "0" },
 | 
			
		||||
    { "bf",               "-1" },
 | 
			
		||||
@ -698,6 +698,14 @@ static const AVCodecDefault x264_defaults[] = {
 | 
			
		||||
    { NULL },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if CONFIG_LIBX264_ENCODER
 | 
			
		||||
static const AVClass class = {
 | 
			
		||||
    .class_name = "libx264",
 | 
			
		||||
    .item_name  = av_default_item_name,
 | 
			
		||||
    .option     = options,
 | 
			
		||||
    .version    = LIBAVUTIL_VERSION_INT,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
AVCodec ff_libx264_encoder = {
 | 
			
		||||
    .name             = "libx264",
 | 
			
		||||
    .long_name        = NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"),
 | 
			
		||||
@ -714,3 +722,30 @@ AVCodec ff_libx264_encoder = {
 | 
			
		||||
    .caps_internal    = FF_CODEC_CAP_INIT_THREADSAFE |
 | 
			
		||||
                        FF_CODEC_CAP_INIT_CLEANUP,
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if CONFIG_LIBX262_ENCODER
 | 
			
		||||
static const AVClass X262_class = {
 | 
			
		||||
    .class_name = "libx262",
 | 
			
		||||
    .item_name  = av_default_item_name,
 | 
			
		||||
    .option     = options,
 | 
			
		||||
    .version    = LIBAVUTIL_VERSION_INT,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
AVCodec ff_libx262_encoder = {
 | 
			
		||||
    .name             = "libx262",
 | 
			
		||||
    .long_name        = NULL_IF_CONFIG_SMALL("libx262 MPEG2VIDEO"),
 | 
			
		||||
    .type             = AVMEDIA_TYPE_VIDEO,
 | 
			
		||||
    .id               = AV_CODEC_ID_MPEG2VIDEO,
 | 
			
		||||
    .priv_data_size   = sizeof(X264Context),
 | 
			
		||||
    .init             = X264_init,
 | 
			
		||||
    .encode2          = X264_frame,
 | 
			
		||||
    .close            = X264_close,
 | 
			
		||||
    .capabilities     = CODEC_CAP_DELAY | CODEC_CAP_AUTO_THREADS,
 | 
			
		||||
    .priv_class       = &X262_class,
 | 
			
		||||
    .defaults         = x264_defaults,
 | 
			
		||||
    .pix_fmts         = pix_fmts_8bit,
 | 
			
		||||
    .caps_internal    = FF_CODEC_CAP_INIT_THREADSAFE |
 | 
			
		||||
                        FF_CODEC_CAP_INIT_CLEANUP,
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user