[FFmpeg-cvslog] r19583 - trunk/libavcodec/svq3.c
rbultje
subversion
Tue Aug 4 23:55:47 CEST 2009
Author: rbultje
Date: Tue Aug 4 23:55:47 2009
New Revision: 19583
Log:
Parse frame size code, see "svq3.c: parse frame size" thread on ML.
Modified:
trunk/libavcodec/svq3.c
Modified: trunk/libavcodec/svq3.c
==============================================================================
--- trunk/libavcodec/svq3.c Tue Aug 4 23:43:53 2009 (r19582)
+++ trunk/libavcodec/svq3.c Tue Aug 4 23:55:47 2009 (r19583)
@@ -819,14 +819,25 @@ static av_cold int svq3_decode_init(AVCo
if (extradata && !memcmp(extradata, "SEQH", 4)) {
GetBitContext gb;
+ int frame_size_code;
size = AV_RB32(&extradata[4]);
init_get_bits(&gb, extradata + 8, size*8);
/* 'frame size code' and optional 'width, height' */
- if (get_bits(&gb, 3) == 7) {
- skip_bits(&gb, 12);
- skip_bits(&gb, 12);
+ frame_size_code = get_bits(&gb, 3);
+ switch (frame_size_code) {
+ case 0: avctx->width = 160; avctx->height = 120; break;
+ case 1: avctx->width = 128; avctx->height = 96; break;
+ case 2: avctx->width = 176; avctx->height = 144; break;
+ case 3: avctx->width = 352; avctx->height = 288; break;
+ case 4: avctx->width = 704; avctx->height = 576; break;
+ case 5: avctx->width = 240; avctx->height = 180; break;
+ case 6: avctx->width = 320; avctx->height = 240; break;
+ case 7:
+ avctx->width = get_bits(&gb, 12);
+ avctx->height = get_bits(&gb, 12);
+ break;
}
h->halfpel_flag = get_bits1(&gb);
More information about the ffmpeg-cvslog
mailing list