diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-02-26 12:50:34 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-02-26 12:50:34 +0100 |
commit | 6fbddc80d63ddbc8974f4b2e286de20def6c201d (patch) | |
tree | 327dd7a19fba89a54ba3333fba3545e7598d3e96 /libavcodec/libschroedingerenc.c | |
parent | 13fa074173269308f5051bb1a683c9ed54ab8735 (diff) | |
parent | e8da807537e314d74cb6d93598f1dcfb891fa655 (diff) | |
download | ffmpeg-6fbddc80d63ddbc8974f4b2e286de20def6c201d.tar.gz |
Merge commit 'e8da807537e314d74cb6d93598f1dcfb891fa655'
* commit 'e8da807537e314d74cb6d93598f1dcfb891fa655':
cmdutils: only use libavresample when it is enabled
libschroedinger: cosmetics: rename variable avccontext to avctx
vorbisenc: cosmetics: rename variable avccontext to avctx
Conflicts:
cmdutils.c
libavcodec/libschroedinger.c
libavcodec/libschroedingerenc.c
libavcodec/vorbisenc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/libschroedingerenc.c')
-rw-r--r-- | libavcodec/libschroedingerenc.c | 102 |
1 files changed, 49 insertions, 53 deletions
diff --git a/libavcodec/libschroedingerenc.c b/libavcodec/libschroedingerenc.c index aed7818567..297c6c50c8 100644 --- a/libavcodec/libschroedingerenc.c +++ b/libavcodec/libschroedingerenc.c @@ -77,33 +77,32 @@ typedef struct SchroEncoderParams { /** * Works out Schro-compatible chroma format. */ -static int set_chroma_format(AVCodecContext *avccontext) +static int set_chroma_format(AVCodecContext *avctx) { int num_formats = sizeof(schro_pixel_format_map) / sizeof(schro_pixel_format_map[0]); int idx; - SchroEncoderParams *p_schro_params = avccontext->priv_data; + SchroEncoderParams *p_schro_params = avctx->priv_data; for (idx = 0; idx < num_formats; ++idx) { - if (schro_pixel_format_map[idx].ff_pix_fmt == - avccontext->pix_fmt) { + if (schro_pixel_format_map[idx].ff_pix_fmt == avctx->pix_fmt) { p_schro_params->format->chroma_format = schro_pixel_format_map[idx].schro_pix_fmt; return 0; } } - av_log(avccontext, AV_LOG_ERROR, + av_log(avctx, AV_LOG_ERROR, "This codec currently only supports planar YUV 4:2:0, 4:2:2" " and 4:4:4 formats.\n"); return -1; } -static int libschroedinger_encode_init(AVCodecContext *avccontext) +static int libschroedinger_encode_init(AVCodecContext *avctx) { - SchroEncoderParams *p_schro_params = avccontext->priv_data; + SchroEncoderParams *p_schro_params = avctx->priv_data; SchroVideoFormatEnum preset; /* Initialize the libraries that libschroedinger depends on. */ @@ -113,75 +112,75 @@ static int libschroedinger_encode_init(AVCodecContext *avccontext) p_schro_params->encoder = schro_encoder_new(); if (!p_schro_params->encoder) { - av_log(avccontext, AV_LOG_ERROR, + av_log(avctx, AV_LOG_ERROR, "Unrecoverable Error: schro_encoder_new failed. "); return -1; } /* Initialize the format. */ - preset = ff_get_schro_video_format_preset(avccontext); + preset = ff_get_schro_video_format_preset(avctx); p_schro_params->format = schro_encoder_get_video_format(p_schro_params->encoder); schro_video_format_set_std_video_format(p_schro_params->format, preset); - p_schro_params->format->width = avccontext->width; - p_schro_params->format->height = avccontext->height; + p_schro_params->format->width = avctx->width; + p_schro_params->format->height = avctx->height; - if (set_chroma_format(avccontext) == -1) + if (set_chroma_format(avctx) == -1) return -1; - if (avccontext->color_primaries == AVCOL_PRI_BT709) { + if (avctx->color_primaries == AVCOL_PRI_BT709) { p_schro_params->format->colour_primaries = SCHRO_COLOUR_PRIMARY_HDTV; - } else if (avccontext->color_primaries == AVCOL_PRI_BT470BG) { + } else if (avctx->color_primaries == AVCOL_PRI_BT470BG) { p_schro_params->format->colour_primaries = SCHRO_COLOUR_PRIMARY_SDTV_625; - } else if (avccontext->color_primaries == AVCOL_PRI_SMPTE170M) { + } else if (avctx->color_primaries == AVCOL_PRI_SMPTE170M) { p_schro_params->format->colour_primaries = SCHRO_COLOUR_PRIMARY_SDTV_525; } - if (avccontext->colorspace == AVCOL_SPC_BT709) { + if (avctx->colorspace == AVCOL_SPC_BT709) { p_schro_params->format->colour_matrix = SCHRO_COLOUR_MATRIX_HDTV; - } else if (avccontext->colorspace == AVCOL_SPC_BT470BG) { + } else if (avctx->colorspace == AVCOL_SPC_BT470BG) { p_schro_params->format->colour_matrix = SCHRO_COLOUR_MATRIX_SDTV; } - if (avccontext->color_trc == AVCOL_TRC_BT709) { + if (avctx->color_trc == AVCOL_TRC_BT709) { p_schro_params->format->transfer_function = SCHRO_TRANSFER_CHAR_TV_GAMMA; } if (ff_get_schro_frame_format(p_schro_params->format->chroma_format, &p_schro_params->frame_format) == -1) { - av_log(avccontext, AV_LOG_ERROR, + av_log(avctx, AV_LOG_ERROR, "This codec currently supports only planar YUV 4:2:0, 4:2:2" " and 4:4:4 formats.\n"); return -1; } - p_schro_params->format->frame_rate_numerator = avccontext->time_base.den; - p_schro_params->format->frame_rate_denominator = avccontext->time_base.num; + p_schro_params->format->frame_rate_numerator = avctx->time_base.den; + p_schro_params->format->frame_rate_denominator = avctx->time_base.num; - p_schro_params->frame_size = avpicture_get_size(avccontext->pix_fmt, - avccontext->width, - avccontext->height); + p_schro_params->frame_size = avpicture_get_size(avctx->pix_fmt, + avctx->width, + avctx->height); - avccontext->coded_frame = &p_schro_params->picture; + avctx->coded_frame = &p_schro_params->picture; - if (!avccontext->gop_size) { + if (!avctx->gop_size) { schro_encoder_setting_set_double(p_schro_params->encoder, "gop_structure", SCHRO_ENCODER_GOP_INTRA_ONLY); - if (avccontext->coder_type == FF_CODER_TYPE_VLC) + if (avctx->coder_type == FF_CODER_TYPE_VLC) schro_encoder_setting_set_double(p_schro_params->encoder, "enable_noarith", 1); } else { schro_encoder_setting_set_double(p_schro_params->encoder, - "au_distance", avccontext->gop_size); - avccontext->has_b_frames = 1; + "au_distance", avctx->gop_size); + avctx->has_b_frames = 1; p_schro_params->dts = -1; } /* FIXME - Need to handle SCHRO_ENCODER_RATE_CONTROL_LOW_DELAY. */ - if (avccontext->flags & CODEC_FLAG_QSCALE) { - if (!avccontext->global_quality) { + if (avctx->flags & CODEC_FLAG_QSCALE) { + if (!avctx->global_quality) { /* lossless coding */ schro_encoder_setting_set_double(p_schro_params->encoder, "rate_control", @@ -192,7 +191,7 @@ static int libschroedinger_encode_init(AVCodecContext *avccontext) "rate_control", SCHRO_ENCODER_RATE_CONTROL_CONSTANT_QUALITY); - quality = avccontext->global_quality / FF_QP2LAMBDA; + quality = avctx->global_quality / FF_QP2LAMBDA; if (quality > 10) quality = 10; schro_encoder_setting_set_double(p_schro_params->encoder, @@ -204,19 +203,17 @@ static int libschroedinger_encode_init(AVCodecContext *avccontext) SCHRO_ENCODER_RATE_CONTROL_CONSTANT_BITRATE); schro_encoder_setting_set_double(p_schro_params->encoder, - "bitrate", - avccontext->bit_rate); - + "bitrate", avctx->bit_rate); } - if (avccontext->flags & CODEC_FLAG_INTERLACED_ME) + if (avctx->flags & CODEC_FLAG_INTERLACED_ME) /* All material can be coded as interlaced or progressive irrespective of the type of source material. */ schro_encoder_setting_set_double(p_schro_params->encoder, "interlaced_coding", 1); schro_encoder_setting_set_double(p_schro_params->encoder, "open_gop", - !(avccontext->flags & CODEC_FLAG_CLOSED_GOP)); + !(avctx->flags & CODEC_FLAG_CLOSED_GOP)); /* FIXME: Signal range hardcoded to 8-bit data until both libschroedinger * and libdirac support other bit-depth data. */ @@ -228,7 +225,7 @@ static int libschroedinger_encode_init(AVCodecContext *avccontext) p_schro_params->format); /* Set the debug level. */ - schro_debug_set_level(avccontext->debug); + schro_debug_set_level(avctx->debug); schro_encoder_start(p_schro_params->encoder); @@ -237,19 +234,19 @@ static int libschroedinger_encode_init(AVCodecContext *avccontext) return 0; } -static SchroFrame *libschroedinger_frame_from_data(AVCodecContext *avccontext, +static SchroFrame *libschroedinger_frame_from_data(AVCodecContext *avctx, const AVFrame *frame) { - SchroEncoderParams *p_schro_params = avccontext->priv_data; + SchroEncoderParams *p_schro_params = avctx->priv_data; SchroFrame *in_frame; /* Input line size may differ from what the codec supports. Especially * when transcoding from one format to another. So use avpicture_layout * to copy the frame. */ - in_frame = ff_create_schro_frame(avccontext, p_schro_params->frame_format); + in_frame = ff_create_schro_frame(avctx, p_schro_params->frame_format); if (in_frame) - avpicture_layout((const AVPicture *)frame, avccontext->pix_fmt, - avccontext->width, avccontext->height, + avpicture_layout((const AVPicture *)frame, avctx->pix_fmt, + avctx->width, avctx->height, in_frame->components[0].data, p_schro_params->frame_size); @@ -264,11 +261,11 @@ static void libschroedinger_free_frame(void *data) av_free(enc_frame); } -static int libschroedinger_encode_frame(AVCodecContext *avccontext, AVPacket *pkt, +static int libschroedinger_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet) { int enc_size = 0; - SchroEncoderParams *p_schro_params = avccontext->priv_data; + SchroEncoderParams *p_schro_params = avctx->priv_data; SchroEncoder *encoder = p_schro_params->encoder; struct FFSchroEncodedFrame *p_frame_output = NULL; int go = 1; @@ -286,8 +283,7 @@ static int libschroedinger_encode_frame(AVCodecContext *avccontext, AVPacket *pk } } else { /* Allocate frame data to schro input buffer. */ - SchroFrame *in_frame = libschroedinger_frame_from_data(avccontext, - frame); + SchroFrame *in_frame = libschroedinger_frame_from_data(avctx, frame); /* Load next frame. */ schro_encoder_push_frame(encoder, in_frame); } @@ -358,7 +354,7 @@ static int libschroedinger_encode_frame(AVCodecContext *avccontext, AVPacket *pk break; default: - av_log(avccontext, AV_LOG_ERROR, "Unknown Schro Encoder state\n"); + av_log(avctx, AV_LOG_ERROR, "Unknown Schro Encoder state\n"); return -1; } } @@ -377,16 +373,16 @@ static int libschroedinger_encode_frame(AVCodecContext *avccontext, AVPacket *pk pkt_size = p_frame_output->size; if (last_frame_in_sequence && p_schro_params->enc_buf_size > 0) pkt_size += p_schro_params->enc_buf_size; - if ((ret = ff_alloc_packet2(avccontext, pkt, pkt_size)) < 0) + if ((ret = ff_alloc_packet2(avctx, pkt, pkt_size)) < 0) goto error; memcpy(pkt->data, p_frame_output->p_encbuf, p_frame_output->size); - avccontext->coded_frame->key_frame = p_frame_output->key_frame; + avctx->coded_frame->key_frame = p_frame_output->key_frame; /* Use the frame number of the encoded frame as the pts. It is OK to * do so since Dirac is a constant frame rate codec. It expects input * to be of constant frame rate. */ pkt->pts = - avccontext->coded_frame->pts = p_frame_output->frame_num; + avctx->coded_frame->pts = p_frame_output->frame_num; pkt->dts = p_schro_params->dts++; enc_size = p_frame_output->size; @@ -411,9 +407,9 @@ error: } -static int libschroedinger_encode_close(AVCodecContext *avccontext) +static int libschroedinger_encode_close(AVCodecContext *avctx) { - SchroEncoderParams *p_schro_params = avccontext->priv_data; + SchroEncoderParams *p_schro_params = avctx->priv_data; /* Close the encoder. */ schro_encoder_free(p_schro_params->encoder); |