comparison huffyuv.c @ 1325:1cbc2380d172 libavcodec

CONFIG_ENCODERS cleanup
author michaelni
date Sun, 22 Jun 2003 11:08:22 +0000
parents 0cfdbbf84a6c
children 0fd38b711f06
comparison
equal deleted inserted replaced
1324:7d328fd9d8a5 1325:1cbc2380d172
151 151
152 *left= l; 152 *left= l;
153 *left_top= lt; 153 *left_top= lt;
154 } 154 }
155 155
156 #ifdef CONFIG_ENCODERS
157 //FIXME optimize 156 //FIXME optimize
158 static inline void sub_median_prediction(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w, int *left, int *left_top){ 157 static inline void sub_median_prediction(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w, int *left, int *left_top){
159 int i; 158 int i;
160 uint8_t l, lt; 159 uint8_t l, lt;
161 160
171 170
172 *left= l; 171 *left= l;
173 *left_top= lt; 172 *left_top= lt;
174 } 173 }
175 174
176 #endif //CONFIG_ENCODERS
177
178 static inline void add_left_prediction_bgr32(uint8_t *dst, uint8_t *src, int w, int *red, int *green, int *blue){ 175 static inline void add_left_prediction_bgr32(uint8_t *dst, uint8_t *src, int w, int *red, int *green, int *blue){
179 int i; 176 int i;
180 int r,g,b; 177 int r,g,b;
181 r= *red; 178 r= *red;
182 g= *green; 179 g= *green;
195 *red= r; 192 *red= r;
196 *green= g; 193 *green= g;
197 *blue= b; 194 *blue= b;
198 } 195 }
199 196
200 #ifdef CONFIG_ENCODERS
201 static inline int sub_left_prediction(HYuvContext *s, uint8_t *dst, uint8_t *src, int w, int left){ 197 static inline int sub_left_prediction(HYuvContext *s, uint8_t *dst, uint8_t *src, int w, int left){
202 int i; 198 int i;
203 if(w<32){ 199 if(w<32){
204 for(i=0; i<w; i++){ 200 for(i=0; i<w; i++){
205 const int temp= src[i]; 201 const int temp= src[i];
215 } 211 }
216 s->dsp.diff_bytes(dst+16, src+16, src+15, w-16); 212 s->dsp.diff_bytes(dst+16, src+16, src+15, w-16);
217 return src[w-1]; 213 return src[w-1];
218 } 214 }
219 } 215 }
220 #endif //CONFIG_ENCODERS 216
221 static void read_len_table(uint8_t *dst, GetBitContext *gb){ 217 static void read_len_table(uint8_t *dst, GetBitContext *gb){
222 int i, val, repeat; 218 int i, val, repeat;
223 219
224 for(i=0; i<256;){ 220 for(i=0; i<256;){
225 repeat= get_bits(gb, 3); 221 repeat= get_bits(gb, 3);
247 } 243 }
248 bits >>= 1; 244 bits >>= 1;
249 } 245 }
250 return 0; 246 return 0;
251 } 247 }
252
253 #ifdef CONFIG_ENCODERS
254 248
255 static void generate_len_table(uint8_t *dst, uint64_t *stats, int size){ 249 static void generate_len_table(uint8_t *dst, uint64_t *stats, int size){
256 uint64_t counts[2*size]; 250 uint64_t counts[2*size];
257 int up[2*size]; 251 int up[2*size];
258 int offset, i, next; 252 int offset, i, next;
305 dst[i]= len; 299 dst[i]= len;
306 } 300 }
307 if(i==size) break; 301 if(i==size) break;
308 } 302 }
309 } 303 }
310
311 #endif //CONFIG_ENCODERS
312 304
313 static int read_huffman_tables(HYuvContext *s, uint8_t *src, int length){ 305 static int read_huffman_tables(HYuvContext *s, uint8_t *src, int length){
314 GetBitContext gb; 306 GetBitContext gb;
315 int i; 307 int i;
316 308
458 // printf("pred:%d bpp:%d hbpp:%d il:%d\n", s->predictor, s->bitstream_bpp, avctx->bits_per_sample, s->interlaced); 450 // printf("pred:%d bpp:%d hbpp:%d il:%d\n", s->predictor, s->bitstream_bpp, avctx->bits_per_sample, s->interlaced);
459 451
460 return 0; 452 return 0;
461 } 453 }
462 454
463 #ifdef CONFIG_ENCODERS
464
465 static void store_table(HYuvContext *s, uint8_t *len){ 455 static void store_table(HYuvContext *s, uint8_t *len){
466 int i; 456 int i;
467 int index= s->avctx->extradata_size; 457 int index= s->avctx->extradata_size;
468 458
469 for(i=0; i<256;){ 459 for(i=0; i<256;){
581 s->picture_number=0; 571 s->picture_number=0;
582 572
583 return 0; 573 return 0;
584 } 574 }
585 575
586 #endif //CONFIG_ENCODERS
587
588 static void decode_422_bitstream(HYuvContext *s, int count){ 576 static void decode_422_bitstream(HYuvContext *s, int count){
589 int i; 577 int i;
590 578
591 count/=2; 579 count/=2;
592 580
606 for(i=0; i<count; i++){ 594 for(i=0; i<count; i++){
607 s->temp[0][2*i ]= get_vlc2(&s->gb, s->vlc[0].table, VLC_BITS, 3); 595 s->temp[0][2*i ]= get_vlc2(&s->gb, s->vlc[0].table, VLC_BITS, 3);
608 s->temp[0][2*i+1]= get_vlc2(&s->gb, s->vlc[0].table, VLC_BITS, 3); 596 s->temp[0][2*i+1]= get_vlc2(&s->gb, s->vlc[0].table, VLC_BITS, 3);
609 } 597 }
610 } 598 }
611
612 #ifdef CONFIG_ENCODERS
613 599
614 static void encode_422_bitstream(HYuvContext *s, int count){ 600 static void encode_422_bitstream(HYuvContext *s, int count){
615 int i; 601 int i;
616 602
617 count/=2; 603 count/=2;
646 put_bits(&s->pb, s->len[0][ s->temp[0][2*i ] ], s->bits[0][ s->temp[0][2*i ] ]); 632 put_bits(&s->pb, s->len[0][ s->temp[0][2*i ] ], s->bits[0][ s->temp[0][2*i ] ]);
647 put_bits(&s->pb, s->len[0][ s->temp[0][2*i+1] ], s->bits[0][ s->temp[0][2*i+1] ]); 633 put_bits(&s->pb, s->len[0][ s->temp[0][2*i+1] ], s->bits[0][ s->temp[0][2*i+1] ]);
648 } 634 }
649 } 635 }
650 } 636 }
651
652 #endif //CONFIG_ENCODERS
653 637
654 static void decode_bgr_bitstream(HYuvContext *s, int count){ 638 static void decode_bgr_bitstream(HYuvContext *s, int count){
655 int i; 639 int i;
656 640
657 if(s->decorrelate){ 641 if(s->decorrelate){
959 avcodec_default_free_buffers(avctx); 943 avcodec_default_free_buffers(avctx);
960 944
961 return 0; 945 return 0;
962 } 946 }
963 947
964 #ifdef CONFIG_ENCODERS
965
966 static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size, void *data){ 948 static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size, void *data){
967 HYuvContext *s = avctx->priv_data; 949 HYuvContext *s = avctx->priv_data;
968 AVFrame *pict = data; 950 AVFrame *pict = data;
969 const int width= s->width; 951 const int width= s->width;
970 const int width2= s->width>>1; 952 const int width2= s->width>>1;
1128 { 1110 {
1129 AVOPTION_CODEC_INT("prediction_method", "prediction_method", prediction_method, 0, 2, 0), 1111 AVOPTION_CODEC_INT("prediction_method", "prediction_method", prediction_method, 0, 2, 0),
1130 AVOPTION_END() 1112 AVOPTION_END()
1131 }; 1113 };
1132 1114
1133 #endif //CONFIG_ENCODERS
1134
1135 AVCodec huffyuv_decoder = { 1115 AVCodec huffyuv_decoder = {
1136 "huffyuv", 1116 "huffyuv",
1137 CODEC_TYPE_VIDEO, 1117 CODEC_TYPE_VIDEO,
1138 CODEC_ID_HUFFYUV, 1118 CODEC_ID_HUFFYUV,
1139 sizeof(HYuvContext), 1119 sizeof(HYuvContext),