]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Add HW acceleration hooks for MPEG-4 / H.263 decoding.
authorbenoit <benoit@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Fri, 27 Feb 2009 08:27:50 +0000 (08:27 +0000)
committerbenoit <benoit@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Fri, 27 Feb 2009 08:27:50 +0000 (08:27 +0000)
Patch by Gwenole Beauchesne.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@17637 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/h263dec.c

index bb42d495fa4a3d4c29c98c239347b99401bfb2f6..9a7b84a78b2380255c8eb1e9598fe23f9c6cf1ac 100644 (file)
@@ -161,8 +161,12 @@ static int decode_slice(MpegEncContext *s){
 
     ff_set_qscale(s, s->qscale);
 
-    if (s->avctx->hwaccel)
-        return 0;
+    if (s->avctx->hwaccel) {
+        const uint8_t *start= s->gb.buffer + get_bits_count(&s->gb)/8;
+        const uint8_t *end  = ff_h263_find_resync_marker(start + 1, s->gb.buffer_end);
+        skip_bits_long(&s->gb, 8*(end - start));
+        return s->avctx->hwaccel->decode_slice(s->avctx, start, end - start);
+    }
 
     if(s->partitioned_frame){
         const int qscale= s->qscale;
@@ -617,6 +621,11 @@ retry:
     if(MPV_frame_start(s, avctx) < 0)
         return -1;
 
+    if (avctx->hwaccel) {
+        if (avctx->hwaccel->start_frame(avctx, buf, buf_size) < 0)
+            return -1;
+    }
+
 #ifdef DEBUG
     av_log(avctx, AV_LOG_DEBUG, "qscale=%d\n", s->qscale);
 #endif