changeset 10679:c1328f04458a libavcodec

libtheoraenc.c: mark keyframes
author conrad
date Sat, 12 Dec 2009 20:18:46 +0000
parents fe3cdc16514b
children d569841bd1b7
files libtheoraenc.c
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libtheoraenc.c	Sat Dec 12 19:44:01 2009 +0000
+++ b/libtheoraenc.c	Sat Dec 12 20:18:46 2009 +0000
@@ -46,6 +46,7 @@
     int         stats_offset;
     int         uv_hshift;
     int         uv_vshift;
+    int         keyframe_mask;
 } TheoraContext;
 
 /*!
@@ -218,6 +219,7 @@
         return -1;
     }
 
+    h->keyframe_mask = (1 << t_info.keyframe_granule_shift) - 1;
     /* Clear up theora_info struct */
     th_info_clear(&t_info);
 
@@ -336,6 +338,7 @@
 
     // HACK: does not take codec delay into account (neither does the decoder though)
     avc_context->coded_frame->pts = frame->pts;
+    avc_context->coded_frame->key_frame = !(o_packet.granulepos & h->keyframe_mask);
 
     return o_packet.bytes;
 }