cosmetics: K&R coding style, prettyprinting

backported r20083 by diego

This commit does not introduce functional changes.  It was applied in
order to faciliate reviewing the proposed libx264.c backport



Originally committed as revision 21832 to svn://svn.ffmpeg.org/ffmpeg/branches/0.5
This commit is contained in:
Reinhard Tartler
2010-02-15 12:45:14 +00:00
parent 9593c80062
commit 26f74e832b

View File

@@ -27,14 +27,13 @@
#include <string.h> #include <string.h>
typedef struct X264Context { typedef struct X264Context {
x264_param_t params; x264_param_t params;
x264_t *enc; x264_t *enc;
x264_picture_t pic; x264_picture_t pic;
AVFrame out_pic; AVFrame out_pic;
} X264Context; } X264Context;
static void static void X264_log(void *p, int level, const char *fmt, va_list args)
X264_log(void *p, int level, const char *fmt, va_list args)
{ {
static const int level_map[] = { static const int level_map[] = {
[X264_LOG_ERROR] = AV_LOG_ERROR, [X264_LOG_ERROR] = AV_LOG_ERROR,
@@ -43,20 +42,19 @@ X264_log(void *p, int level, const char *fmt, va_list args)
[X264_LOG_DEBUG] = AV_LOG_DEBUG [X264_LOG_DEBUG] = AV_LOG_DEBUG
}; };
if(level < 0 || level > X264_LOG_DEBUG) if (level < 0 || level > X264_LOG_DEBUG)
return; return;
av_vlog(p, level_map[level], fmt, args); av_vlog(p, level_map[level], fmt, args);
} }
static int static int encode_nals(uint8_t *buf, int size, x264_nal_t *nals, int nnal)
encode_nals(uint8_t *buf, int size, x264_nal_t *nals, int nnal)
{ {
uint8_t *p = buf; uint8_t *p = buf;
int i; int i;
for(i = 0; i < nnal; i++){ for (i = 0; i < nnal; i++) {
int s = x264_nal_encode(p, &size, 1, nals + i); int s = x264_nal_encode(p, &size, 1, nals + i);
if(s < 0) if(s < 0)
return -1; return -1;
@@ -66,8 +64,8 @@ encode_nals(uint8_t *buf, int size, x264_nal_t *nals, int nnal)
return p - buf; return p - buf;
} }
static int static int X264_frame(AVCodecContext *ctx, uint8_t *buf,
X264_frame(AVCodecContext *ctx, uint8_t *buf, int bufsize, void *data) int bufsize, void *data)
{ {
X264Context *x4 = ctx->priv_data; X264Context *x4 = ctx->priv_data;
AVFrame *frame = data; AVFrame *frame = data;
@@ -75,31 +73,31 @@ X264_frame(AVCodecContext *ctx, uint8_t *buf, int bufsize, void *data)
int nnal, i; int nnal, i;
x264_picture_t pic_out; x264_picture_t pic_out;
x4->pic.img.i_csp = X264_CSP_I420; x4->pic.img.i_csp = X264_CSP_I420;
x4->pic.img.i_plane = 3; x4->pic.img.i_plane = 3;
if (frame) { if (frame) {
for(i = 0; i < 3; i++){ for (i = 0; i < 3; i++) {
x4->pic.img.plane[i] = frame->data[i]; x4->pic.img.plane[i] = frame->data[i];
x4->pic.img.i_stride[i] = frame->linesize[i]; x4->pic.img.i_stride[i] = frame->linesize[i];
} }
x4->pic.i_pts = frame->pts; x4->pic.i_pts = frame->pts;
x4->pic.i_type = X264_TYPE_AUTO; x4->pic.i_type = X264_TYPE_AUTO;
} }
if(x264_encoder_encode(x4->enc, &nal, &nnal, frame? &x4->pic: NULL, if (x264_encoder_encode(x4->enc, &nal, &nnal, frame? &x4->pic: NULL,
&pic_out)) &pic_out))
return -1; return -1;
bufsize = encode_nals(buf, bufsize, nal, nnal); bufsize = encode_nals(buf, bufsize, nal, nnal);
if(bufsize < 0) if (bufsize < 0)
return -1; return -1;
/* FIXME: dts */ /* FIXME: dts */
x4->out_pic.pts = pic_out.i_pts; x4->out_pic.pts = pic_out.i_pts;
switch(pic_out.i_type){ switch (pic_out.i_type) {
case X264_TYPE_IDR: case X264_TYPE_IDR:
case X264_TYPE_I: case X264_TYPE_I:
x4->out_pic.pict_type = FF_I_TYPE; x4->out_pic.pict_type = FF_I_TYPE;
@@ -114,174 +112,173 @@ X264_frame(AVCodecContext *ctx, uint8_t *buf, int bufsize, void *data)
} }
x4->out_pic.key_frame = pic_out.i_type == X264_TYPE_IDR; x4->out_pic.key_frame = pic_out.i_type == X264_TYPE_IDR;
x4->out_pic.quality = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA; x4->out_pic.quality = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA;
return bufsize; return bufsize;
} }
static av_cold int static av_cold int X264_close(AVCodecContext *avctx)
X264_close(AVCodecContext *avctx)
{ {
X264Context *x4 = avctx->priv_data; X264Context *x4 = avctx->priv_data;
av_freep(&avctx->extradata); av_freep(&avctx->extradata);
if(x4->enc) if (x4->enc)
x264_encoder_close(x4->enc); x264_encoder_close(x4->enc);
return 0; return 0;
} }
static av_cold int static av_cold int X264_init(AVCodecContext *avctx)
X264_init(AVCodecContext *avctx)
{ {
X264Context *x4 = avctx->priv_data; X264Context *x4 = avctx->priv_data;
x264_param_default(&x4->params); x264_param_default(&x4->params);
x4->params.pf_log = X264_log; x4->params.pf_log = X264_log;
x4->params.p_log_private = avctx; x4->params.p_log_private = avctx;
x4->params.i_keyint_max = avctx->gop_size; x4->params.i_keyint_max = avctx->gop_size;
x4->params.rc.i_bitrate = avctx->bit_rate / 1000; x4->params.rc.i_bitrate = avctx->bit_rate / 1000;
x4->params.rc.i_vbv_buffer_size = avctx->rc_buffer_size / 1000; x4->params.rc.i_vbv_buffer_size = avctx->rc_buffer_size / 1000;
x4->params.rc.i_vbv_max_bitrate = avctx->rc_max_rate / 1000; x4->params.rc.i_vbv_max_bitrate = avctx->rc_max_rate / 1000;
x4->params.rc.b_stat_write = avctx->flags & CODEC_FLAG_PASS1; x4->params.rc.b_stat_write = avctx->flags & CODEC_FLAG_PASS1;
if(avctx->flags & CODEC_FLAG_PASS2) x4->params.rc.b_stat_read = 1; if (avctx->flags & CODEC_FLAG_PASS2) {
else{ x4->params.rc.b_stat_read = 1;
if(avctx->crf){ } else {
x4->params.rc.i_rc_method = X264_RC_CRF; if (avctx->crf) {
x4->params.rc.i_rc_method = X264_RC_CRF;
x4->params.rc.f_rf_constant = avctx->crf; x4->params.rc.f_rf_constant = avctx->crf;
}else if(avctx->cqp > -1){ } else if (avctx->cqp > -1) {
x4->params.rc.i_rc_method = X264_RC_CQP; x4->params.rc.i_rc_method = X264_RC_CQP;
x4->params.rc.i_qp_constant = avctx->cqp; x4->params.rc.i_qp_constant = avctx->cqp;
} }
} }
// if neither crf nor cqp modes are selected we have to enable the RC // if neither crf nor cqp modes are selected we have to enable the RC
// we do it this way because we cannot check if the bitrate has been set // we do it this way because we cannot check if the bitrate has been set
if(!(avctx->crf || (avctx->cqp > -1))) x4->params.rc.i_rc_method = X264_RC_ABR; if (!(avctx->crf || (avctx->cqp > -1)))
x4->params.rc.i_rc_method = X264_RC_ABR;
x4->params.i_bframe = avctx->max_b_frames; x4->params.i_bframe = avctx->max_b_frames;
x4->params.b_cabac = avctx->coder_type == FF_CODER_TYPE_AC; x4->params.b_cabac = avctx->coder_type == FF_CODER_TYPE_AC;
x4->params.i_bframe_adaptive = avctx->b_frame_strategy; x4->params.i_bframe_adaptive = avctx->b_frame_strategy;
x4->params.i_bframe_bias = avctx->bframebias; x4->params.i_bframe_bias = avctx->bframebias;
x4->params.b_bframe_pyramid = avctx->flags2 & CODEC_FLAG2_BPYRAMID; x4->params.b_bframe_pyramid = avctx->flags2 & CODEC_FLAG2_BPYRAMID;
avctx->has_b_frames= avctx->flags2 & CODEC_FLAG2_BPYRAMID ? 2 : !!avctx->max_b_frames; avctx->has_b_frames = avctx->flags2 & CODEC_FLAG2_BPYRAMID ? 2 : !!avctx->max_b_frames;
x4->params.i_keyint_min = avctx->keyint_min; x4->params.i_keyint_min = avctx->keyint_min;
if(x4->params.i_keyint_min > x4->params.i_keyint_max) if (x4->params.i_keyint_min > x4->params.i_keyint_max)
x4->params.i_keyint_min = x4->params.i_keyint_max; x4->params.i_keyint_min = x4->params.i_keyint_max;
x4->params.i_scenecut_threshold = avctx->scenechange_threshold; x4->params.i_scenecut_threshold = avctx->scenechange_threshold;
x4->params.b_deblocking_filter = avctx->flags & CODEC_FLAG_LOOP_FILTER; x4->params.b_deblocking_filter = avctx->flags & CODEC_FLAG_LOOP_FILTER;
x4->params.i_deblocking_filter_alphac0 = avctx->deblockalpha; x4->params.i_deblocking_filter_alphac0 = avctx->deblockalpha;
x4->params.i_deblocking_filter_beta = avctx->deblockbeta; x4->params.i_deblocking_filter_beta = avctx->deblockbeta;
x4->params.rc.i_qp_min = avctx->qmin; x4->params.rc.i_qp_min = avctx->qmin;
x4->params.rc.i_qp_max = avctx->qmax; x4->params.rc.i_qp_max = avctx->qmax;
x4->params.rc.i_qp_step = avctx->max_qdiff; x4->params.rc.i_qp_step = avctx->max_qdiff;
x4->params.rc.f_qcompress = avctx->qcompress; /* 0.0 => cbr, 1.0 => constant qp */ x4->params.rc.f_qcompress = avctx->qcompress; /* 0.0 => cbr, 1.0 => constant qp */
x4->params.rc.f_qblur = avctx->qblur; /* temporally blur quants */ x4->params.rc.f_qblur = avctx->qblur; /* temporally blur quants */
x4->params.rc.f_complexity_blur = avctx->complexityblur; x4->params.rc.f_complexity_blur = avctx->complexityblur;
x4->params.i_frame_reference = avctx->refs; x4->params.i_frame_reference = avctx->refs;
x4->params.i_width = avctx->width; x4->params.i_width = avctx->width;
x4->params.i_height = avctx->height; x4->params.i_height = avctx->height;
x4->params.vui.i_sar_width = avctx->sample_aspect_ratio.num; x4->params.vui.i_sar_width = avctx->sample_aspect_ratio.num;
x4->params.vui.i_sar_height = avctx->sample_aspect_ratio.den; x4->params.vui.i_sar_height = avctx->sample_aspect_ratio.den;
x4->params.i_fps_num = avctx->time_base.den; x4->params.i_fps_num = avctx->time_base.den;
x4->params.i_fps_den = avctx->time_base.num; x4->params.i_fps_den = avctx->time_base.num;
x4->params.analyse.inter = 0; x4->params.analyse.inter = 0;
if(avctx->partitions){ if (avctx->partitions) {
if(avctx->partitions & X264_PART_I4X4) if (avctx->partitions & X264_PART_I4X4)
x4->params.analyse.inter |= X264_ANALYSE_I4x4; x4->params.analyse.inter |= X264_ANALYSE_I4x4;
if(avctx->partitions & X264_PART_I8X8) if (avctx->partitions & X264_PART_I8X8)
x4->params.analyse.inter |= X264_ANALYSE_I8x8; x4->params.analyse.inter |= X264_ANALYSE_I8x8;
if(avctx->partitions & X264_PART_P8X8) if (avctx->partitions & X264_PART_P8X8)
x4->params.analyse.inter |= X264_ANALYSE_PSUB16x16; x4->params.analyse.inter |= X264_ANALYSE_PSUB16x16;
if(avctx->partitions & X264_PART_P4X4) if (avctx->partitions & X264_PART_P4X4)
x4->params.analyse.inter |= X264_ANALYSE_PSUB8x8; x4->params.analyse.inter |= X264_ANALYSE_PSUB8x8;
if(avctx->partitions & X264_PART_B8X8) if (avctx->partitions & X264_PART_B8X8)
x4->params.analyse.inter |= X264_ANALYSE_BSUB16x16; x4->params.analyse.inter |= X264_ANALYSE_BSUB16x16;
} }
x4->params.analyse.i_direct_mv_pred = avctx->directpred; x4->params.analyse.i_direct_mv_pred = avctx->directpred;
x4->params.analyse.b_weighted_bipred = avctx->flags2 & CODEC_FLAG2_WPRED; x4->params.analyse.b_weighted_bipred = avctx->flags2 & CODEC_FLAG2_WPRED;
if(avctx->me_method == ME_EPZS) if (avctx->me_method == ME_EPZS)
x4->params.analyse.i_me_method = X264_ME_DIA; x4->params.analyse.i_me_method = X264_ME_DIA;
else if(avctx->me_method == ME_HEX) else if (avctx->me_method == ME_HEX)
x4->params.analyse.i_me_method = X264_ME_HEX; x4->params.analyse.i_me_method = X264_ME_HEX;
else if(avctx->me_method == ME_UMH) else if (avctx->me_method == ME_UMH)
x4->params.analyse.i_me_method = X264_ME_UMH; x4->params.analyse.i_me_method = X264_ME_UMH;
else if(avctx->me_method == ME_FULL) else if (avctx->me_method == ME_FULL)
x4->params.analyse.i_me_method = X264_ME_ESA; x4->params.analyse.i_me_method = X264_ME_ESA;
else if(avctx->me_method == ME_TESA) else if (avctx->me_method == ME_TESA)
x4->params.analyse.i_me_method = X264_ME_TESA; x4->params.analyse.i_me_method = X264_ME_TESA;
else x4->params.analyse.i_me_method = X264_ME_HEX; else x4->params.analyse.i_me_method = X264_ME_HEX;
x4->params.analyse.i_me_range = avctx->me_range; x4->params.analyse.i_me_range = avctx->me_range;
x4->params.analyse.i_subpel_refine = avctx->me_subpel_quality; x4->params.analyse.i_subpel_refine = avctx->me_subpel_quality;
x4->params.analyse.b_mixed_references = x4->params.analyse.b_mixed_references = avctx->flags2 & CODEC_FLAG2_MIXED_REFS;
avctx->flags2 & CODEC_FLAG2_MIXED_REFS; x4->params.analyse.b_chroma_me = avctx->me_cmp & FF_CMP_CHROMA;
x4->params.analyse.b_chroma_me = avctx->me_cmp & FF_CMP_CHROMA; x4->params.analyse.b_transform_8x8 = avctx->flags2 & CODEC_FLAG2_8X8DCT;
x4->params.analyse.b_transform_8x8 = avctx->flags2 & CODEC_FLAG2_8X8DCT; x4->params.analyse.b_fast_pskip = avctx->flags2 & CODEC_FLAG2_FASTPSKIP;
x4->params.analyse.b_fast_pskip = avctx->flags2 & CODEC_FLAG2_FASTPSKIP;
x4->params.analyse.i_trellis = avctx->trellis; x4->params.analyse.i_trellis = avctx->trellis;
x4->params.analyse.i_noise_reduction = avctx->noise_reduction; x4->params.analyse.i_noise_reduction = avctx->noise_reduction;
if(avctx->level > 0) x4->params.i_level_idc = avctx->level; if (avctx->level > 0)
x4->params.i_level_idc = avctx->level;
x4->params.rc.f_rate_tolerance = x4->params.rc.f_rate_tolerance =
(float)avctx->bit_rate_tolerance/avctx->bit_rate; (float)avctx->bit_rate_tolerance/avctx->bit_rate;
if((avctx->rc_buffer_size != 0) && if ((avctx->rc_buffer_size != 0) &&
(avctx->rc_initial_buffer_occupancy <= avctx->rc_buffer_size)){ (avctx->rc_initial_buffer_occupancy <= avctx->rc_buffer_size)) {
x4->params.rc.f_vbv_buffer_init = x4->params.rc.f_vbv_buffer_init =
(float)avctx->rc_initial_buffer_occupancy/avctx->rc_buffer_size; (float)avctx->rc_initial_buffer_occupancy / avctx->rc_buffer_size;
} } else
else x4->params.rc.f_vbv_buffer_init = 0.9; x4->params.rc.f_vbv_buffer_init = 0.9;
x4->params.rc.f_ip_factor = 1/fabs(avctx->i_quant_factor); x4->params.rc.f_ip_factor = 1 / fabs(avctx->i_quant_factor);
x4->params.rc.f_pb_factor = avctx->b_quant_factor; x4->params.rc.f_pb_factor = avctx->b_quant_factor;
x4->params.analyse.i_chroma_qp_offset = avctx->chromaoffset; x4->params.analyse.i_chroma_qp_offset = avctx->chromaoffset;
x4->params.analyse.b_psnr = avctx->flags & CODEC_FLAG_PSNR; x4->params.analyse.b_psnr = avctx->flags & CODEC_FLAG_PSNR;
x4->params.i_log_level = X264_LOG_DEBUG; x4->params.i_log_level = X264_LOG_DEBUG;
x4->params.b_aud = avctx->flags2 & CODEC_FLAG2_AUD; x4->params.b_aud = avctx->flags2 & CODEC_FLAG2_AUD;
x4->params.i_threads = avctx->thread_count; x4->params.i_threads = avctx->thread_count;
x4->params.b_interlaced = avctx->flags & CODEC_FLAG_INTERLACED_DCT; x4->params.b_interlaced = avctx->flags & CODEC_FLAG_INTERLACED_DCT;
if(avctx->flags & CODEC_FLAG_GLOBAL_HEADER){ if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER)
x4->params.b_repeat_headers = 0; x4->params.b_repeat_headers = 0;
}
x4->enc = x264_encoder_open(&x4->params); x4->enc = x264_encoder_open(&x4->params);
if(!x4->enc) if (!x4->enc)
return -1; return -1;
avctx->coded_frame = &x4->out_pic; avctx->coded_frame = &x4->out_pic;
if(avctx->flags & CODEC_FLAG_GLOBAL_HEADER){ if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER) {
x264_nal_t *nal; x264_nal_t *nal;
int nnal, i, s = 0; int nnal, i, s = 0;
x264_encoder_headers(x4->enc, &nal, &nnal); x264_encoder_headers(x4->enc, &nal, &nnal);
/* 5 bytes NAL header + worst case escaping */ /* 5 bytes NAL header + worst case escaping */
for(i = 0; i < nnal; i++) for (i = 0; i < nnal; i++)
s += 5 + nal[i].i_payload * 4 / 3; s += 5 + nal[i].i_payload * 4 / 3;
avctx->extradata = av_malloc(s); avctx->extradata = av_malloc(s);
avctx->extradata_size = encode_nals(avctx->extradata, s, nal, nnal); avctx->extradata_size = encode_nals(avctx->extradata, s, nal, nnal);
@@ -291,14 +288,14 @@ X264_init(AVCodecContext *avctx)
} }
AVCodec libx264_encoder = { AVCodec libx264_encoder = {
.name = "libx264", .name = "libx264",
.type = CODEC_TYPE_VIDEO, .type = CODEC_TYPE_VIDEO,
.id = CODEC_ID_H264, .id = CODEC_ID_H264,
.priv_data_size = sizeof(X264Context), .priv_data_size = sizeof(X264Context),
.init = X264_init, .init = X264_init,
.encode = X264_frame, .encode = X264_frame,
.close = X264_close, .close = X264_close,
.capabilities = CODEC_CAP_DELAY, .capabilities = CODEC_CAP_DELAY,
.pix_fmts = (enum PixelFormat[]) { PIX_FMT_YUV420P, PIX_FMT_NONE }, .pix_fmts = (enum PixelFormat[]) { PIX_FMT_YUV420P, PIX_FMT_NONE },
.long_name = NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), .long_name = NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"),
}; };