summaryrefslogtreecommitdiff
path: root/libavcodec/h263.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-01-07 06:25:41 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-01-07 06:25:41 +0000
commitd7525cba23654452346c1c16456e53b3bd206ba0 (patch)
tree7632fe82f8de00e4e04d41d81c91c617d65a61d1 /libavcodec/h263.c
parent515a5438096aec9a097de6821ff625ca605e89ee (diff)
Split out intel H263 decoder.
Originally committed as revision 21054 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/h263.c')
-rw-r--r--libavcodec/h263.c99
1 files changed, 2 insertions, 97 deletions
diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index 0576eec8e6..0065dbebdc 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -133,7 +133,7 @@ int h263_get_picture_format(int width, int height)
return 7;
}
-static void show_pict_info(MpegEncContext *s){
+void ff_h263_show_pict_info(MpegEncContext *s){
av_log(s->avctx, AV_LOG_DEBUG, "qp:%d %c size:%d rnd:%d%s%s%s%s%s%s%s%s%s %d/%d\n",
s->qscale, av_get_pict_type_char(s->pict_type),
s->gb.size_in_bits, 1-s->no_rounding,
@@ -5359,7 +5359,7 @@ int h263_decode_picture_header(MpegEncContext *s)
}
if(s->avctx->debug&FF_DEBUG_PICT_INFO){
- show_pict_info(s);
+ ff_h263_show_pict_info(s);
}
if (s->pict_type == FF_I_TYPE && s->codec_tag == AV_RL32("ZYGO")){
int i,j;
@@ -6064,98 +6064,3 @@ end:
s->avctx->has_b_frames= !s->low_delay;
return decode_vop_header(s, gb);
}
-
-/* don't understand why they choose a different header ! */
-int intel_h263_decode_picture_header(MpegEncContext *s)
-{
- int format;
-
- /* picture header */
- if (get_bits_long(&s->gb, 22) != 0x20) {
- av_log(s->avctx, AV_LOG_ERROR, "Bad picture start code\n");
- return -1;
- }
- s->picture_number = get_bits(&s->gb, 8); /* picture timestamp */
-
- if (get_bits1(&s->gb) != 1) {
- av_log(s->avctx, AV_LOG_ERROR, "Bad marker\n");
- return -1; /* marker */
- }
- if (get_bits1(&s->gb) != 0) {
- av_log(s->avctx, AV_LOG_ERROR, "Bad H263 id\n");
- return -1; /* h263 id */
- }
- skip_bits1(&s->gb); /* split screen off */
- skip_bits1(&s->gb); /* camera off */
- skip_bits1(&s->gb); /* freeze picture release off */
-
- format = get_bits(&s->gb, 3);
- if (format != 7) {
- av_log(s->avctx, AV_LOG_ERROR, "Intel H263 free format not supported\n");
- return -1;
- }
- s->h263_plus = 0;
-
- s->pict_type = FF_I_TYPE + get_bits1(&s->gb);
-
- s->unrestricted_mv = get_bits1(&s->gb);
- s->h263_long_vectors = s->unrestricted_mv;
-
- if (get_bits1(&s->gb) != 0) {
- av_log(s->avctx, AV_LOG_ERROR, "SAC not supported\n");
- return -1; /* SAC: off */
- }
- s->obmc= get_bits1(&s->gb);
- s->pb_frame = get_bits1(&s->gb);
-
- if(format == 7){
- format = get_bits(&s->gb, 3);
- if(format == 0 || format == 7){
- av_log(s->avctx, AV_LOG_ERROR, "Wrong Intel H263 format\n");
- return -1;
- }
- if(get_bits(&s->gb, 2))
- av_log(s->avctx, AV_LOG_ERROR, "Bad value for reserved field\n");
- s->loop_filter = get_bits1(&s->gb);
- if(get_bits1(&s->gb))
- av_log(s->avctx, AV_LOG_ERROR, "Bad value for reserved field\n");
- if(get_bits1(&s->gb))
- s->pb_frame = 2;
- if(get_bits(&s->gb, 5))
- av_log(s->avctx, AV_LOG_ERROR, "Bad value for reserved field\n");
- if(get_bits(&s->gb, 5) != 1)
- av_log(s->avctx, AV_LOG_ERROR, "Invalid marker\n");
- }
- if(format == 6){
- int ar = get_bits(&s->gb, 4);
- skip_bits(&s->gb, 9); // display width
- skip_bits1(&s->gb);
- skip_bits(&s->gb, 9); // display height
- if(ar == 15){
- skip_bits(&s->gb, 8); // aspect ratio - width
- skip_bits(&s->gb, 8); // aspect ratio - height
- }
- }
-
- s->chroma_qscale= s->qscale = get_bits(&s->gb, 5);
- skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */
-
- if(s->pb_frame){
- skip_bits(&s->gb, 3); //temporal reference for B-frame
- skip_bits(&s->gb, 2); //dbquant
- }
-
- /* PEI */
- while (get_bits1(&s->gb) != 0) {
- skip_bits(&s->gb, 8);
- }
- s->f_code = 1;
-
- s->y_dc_scale_table=
- s->c_dc_scale_table= ff_mpeg1_dc_scale_table;
-
- if(s->avctx->debug&FF_DEBUG_PICT_INFO)
- show_pict_info(s);
-
- return 0;
-}