X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Flibtheoraenc.c;h=75b0a168ed832908c2394e5a372d718caecff1da;hb=36779a84051eae6744cc936d91b1d428143665ba;hp=469c6fd467569a953c41e746bc82468b74c25e88;hpb=c1a02e884ac785033baab356a5437adf057a4189;p=ffmpeg diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c index 469c6fd4675..75b0a168ed8 100644 --- a/libavcodec/libtheoraenc.c +++ b/libavcodec/libtheoraenc.c @@ -33,6 +33,7 @@ /* Libav includes */ #include "libavutil/common.h" #include "libavutil/intreadwrite.h" +#include "libavutil/pixdesc.h" #include "libavutil/log.h" #include "libavutil/base64.h" #include "avcodec.h" @@ -57,8 +58,8 @@ static int concatenate_packet(unsigned int* offset, const ogg_packet* packet) { const char* message = NULL; - uint8_t* newdata = NULL; int newsize = avc_context->extradata_size + 2 + packet->bytes; + int err = AVERROR_INVALIDDATA; if (packet->bytes < 0) { message = "ogg_packet has negative size"; @@ -67,16 +68,16 @@ static int concatenate_packet(unsigned int* offset, } else if (newsize < avc_context->extradata_size) { message = "extradata_size would overflow"; } else { - newdata = av_realloc(avc_context->extradata, newsize); - if (!newdata) + if ((err = av_reallocp(&avc_context->extradata, newsize)) < 0) { + avc_context->extradata_size = 0; message = "av_realloc failed"; + } } if (message) { av_log(avc_context, AV_LOG_ERROR, "concatenate_packet failed: %s\n", message); - return -1; + return err; } - avc_context->extradata = newdata; avc_context->extradata_size = newsize; AV_WB16(avc_context->extradata + (*offset), packet->bytes); *offset += 2; @@ -206,7 +207,7 @@ static av_cold int encode_init(AVCodecContext* avc_context) * 0 <= p <=63 * an int value */ - t_info.quality = av_clip(avc_context->global_quality / (float)FF_QP2LAMBDA, 0, 10) * 6.3; + t_info.quality = av_clipf(avc_context->global_quality / (float)FF_QP2LAMBDA, 0, 10) * 6.3; t_info.target_bitrate = 0; } else { t_info.target_bitrate = avc_context->bit_rate; @@ -258,7 +259,7 @@ static av_cold int encode_init(AVCodecContext* avc_context) th_comment_clear(&t_comment); /* Set up the output AVFrame */ - avc_context->coded_frame= avcodec_alloc_frame(); + avc_context->coded_frame = av_frame_alloc(); return 0; } @@ -337,7 +338,7 @@ static int encode_frame(AVCodecContext* avc_context, AVPacket *pkt, memcpy(pkt->data, o_packet.packet, o_packet.bytes); // HACK: assumes no encoder delay, this is true until libtheora becomes - // multithreaded (which will be disabled unless explictly requested) + // multithreaded (which will be disabled unless explicitly requested) pkt->pts = pkt->dts = frame->pts; avc_context->coded_frame->key_frame = !(o_packet.granulepos & h->keyframe_mask); if (avc_context->coded_frame->key_frame) @@ -364,6 +365,7 @@ static av_cold int encode_close(AVCodecContext* avc_context) /** AVCodec struct exposed to libavcodec */ AVCodec ff_libtheora_encoder = { .name = "libtheora", + .long_name = NULL_IF_CONFIG_SMALL("libtheora Theora"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_THEORA, .priv_data_size = sizeof(TheoraContext), @@ -374,5 +376,4 @@ AVCodec ff_libtheora_encoder = { .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_NONE }, - .long_name = NULL_IF_CONFIG_SMALL("libtheora Theora"), };