summaryrefslogtreecommitdiff
path: root/libavcodec/h263.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-01-07 05:36:45 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-01-07 05:36:45 +0000
commita0b0d75368c603671379de73993404955ca96079 (patch)
tree4a802b5bdaefbc7382a47e8011184d3942492bb3 /libavcodec/h263.c
parenteb52376915cb518220264962fdbcf22418e790bb (diff)
Split flv decoding out.
Originally committed as revision 21051 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/h263.c')
-rw-r--r--libavcodec/h263.c96
1 files changed, 2 insertions, 94 deletions
diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index 67d01dc246..0576eec8e6 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -4428,15 +4428,8 @@ retry:
}
if (code == rl->n) {
/* escape */
- if (s->h263_flv > 1) {
- int is11 = get_bits1(&s->gb);
- last = get_bits1(&s->gb);
- run = get_bits(&s->gb, 6);
- if(is11){
- level = get_sbits(&s->gb, 11);
- } else {
- level = get_sbits(&s->gb, 7);
- }
+ if (CONFIG_FLV_DECODER && s->h263_flv > 1) {
+ ff_flv2_decode_ac_esc(&s->gb, &level, &run, &last);
} else {
last = get_bits1(&s->gb);
run = get_bits(&s->gb, 6);
@@ -6166,88 +6159,3 @@ int intel_h263_decode_picture_header(MpegEncContext *s)
return 0;
}
-
-int flv_h263_decode_picture_header(MpegEncContext *s)
-{
- int format, width, height;
-
- /* picture header */
- if (get_bits_long(&s->gb, 17) != 1) {
- av_log(s->avctx, AV_LOG_ERROR, "Bad picture start code\n");
- return -1;
- }
- format = get_bits(&s->gb, 5);
- if (format != 0 && format != 1) {
- av_log(s->avctx, AV_LOG_ERROR, "Bad picture format\n");
- return -1;
- }
- s->h263_flv = format+1;
- s->picture_number = get_bits(&s->gb, 8); /* picture timestamp */
- format = get_bits(&s->gb, 3);
- switch (format) {
- case 0:
- width = get_bits(&s->gb, 8);
- height = get_bits(&s->gb, 8);
- break;
- case 1:
- width = get_bits(&s->gb, 16);
- height = get_bits(&s->gb, 16);
- break;
- case 2:
- width = 352;
- height = 288;
- break;
- case 3:
- width = 176;
- height = 144;
- break;
- case 4:
- width = 128;
- height = 96;
- break;
- case 5:
- width = 320;
- height = 240;
- break;
- case 6:
- width = 160;
- height = 120;
- break;
- default:
- width = height = 0;
- break;
- }
- if(avcodec_check_dimensions(s->avctx, width, height))
- return -1;
- s->width = width;
- s->height = height;
-
- s->pict_type = FF_I_TYPE + get_bits(&s->gb, 2);
- s->dropable= s->pict_type > FF_P_TYPE;
- if (s->dropable)
- s->pict_type = FF_P_TYPE;
-
- skip_bits1(&s->gb); /* deblocking flag */
- s->chroma_qscale= s->qscale = get_bits(&s->gb, 5);
-
- s->h263_plus = 0;
-
- s->unrestricted_mv = 1;
- s->h263_long_vectors = 0;
-
- /* PEI */
- while (get_bits1(&s->gb) != 0) {
- skip_bits(&s->gb, 8);
- }
- s->f_code = 1;
-
- if(s->avctx->debug & FF_DEBUG_PICT_INFO){
- av_log(s->avctx, AV_LOG_DEBUG, "%c esc_type:%d, qp:%d num:%d\n",
- s->dropable ? 'D' : av_get_pict_type_char(s->pict_type), s->h263_flv-1, s->qscale, s->picture_number);
- }
-
- s->y_dc_scale_table=
- s->c_dc_scale_table= ff_mpeg1_dc_scale_table;
-
- return 0;
-}