Mercurial > libavcodec.hg
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), |