comparison utils.c @ 1588:de5e2acd0f80 libavcodec

initalize various uninitalized variables and avoid coded_picture_number as its not always correct (later should be reversed after fixing the picture_number mess)
author michael
date Thu, 30 Oct 2003 21:05:00 +0000
parents 6b224ca24033
children 932d306bf1dc
comparison
equal deleted inserted replaced
1587:b69b086f5570 1588:de5e2acd0f80
121 121
122 typedef struct InternalBuffer{ 122 typedef struct InternalBuffer{
123 int last_pic_num; 123 int last_pic_num;
124 uint8_t *base[4]; 124 uint8_t *base[4];
125 uint8_t *data[4]; 125 uint8_t *data[4];
126 int linesize[4];
126 }InternalBuffer; 127 }InternalBuffer;
127 128
128 #define INTERNAL_BUFFER_SIZE 32 129 #define INTERNAL_BUFFER_SIZE 32
129 130
130 #define ALIGN(x, a) (((x)+(a)-1)&~((a)-1)) 131 #define ALIGN(x, a) (((x)+(a)-1)&~((a)-1))
168 int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic){ 169 int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic){
169 int i; 170 int i;
170 int w= s->width; 171 int w= s->width;
171 int h= s->height; 172 int h= s->height;
172 InternalBuffer *buf; 173 InternalBuffer *buf;
174 int *picture_number;
173 175
174 assert(pic->data[0]==NULL); 176 assert(pic->data[0]==NULL);
175 assert(INTERNAL_BUFFER_SIZE > s->internal_buffer_count); 177 assert(INTERNAL_BUFFER_SIZE > s->internal_buffer_count);
176 178
177 if(s->internal_buffer==NULL){ 179 if(s->internal_buffer==NULL){
184 sizeof(InternalBuffer)*FFMAX(99, s->internal_buffer_count+1)/*FIXME*/ 186 sizeof(InternalBuffer)*FFMAX(99, s->internal_buffer_count+1)/*FIXME*/
185 ); 187 );
186 #endif 188 #endif
187 189
188 buf= &((InternalBuffer*)s->internal_buffer)[s->internal_buffer_count]; 190 buf= &((InternalBuffer*)s->internal_buffer)[s->internal_buffer_count];
189 191 picture_number= &(((InternalBuffer*)s->internal_buffer)[INTERNAL_BUFFER_SIZE-1]).last_pic_num; //FIXME ugly hack
192 (*picture_number)++;
193
190 if(buf->base[0]){ 194 if(buf->base[0]){
191 pic->age= pic->coded_picture_number - buf->last_pic_num; 195 pic->age= *picture_number - buf->last_pic_num;
192 buf->last_pic_num= pic->coded_picture_number; 196 buf->last_pic_num= *picture_number;
193 }else{ 197 }else{
194 int h_chroma_shift, v_chroma_shift; 198 int h_chroma_shift, v_chroma_shift;
195 int s_align, pixel_size; 199 int s_align, pixel_size;
196 200
197 avcodec_get_chroma_sub_sample(s->pix_fmt, &h_chroma_shift, &v_chroma_shift); 201 avcodec_get_chroma_sub_sample(s->pix_fmt, &h_chroma_shift, &v_chroma_shift);
229 233
230 for(i=0; i<3; i++){ 234 for(i=0; i<3; i++){
231 const int h_shift= i==0 ? 0 : h_chroma_shift; 235 const int h_shift= i==0 ? 0 : h_chroma_shift;
232 const int v_shift= i==0 ? 0 : v_chroma_shift; 236 const int v_shift= i==0 ? 0 : v_chroma_shift;
233 237
234 pic->linesize[i]= ALIGN(pixel_size*w>>h_shift, s_align); 238 buf->linesize[i]= ALIGN(pixel_size*w>>h_shift, s_align);
235 239
236 buf->base[i]= av_mallocz((pic->linesize[i]*h>>v_shift)+16); //FIXME 16 240 buf->base[i]= av_mallocz((buf->linesize[i]*h>>v_shift)+16); //FIXME 16
237 if(buf->base[i]==NULL) return -1; 241 if(buf->base[i]==NULL) return -1;
238 memset(buf->base[i], 128, pic->linesize[i]*h>>v_shift); 242 memset(buf->base[i], 128, buf->linesize[i]*h>>v_shift);
239 243
240 if(s->flags&CODEC_FLAG_EMU_EDGE) 244 if(s->flags&CODEC_FLAG_EMU_EDGE)
241 buf->data[i] = buf->base[i]; 245 buf->data[i] = buf->base[i];
242 else 246 else
243 buf->data[i] = buf->base[i] + ALIGN((pic->linesize[i]*EDGE_WIDTH>>v_shift) + (EDGE_WIDTH>>h_shift), s_align); 247 buf->data[i] = buf->base[i] + ALIGN((buf->linesize[i]*EDGE_WIDTH>>v_shift) + (EDGE_WIDTH>>h_shift), s_align);
244 } 248 }
245 pic->age= 256*256*256*64; 249 pic->age= 256*256*256*64;
246 pic->type= FF_BUFFER_TYPE_INTERNAL; 250 }
247 } 251 pic->type= FF_BUFFER_TYPE_INTERNAL;
248 252
249 for(i=0; i<4; i++){ 253 for(i=0; i<4; i++){
250 pic->base[i]= buf->base[i]; 254 pic->base[i]= buf->base[i];
251 pic->data[i]= buf->data[i]; 255 pic->data[i]= buf->data[i];
256 pic->linesize[i]= buf->linesize[i];
252 } 257 }
253 s->internal_buffer_count++; 258 s->internal_buffer_count++;
254 259
255 return 0; 260 return 0;
256 } 261 }