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);