diff options
author | David Conrad <lessen42@gmail.com> | 2009-12-12 23:18:46 +0300 |
---|---|---|
committer | David Conrad <lessen42@gmail.com> | 2009-12-12 23:18:46 +0300 |
commit | c39b94be600e8433a1de54b09d86704066efeb27 (patch) | |
tree | dcfa43f0b8040a23a6d3d6f26942886cbb91b657 | |
parent | 5e15c7d95be456e9dafbcca7cb0d936cc331dbae (diff) |
libtheoraenc.c: mark keyframes
Originally committed as revision 20816 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/libtheoraenc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c index fd4a9ec415..6a9dee167f 100644 --- a/libavcodec/libtheoraenc.c +++ b/libavcodec/libtheoraenc.c @@ -46,6 +46,7 @@ typedef struct TheoraContext { int stats_offset; int uv_hshift; int uv_vshift; + int keyframe_mask; } TheoraContext; /*! @@ -218,6 +219,7 @@ static av_cold int encode_init(AVCodecContext* avc_context) 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 @@ static int encode_frame(AVCodecContext* avc_context, uint8_t *outbuf, // 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; } |