Mercurial > libavcodec.hg
comparison libvorbis.c @ 12203:a2c993c7ae90 libavcodec
remove an unneeded av_realloc()
author | skal |
---|---|
date | Tue, 20 Jul 2010 21:54:46 +0000 |
parents | 24649290a14f |
children |
comparison
equal
deleted
inserted
replaced
12202:3465e53116e5 | 12203:a2c993c7ae90 |
---|---|
83 } | 83 } |
84 | 84 |
85 return vorbis_encode_setup_init(vi); | 85 return vorbis_encode_setup_init(vi); |
86 } | 86 } |
87 | 87 |
88 /* How many bytes are needed for a buffer of length 'l' */ | |
89 static int xiph_len(int l) { return (1 + l / 255 + l); } | |
90 | |
88 static av_cold int oggvorbis_encode_init(AVCodecContext *avccontext) { | 91 static av_cold int oggvorbis_encode_init(AVCodecContext *avccontext) { |
89 OggVorbisContext *context = avccontext->priv_data ; | 92 OggVorbisContext *context = avccontext->priv_data ; |
90 ogg_packet header, header_comm, header_code; | 93 ogg_packet header, header_comm, header_code; |
91 uint8_t *p; | 94 uint8_t *p; |
92 unsigned int offset, len; | 95 unsigned int offset; |
93 | 96 |
94 vorbis_info_init(&context->vi) ; | 97 vorbis_info_init(&context->vi) ; |
95 if(oggvorbis_init_encoder(&context->vi, avccontext) < 0) { | 98 if(oggvorbis_init_encoder(&context->vi, avccontext) < 0) { |
96 av_log(avccontext, AV_LOG_ERROR, "oggvorbis_encode_init: init_encoder failed\n") ; | 99 av_log(avccontext, AV_LOG_ERROR, "oggvorbis_encode_init: init_encoder failed\n") ; |
97 return -1 ; | 100 return -1 ; |
103 vorbis_comment_add_tag(&context->vc, "encoder", LIBAVCODEC_IDENT) ; | 106 vorbis_comment_add_tag(&context->vc, "encoder", LIBAVCODEC_IDENT) ; |
104 | 107 |
105 vorbis_analysis_headerout(&context->vd, &context->vc, &header, | 108 vorbis_analysis_headerout(&context->vd, &context->vc, &header, |
106 &header_comm, &header_code); | 109 &header_comm, &header_code); |
107 | 110 |
108 len = header.bytes + header_comm.bytes + header_code.bytes; | 111 avccontext->extradata_size= |
109 avccontext->extradata_size= 64 + len + len/255; | 112 1 + xiph_len(header.bytes) + xiph_len(header_comm.bytes) + |
110 p = avccontext->extradata= av_mallocz(avccontext->extradata_size); | 113 header_code.bytes; |
114 p = avccontext->extradata = | |
115 av_malloc(avccontext->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); | |
111 p[0] = 2; | 116 p[0] = 2; |
112 offset = 1; | 117 offset = 1; |
113 offset += av_xiphlacing(&p[offset], header.bytes); | 118 offset += av_xiphlacing(&p[offset], header.bytes); |
114 offset += av_xiphlacing(&p[offset], header_comm.bytes); | 119 offset += av_xiphlacing(&p[offset], header_comm.bytes); |
115 memcpy(&p[offset], header.packet, header.bytes); | 120 memcpy(&p[offset], header.packet, header.bytes); |
116 offset += header.bytes; | 121 offset += header.bytes; |
117 memcpy(&p[offset], header_comm.packet, header_comm.bytes); | 122 memcpy(&p[offset], header_comm.packet, header_comm.bytes); |
118 offset += header_comm.bytes; | 123 offset += header_comm.bytes; |
119 memcpy(&p[offset], header_code.packet, header_code.bytes); | 124 memcpy(&p[offset], header_code.packet, header_code.bytes); |
120 offset += header_code.bytes; | 125 offset += header_code.bytes; |
121 avccontext->extradata_size = offset; | 126 assert(offset == avccontext->extradata_size); |
122 avccontext->extradata= av_realloc(avccontext->extradata, avccontext->extradata_size); | |
123 | 127 |
124 /* vorbis_block_clear(&context->vb); | 128 /* vorbis_block_clear(&context->vb); |
125 vorbis_dsp_clear(&context->vd); | 129 vorbis_dsp_clear(&context->vd); |
126 vorbis_info_clear(&context->vi);*/ | 130 vorbis_info_clear(&context->vi);*/ |
127 vorbis_comment_clear(&context->vc); | 131 vorbis_comment_clear(&context->vc); |